diff --git a/OurUmbraco.Site/OurUmbraco.Site.csproj b/OurUmbraco.Site/OurUmbraco.Site.csproj index e8a0e7dc..433fae64 100644 --- a/OurUmbraco.Site/OurUmbraco.Site.csproj +++ b/OurUmbraco.Site/OurUmbraco.Site.csproj @@ -4141,7 +4141,6 @@ - diff --git a/OurUmbraco.Site/Views/MacroPartials/Members/Activate.cshtml b/OurUmbraco.Site/Views/MacroPartials/Members/Activate.cshtml index 48a81525..e1aa1abe 100644 --- a/OurUmbraco.Site/Views/MacroPartials/Members/Activate.cshtml +++ b/OurUmbraco.Site/Views/MacroPartials/Members/Activate.cshtml @@ -4,7 +4,7 @@ if (string.IsNullOrWhiteSpace(memberGuid) == false) { - var memberService = UmbracoContext.Current.Application.Services.MemberService; + var memberService = ApplicationContext.Current.Services.MemberService; var member = memberService.GetByKey(new Guid(memberGuid)); if (member == null) diff --git a/OurUmbraco.Site/Views/ReleaseDownload.cshtml b/OurUmbraco.Site/Views/ReleaseDownload.cshtml index d7854b23..5611e7ca 100644 --- a/OurUmbraco.Site/Views/ReleaseDownload.cshtml +++ b/OurUmbraco.Site/Views/ReleaseDownload.cshtml @@ -24,10 +24,12 @@ currentMember = member.Id; } - Application.SqlHelper.ExecuteNonQuery( - @"insert into projectDownload(projectId,memberId,timestamp) values(@id, @memberId, getdate())", - Application.SqlHelper.CreateParameter("@id", docId), - Application.SqlHelper.CreateParameter("@memberId", currentMember)); + using (var sqlHelper = Application.SqlHelper) + { + sqlHelper.ExecuteNonQuery(@"insert into projectDownload(projectId,memberId,timestamp) values(@id, @memberId, getdate())", + sqlHelper.CreateParameter("@id", docId), + sqlHelper.CreateParameter("@memberId", currentMember)); + } Response.Redirect(link, false); } diff --git a/OurUmbraco.Site/macroScripts/ProjectsVersioned.cshtml b/OurUmbraco.Site/macroScripts/ProjectsVersioned.cshtml deleted file mode 100644 index 2886494c..00000000 --- a/OurUmbraco.Site/macroScripts/ProjectsVersioned.cshtml +++ /dev/null @@ -1,304 +0,0 @@ -@inherits umbraco.MacroEngines.DynamicNodeContext -@using System.Globalization -@using System.Text.RegularExpressions -@using OurUmbraco.MarketPlace.Models -@using OurUmbraco.Our -@using uForum.Businesslogic -@{ - var queriedVersion = Request.QueryString["v"]; - int requestedVersion; - int.TryParse(queriedVersion, out requestedVersion); - Version properVersion = null; - - if (requestedVersion != 0) - { - properVersion = GetProperVersion(requestedVersion.ToString(CultureInfo.InvariantCulture)); - } - - var projectGroups = Model.Children.Where("nodeTypeAlias == \"ProjectGroup\""); - var projects = new List(); - - foreach (var projectGroup in projectGroups) - { - foreach (var project in projectGroup.Children) - { - if (project.projectLive) - { - var versionsList = new List(); - var compatibleVersions = project.CompatibleVersions.Split(','); - foreach (var compatibleVersion in compatibleVersions) - { - if (string.IsNullOrWhiteSpace(compatibleVersion) == false && compatibleVersion != "saved") - { - int version; - if (int.TryParse(compatibleVersion.Substring(1), out version)) - { - versionsList.Add(version); - } - } - } - - var umbracoProject = new UmbracoProject - { - Id = project.Id, - Name = project.Name, - CreateDate = project.CreateDate, - CompatibleVersions = versionsList - }; - - projects.Add(umbracoProject); - } - } - } - - if (requestedVersion == 0) - { -
- @{ - var vs = new List(); - foreach (var project in projects.OrderByDescending(x => x.CreateDate)) - { - foreach (var version in project.CompatibleVersions.Where(version => vs.Contains(version) == false)) - { - vs.Add(version); - } - } - - foreach (var v in vs.OrderBy(x => x).Where(x => x.ToString(CultureInfo.InvariantCulture).StartsWith("3") == false && x.ToString(CultureInfo.InvariantCulture).StartsWith("5") == false).Skip(6)) - { - Umbraco @(GetProperVersion(v.ToString(CultureInfo.InvariantCulture)).ToString(2)).x
- } - } -
- } - else - { -

Umbraco @(properVersion.ToString(2)).x compatible projects

-

Note: packages higher up in this list are more likely to actually work as they have been reported
to be working with Umbraco version @(properVersion.ToString(2)).x.

-
-
-
- - @{ - var vs = new List(); - foreach (var project in projects.OrderByDescending(x => x.CreateDate)) - { - foreach (var version in project.CompatibleVersions.Where(version => vs.Contains(version) == false)) - { - vs.Add(version); - } - } - } -
    - @foreach (var v in vs.OrderBy(x => x).Where(x => x.ToString(CultureInfo.InvariantCulture).StartsWith("3") == false && x.ToString(CultureInfo.InvariantCulture).StartsWith("5") == false).Skip(6)) - { - var itemProperVersion = GetProperVersion(v.ToString(CultureInfo.InvariantCulture)).ToString(2); - var currentProperVersion = properVersion.ToString(2); - -
  • @(itemProperVersion).x
  • - } -
- - @{ - var projectIds = projects.Where(x => x.CompatibleVersions.Contains(requestedVersion)).Select(x => x.Id).ToArray(); - var selection = string.Join(",", projectIds); - if (string.IsNullOrWhiteSpace(selection) == false) - { - var reader = Data.SqlHelper.ExecuteReader("SELECT id, nodeId, downloads FROM wikiFiles WHERE type = 'package' AND nodeId IN (" + selection + ")"); - - while (reader.Read()) - { - var project = projects.FirstOrDefault(x => x.Id == reader.GetInt("nodeId")); - - if (project != null) - { - project.TotalDownloads = project.TotalDownloads + reader.GetInt("downloads"); - project.FileId = reader.GetInt("id"); - } - } - - reader = Data.SqlHelper.ExecuteReader("SELECT id, SUM([points]) AS Karma FROM powersProject WHERE id IN (" + selection + ") GROUP BY Id"); - - while (reader.Read()) - { - var project = projects.FirstOrDefault(x => x.Id == reader.GetInt("id")); - - if (project != null) - { - project.Karma = reader.GetInt("Karma"); - } - } - - var i = 1; - foreach (var project in projects.OrderBy(x => x.TotalDownloads).Where(x => x.CompatibleVersions.Contains(requestedVersion))) - { - project.TotalDownloadsRank = i + 5; - i++; - } - - i = 1; - foreach (var project in projects.OrderBy(x => x.DownloadsCurrentVersion).Where(x => x.CompatibleVersions.Contains(requestedVersion))) - { - project.CurrentVersionDownloadsRank = i + 10; - i++; - } - - i = 1; - foreach (var project in projects.OrderBy(x => x.Karma).Where(x => x.CompatibleVersions.Contains(requestedVersion))) - { - project.KarmaRank = i + 5; - i++; - } - - foreach (var project in projects.Where(x => x.CompatibleVersions.Contains(requestedVersion))) - { - project.TotalRank = project.TotalDownloadsRank + project.CurrentVersionDownloadsRank + project.KarmaRank; - } - - var fileIds = projects.Where(x => x.CompatibleVersions.Contains(requestedVersion)).Select(x => x.FileId).ToArray(); - selection = string.Join(",", fileIds); - - reader = Data.SqlHelper.ExecuteReader("SELECT * FROM DeliVersionCompatibility WHERE fileID IN(" + selection + ") AND version LIKE '" + GetProperVersion(requestedVersion.ToString(CultureInfo.InvariantCulture)).ToString(2) + ".%'"); - - while (reader.Read()) - { - var project = projects.FirstOrDefault(x => x.Id == reader.GetInt("projectId")); - - if (project != null) - { - project.ReportsCount++; - - if (reader.GetBoolean("isCompatible")) - { - project.CompatibilityCount++; - } - } - } - - var totalProjects = projects.Count(x => x.CompatibleVersions.Contains(requestedVersion)); - foreach (var project in projects.Where(x => x.CompatibleVersions.Contains(requestedVersion))) - { - if (project.ReportsCount > 0 && project.CompatibilityCount == 0) - { - project.TotalRank = -30; - continue; - } - - if (project.ReportsCount > 0) - { - project.TotalRank = project.TotalRank + (project.CompatibilityCount + totalProjects); - - float compats = project.CompatibilityCount; - float numReps = project.ReportsCount; - var percentage = compats/numReps; - project.CompatibilityScore = percentage; - project.TotalRank = (int) (project.TotalRank*percentage); - } - } - - -

Showing @totalProjects projects

- } - } - -
    - - @foreach (var project in projects.OrderByDescending(x => x.TotalRank).Where(x => x.CompatibleVersions.Contains(requestedVersion))) - { - var node = Library.NodeById(project.Id); - var description = node.Description.ToString(); - var category = node.Parent.Name; - var screenshot = node.DefaultScreenshotPath.ToString(); - var icon = string.IsNullOrEmpty(screenshot) - ? "/css/img/package2.png" - : string.Format("image={0}?bgcolor=fff&width=50&height=50&format=png", screenshot); - -
  • -
    -
    - Package -

    @project.Name

    -
    @category
    -
    @node.ListingType
    -
    - - - -
    -
    - @project.Karma Karma -
    -
    - @project.TotalDownloads Downloads -
    -
    -
    -
  • - } -
- -
-
-
- } -} - -@functions { - public Version GetProperVersion(string version) - { - if (version == "4.1.0") - { - return new Version(version); - } - - version = version.Replace(".", ""); - - if (version.EndsWith("x")) - { - version = version.Substring(0, version.IndexOf("x", StringComparison.Ordinal)); - } - - if (version == "410" || version == "4100") - { - return new Version("4.10"); - } - - if (version == "411" || version == "4110") - { - return new Version("4.11"); - } - - if (version.EndsWith("x")) - { - version = version.Substring(0, version.IndexOf("x", StringComparison.Ordinal) - 1); - } - - var splitVersion = version.ToCharArray(); - version = string.Join(".", splitVersion); - - if (version.Length == 1) - { - version = version + ".0"; - } - - var tempRevision = new Version(version); - - return tempRevision.Revision == -1 ? new Version(tempRevision.Major, tempRevision.Minor, 0) : tempRevision; - } - - public static string ShortenText(string text) - { - text = Utils.StripHTML(text).Replace(" ", ""); - if (text.Length > 210) - { - - text = text.Substring(0, 210); - text = text.Substring(0, text.LastIndexOf(' ')); - } - - text = Regex.Replace(text, @"[^a-zA-Z0-9\s.?!&;]", ""); //strip all crap from the listing such as ======================================= !!!! - return text.Trim(); - } -} diff --git a/OurUmbraco.Site/web.template.config b/OurUmbraco.Site/web.template.config index 1f28bec7..b7533272 100644 --- a/OurUmbraco.Site/web.template.config +++ b/OurUmbraco.Site/web.template.config @@ -103,6 +103,7 @@ + diff --git a/OurUmbraco/Events/Library/Xslt.cs b/OurUmbraco/Events/Library/Xslt.cs index 8b31a21f..a8fe5e45 100644 --- a/OurUmbraco/Events/Library/Xslt.cs +++ b/OurUmbraco/Events/Library/Xslt.cs @@ -11,7 +11,7 @@ namespace OurUmbraco.Events.Library { public static bool isSignedUp(int eventId, int memberId) { - return umbraco.cms.businesslogic.relation.Relation.IsRelated(eventId, memberId); + return umbraco.cms.businesslogic.relation.Relation.IsRelated(eventId, memberId); } public static bool isFull(int eventId) @@ -25,7 +25,7 @@ namespace OurUmbraco.Events.Library Event e = new Event(eventId); e.SignUp(memberId, "no comment"); } - + public static void Cancel(int memberId, int eventId) { Event e = new Event(eventId); @@ -34,36 +34,35 @@ namespace OurUmbraco.Events.Library public static XPathNodeIterator UpcomingEvents() { - int contentType = DocumentType.GetByAlias("Event").Id; - string property = "start"; - - string sql = string.Format(@"SELECT distinct contentNodeId from cmsPropertyData + var contentType = DocumentType.GetByAlias("Event").Id; + var property = "start"; + + var sql = string.Format(@"SELECT distinct contentNodeId from cmsPropertyData inner join cmsPropertyType ON cmspropertytype.contenttypeid = {0} and cmspropertytype.Alias = '{1}' and cmspropertytype.id = cmspropertydata.propertytypeid where dataDate > GETDATE()", contentType, property); - ISqlHelper sqlhelper = umbraco.BusinessLogic.Application.SqlHelper; - IRecordsReader rr = sqlhelper.ExecuteReader(sql); - - XmlDocument doc = new XmlDocument(); - XmlNode root = umbraco.xmlHelper.addTextNode(doc, "events", ""); - - while (rr.Read()) + using (var sqlhelper = umbraco.BusinessLogic.Application.SqlHelper) + using (var reader = sqlhelper.ExecuteReader(sql)) { - XmlNode x = (XmlNode)umbraco.content.Instance.XmlContent.GetElementById( rr.GetInt("contentNodeId").ToString() ); + var xmlDocument = new XmlDocument(); + var root = umbraco.xmlHelper.addTextNode(xmlDocument, "events", ""); - if (x != null) + while (reader.Read()) { - x = doc.ImportNode(x, true); - root.AppendChild(x); - } + var contentNodeId = reader.GetInt("contentNodeId").ToString(); + var xmlNode = (XmlNode)umbraco.content.Instance.XmlContent.GetElementById(contentNodeId); + + if (xmlNode == null) continue; + + xmlNode = xmlDocument.ImportNode(xmlNode, true); + root.AppendChild(xmlNode); + } + + return root.CreateNavigator().Select("."); } - rr.Close(); - rr.Dispose(); - - return root.CreateNavigator().Select("."); } } } diff --git a/OurUmbraco/Events/Relations/EventRelation.cs b/OurUmbraco/Events/Relations/EventRelation.cs index 14ae1a79..7cae47e2 100644 --- a/OurUmbraco/Events/Relations/EventRelation.cs +++ b/OurUmbraco/Events/Relations/EventRelation.cs @@ -30,21 +30,17 @@ namespace OurUmbraco.Events.Relations private static int GetRelations(string alias, int parentId) { - - ISqlHelper sqlhelper = umbraco.BusinessLogic.Application.SqlHelper; - int result = sqlhelper.ExecuteScalar( - @" + + using (var sqlhelper = umbraco.BusinessLogic.Application.SqlHelper) + { + var result = sqlhelper.ExecuteScalar(@" SELECT count(umbracoRelation.id) FROM umbracoRelation INNER JOIN umbracoRelationType ON umbracoRelationType.id = umbracoRelation.relType AND umbracoRelationType.alias = @alias - where parentId = @parent - " - , - sqlhelper.CreateParameter("@parent", parentId), - sqlhelper.CreateParameter("@alias", alias) - ); - - return result; + where parentId = @parent", sqlhelper.CreateParameter("@parent", parentId), sqlhelper.CreateParameter("@alias", alias)); + + return result; + } } public static int GetSignedUp(int eventId) @@ -59,32 +55,25 @@ namespace OurUmbraco.Events.Relations private static List GetRelations(string alias, string sort, int parentId, int number) { - List retval = new List(); - ISqlHelper sqlhelper = umbraco.BusinessLogic.Application.SqlHelper; - - IRecordsReader rr = sqlhelper.ExecuteReader( - - string.Format(@" - SELECT TOP {0} umbracoRelation.id - FROM umbracoRelation - INNER JOIN umbracoRelationType ON umbracoRelationType.id = umbracoRelation.relType AND umbracoRelationType.alias = @alias - where parentId = @parent - ORDER BY datetime {1} - ", number, sort) - - , - sqlhelper.CreateParameter("@parent", parentId), - sqlhelper.CreateParameter("@alias", alias) - ); - - while (rr.Read()) + var retval = new List(); + using (var sqlhelper = umbraco.BusinessLogic.Application.SqlHelper) { - retval.Add( new Relation( rr.GetInt("id") ) ); - } - rr.Close(); - rr.Dispose(); + var query = string.Format(@" + SELECT TOP {0} umbracoRelation.id + FROM umbracoRelation + INNER JOIN umbracoRelationType ON umbracoRelationType.id = umbracoRelation.relType AND umbracoRelationType.alias = @alias + where parentId = @parent + ORDER BY datetime {1} + ", number, sort); - return retval; + using (var reader = sqlhelper.ExecuteReader(query, sqlhelper.CreateParameter("@parent", parentId), sqlhelper.CreateParameter("@alias", alias))) + { + while (reader.Read()) + retval.Add(new Relation(reader.GetInt("id"))); + + return retval; + } + } } public static List GetPeopleWaiting(int eventId, int number) diff --git a/OurUmbraco/Forum/AntiSpam/SpamChecker.cs b/OurUmbraco/Forum/AntiSpam/SpamChecker.cs index 19f67f1c..a56f7edf 100644 --- a/OurUmbraco/Forum/AntiSpam/SpamChecker.cs +++ b/OurUmbraco/Forum/AntiSpam/SpamChecker.cs @@ -15,7 +15,6 @@ using OurUmbraco.Forum.Services; using umbraco.BusinessLogic; using Umbraco.Core; using Umbraco.Core.Models; -using Umbraco.Web; namespace OurUmbraco.Forum.AntiSpam { @@ -39,7 +38,7 @@ namespace OurUmbraco.Forum.AntiSpam var reputationCurrent = member.GetValue("reputationCurrent"); member.SetValue("reputationCurrent", reputationCurrent >= 0 ? reputationCurrent - 1 : 0); - var memberService = UmbracoContext.Current.Application.Services.MemberService; + var memberService = ApplicationContext.Current.Services.MemberService; memberService.Save(member); memberService.AssignRole(member.Id, "potentialspam"); } diff --git a/OurUmbraco/Forum/Api/ForumController.cs b/OurUmbraco/Forum/Api/ForumController.cs index 9a2dc52f..2e59924a 100644 --- a/OurUmbraco/Forum/Api/ForumController.cs +++ b/OurUmbraco/Forum/Api/ForumController.cs @@ -483,7 +483,7 @@ namespace OurUmbraco.Forum.Api if (memberId != 0) { - var member = global::Umbraco.Web.UmbracoContext.Current.Application.Services.MemberService.GetById(memberId); + var member = ApplicationContext.Current.Services.MemberService.GetById(memberId); if (member != null) { @@ -502,7 +502,7 @@ namespace OurUmbraco.Forum.Api if (memberId != 0) { - var member = global::Umbraco.Web.UmbracoContext.Current.Application.Services.MemberService.GetById(memberId); + var member = ApplicationContext.Current.Services.MemberService.GetById(memberId); if (member != null) { diff --git a/OurUmbraco/Forum/EventHandlers/MemberApprovedEventhandler.cs b/OurUmbraco/Forum/EventHandlers/MemberApprovedEventhandler.cs index 1381ef88..bcc7e867 100644 --- a/OurUmbraco/Forum/EventHandlers/MemberApprovedEventhandler.cs +++ b/OurUmbraco/Forum/EventHandlers/MemberApprovedEventhandler.cs @@ -29,7 +29,7 @@ namespace OurUmbraco.Forum.EventHandlers && member.Properties.Contains(Constants.Conventions.Member.IsApproved) && member.IsApproved == false); - var memberService = UmbracoContext.Current.Application.Services.MemberService; + var memberService = ApplicationContext.Current.Services.MemberService; foreach (var member in nonApprovedMembers) { // Adds test for member having an Id, if they don't then it's a NEW member, diff --git a/OurUmbraco/Forum/Extensions/ForumExtensions.cs b/OurUmbraco/Forum/Extensions/ForumExtensions.cs index 0dcf55ad..06af2701 100644 --- a/OurUmbraco/Forum/Extensions/ForumExtensions.cs +++ b/OurUmbraco/Forum/Extensions/ForumExtensions.cs @@ -11,6 +11,7 @@ using MarkdownSharp; using OurUmbraco.Forum.AntiSpam; using OurUmbraco.Forum.Library; using OurUmbraco.Forum.Models; +using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Web; @@ -143,14 +144,14 @@ namespace OurUmbraco.Forum.Extensions public static bool DetectSpam(this Comment comment) { - var member = UmbracoContext.Current.Application.Services.MemberService.GetById(comment.MemberId); + var member = ApplicationContext.Current.Services.MemberService.GetById(comment.MemberId); comment.IsSpam = SpamChecker.IsSpam(member, comment.Body); return comment.IsSpam; } public static bool DetectSpam(this Topic topic) { - var member = UmbracoContext.Current.Application.Services.MemberService.GetById(topic.MemberId); + var member = ApplicationContext.Current.Services.MemberService.GetById(topic.MemberId); topic.IsSpam = SpamChecker.IsSpam(member, string.Format("{0} {1}", topic.Title, topic.Body)); return topic.IsSpam; } diff --git a/OurUmbraco/Forum/Library/Utils.cs b/OurUmbraco/Forum/Library/Utils.cs index e332a576..71e9a248 100644 --- a/OurUmbraco/Forum/Library/Utils.cs +++ b/OurUmbraco/Forum/Library/Utils.cs @@ -11,6 +11,7 @@ using System.Web.Security; using RestSharp; using RestSharp.Deserializers; using umbraco.BusinessLogic; +using Umbraco.Core; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Web; @@ -183,7 +184,7 @@ namespace OurUmbraco.Forum.Library if (spammer != null && spammer.TotalScore > PotentialSpammerThreshold) { - var memberService = UmbracoContext.Current.Application.Services.MemberService; + var memberService = ApplicationContext.Current.Services.MemberService; memberService.AssignRole(member.Id, SpamMemberGroupName); spammer.MemberId = member.Id; diff --git a/OurUmbraco/MarketPlace/NodeListing/NodeListingProvider.cs b/OurUmbraco/MarketPlace/NodeListing/NodeListingProvider.cs index 938e8573..1a203608 100644 --- a/OurUmbraco/MarketPlace/NodeListing/NodeListingProvider.cs +++ b/OurUmbraco/MarketPlace/NodeListing/NodeListingProvider.cs @@ -9,6 +9,7 @@ using OurUmbraco.Our; using OurUmbraco.Wiki.Extensions; using umbraco; using umbraco.BusinessLogic; +using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Web; @@ -77,7 +78,7 @@ namespace OurUmbraco.MarketPlace.NodeListing //TODO: could easily cache this for a short period of time var listingItem = new ListingItem.PublishedContentListingItem(content); - + //this section was created to speed up loading operations and cut down on the number of database interactions // TODO: N+1+1+1+1, etc... if (optimized == false) @@ -99,8 +100,10 @@ namespace OurUmbraco.MarketPlace.NodeListing { try { - return Application.SqlHelper.ExecuteScalar(" select count(*) from projectDownload where projectId = @id;", - Application.SqlHelper.CreateParameter("@id", projectId)); + using (var sqlHelper = Application.SqlHelper) + { + return sqlHelper.ExecuteScalar("select count(*) from projectDownload where projectId = @id;", sqlHelper.CreateParameter("@id", projectId)); + } } catch { @@ -110,13 +113,12 @@ namespace OurUmbraco.MarketPlace.NodeListing public int GetProjectKarma(int projectId) { - - using (var reader = Application.SqlHelper.ExecuteReader("SELECT SUM([points]) AS Karma FROM powersProject WHERE id = @projectId", - Application.SqlHelper.CreateParameter("@projectId", projectId))) + using (var sqlHelper = Application.SqlHelper) + using (var reader = sqlHelper.ExecuteReader("SELECT SUM([points]) AS Karma FROM powersProject WHERE id = @projectId", sqlHelper.CreateParameter("@projectId", projectId))) + { if (reader.Read()) - { return reader.GetInt("Karma"); - } + } return 0; } @@ -133,7 +135,7 @@ namespace OurUmbraco.MarketPlace.NodeListing /// public void SaveOrUpdate(IListingItem listingItem) { - var contentService = UmbracoContext.Current.Application.Services.ContentService; + var contentService = ApplicationContext.Current.Services.ContentService; //check if this is a new listing or an existing one. var isUpdate = listingItem.Id != 0; var content = (isUpdate) @@ -260,7 +262,7 @@ namespace OurUmbraco.MarketPlace.NodeListing var umbracoHelper = new UmbracoHelper(UmbracoContext.Current); var contribProjects = new List(); const string sql = @"SELECT * FROM projectContributors WHERE memberId=@memberId"; - var contribPackageIds = UmbracoContext.Current.Application.DatabaseContext.Database.Fetch(sql, new { memberId }); + var contribPackageIds = ApplicationContext.Current.DatabaseContext.Database.Fetch(sql, new { memberId }); foreach (var contribPackageId in contribPackageIds) { diff --git a/OurUmbraco/MarketPlace/Providers/KarmaProvider.cs b/OurUmbraco/MarketPlace/Providers/KarmaProvider.cs index fc7bd89d..ad97942b 100644 --- a/OurUmbraco/MarketPlace/Providers/KarmaProvider.cs +++ b/OurUmbraco/MarketPlace/Providers/KarmaProvider.cs @@ -1,8 +1,8 @@ -using System;using System.Collections.Generic; -using System.Linq; +using System; +using System.Collections.Generic; using OurUmbraco.MarketPlace.Interfaces; -using OurUmbraco.Our; -using Umbraco.Web; +using umbraco.BusinessLogic; +using Umbraco.Core; namespace OurUmbraco.MarketPlace.Providers { @@ -10,7 +10,7 @@ namespace OurUmbraco.MarketPlace.Providers { public int GetProjectKarma(int projectId) { - var db = UmbracoContext.Current.Application.DatabaseContext.Database; + var db = ApplicationContext.Current.DatabaseContext.Database; var result = db.ExecuteScalar("SELECT SUM(points) karma FROM powersProject WHERE id = @projectId", new { projectId = projectId }); return result; } @@ -19,7 +19,7 @@ namespace OurUmbraco.MarketPlace.Providers { var karmaList = new List(); - using (var reader = Data.SqlHelper.ExecuteReader("SELECT id as ProjectId, SUM(points) Points FROM powersProject GROUP BY id ORDER BY SUM(points) DESC")) + using (var reader = Application.SqlHelper.ExecuteReader("SELECT id as ProjectId, SUM(points) Points FROM powersProject GROUP BY id ORDER BY SUM(points) DESC")) { while (reader.Read()) { @@ -28,6 +28,7 @@ namespace OurUmbraco.MarketPlace.Providers ProjectId = reader.GetInt("ProjectId"), Points = reader.GetInt("Points") }; + karmaList.Add(karma); } } diff --git a/OurUmbraco/NotificationsCore/Notifications/MarkAsSolutionReminder.cs b/OurUmbraco/NotificationsCore/Notifications/MarkAsSolutionReminder.cs index 4da62c1b..2899e0e7 100644 --- a/OurUmbraco/NotificationsCore/Notifications/MarkAsSolutionReminder.cs +++ b/OurUmbraco/NotificationsCore/Notifications/MarkAsSolutionReminder.cs @@ -2,9 +2,7 @@ using System.IO; using System.Net.Mail; using System.Web.Hosting; -using System.Xml; using OurUmbraco.Forum.Services; -using OurUmbraco.NotificationsWeb; using Umbraco.Core; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; @@ -15,35 +13,7 @@ namespace OurUmbraco.NotificationsCore.Notifications { public class MarkAsSolutionReminder { - private readonly XmlNode _details; - - public MarkAsSolutionReminder() - { - const string notificationName = "MarkAsSolutionReminderSingle"; - try - { - var notifications = new XmlDocument(); - notifications.Load(Config.ConfigurationFile); - - var settings = notifications.SelectSingleNode("//global"); - - var node = notifications.SelectSingleNode(string.Format("//instant//notification [@name = '{0}']", notificationName)); - - var details = new XmlDocument(); - var cont = details.CreateElement("details"); - cont.AppendChild(details.ImportNode(settings, true)); - cont.AppendChild(details.ImportNode(node, true)); - - _details = details.AppendChild(cont); - } - catch (Exception e) - { - LogHelper.Error(string.Format("Couldn't get settings for {0}", notificationName), e); - throw; - } - } - - public void SendNotification(int topicId, int memberId) + public void SendNotification(int topicId, int memberId, NotificationMail notificationMail) { try { @@ -57,13 +27,11 @@ namespace OurUmbraco.NotificationsCore.Notifications using (var smtpClient = new SmtpClient()) { - var fromEmail = _details.SelectSingleNode("//from/email").InnerText; - var fromName = _details.SelectSingleNode("//from/name").InnerText; - var fromMailAddress = new MailAddress(fromEmail, fromName); + var fromMailAddress = new MailAddress(notificationMail.FromMail, notificationMail.FromName); - var subject = string.Format("{0} - '{1}'", _details.SelectSingleNode("//subject").InnerText, topic.Title); - var domain = _details.SelectSingleNode("//domain").InnerText; - var body = _details.SelectSingleNode("//body").InnerText; + var subject = string.Format("{0} - '{1}'", notificationMail.Subject, topic.Title); + var domain = notificationMail.Domain; + var body = notificationMail.Body; body = string.Format(body, topic.Title, "https://" + domain + topic.GetUrl()); if (member.GetPropertyValue("bugMeNot") == false) @@ -89,9 +57,11 @@ namespace OurUmbraco.NotificationsCore.Notifications } } - var db = ApplicationContext.Current.DatabaseContext.Database; - var sql = new Sql("UPDATE forumTopics SET markAsSolutionReminderSent = 1 WHERE id = @topicId", new { topicId = topic.Id }); - var result = db.Execute(sql); + using (var db = ApplicationContext.Current.DatabaseContext.Database) + { + var sql = new Sql("UPDATE forumTopics SET markAsSolutionReminderSent = 1 WHERE id = @topicId", new {topicId = topic.Id}); + var result = db.Execute(sql); + } } catch (Exception ex) { diff --git a/OurUmbraco/NotificationsCore/Notifications/NotificationMail.cs b/OurUmbraco/NotificationsCore/Notifications/NotificationMail.cs new file mode 100644 index 00000000..c89feb71 --- /dev/null +++ b/OurUmbraco/NotificationsCore/Notifications/NotificationMail.cs @@ -0,0 +1,53 @@ +using System; +using System.Net.Mail; +using System.Xml; +using OurUmbraco.NotificationsWeb; +using Umbraco.Core.Logging; + +namespace OurUmbraco.NotificationsCore.Notifications +{ + public class NotificationMail + { + public string FromName; + public string FromMail; + public string Subject; + public string Domain; + public string Body; + + public NotificationMail GetNotificationMail(string notificationType) + { + try + { + var notifications = new XmlDocument(); + notifications.Load(Config.ConfigurationFile); + + var settings = notifications.SelectSingleNode("//global"); + + var node = notifications.SelectSingleNode(string.Format("//instant//notification [@name = '{0}']", notificationType)); + + var details = new XmlDocument(); + var cont = details.CreateElement("details"); + cont.AppendChild(details.ImportNode(settings, true)); + cont.AppendChild(details.ImportNode(node, true)); + + var detailsChild = details.AppendChild(cont); + + var notificationMail = new NotificationMail + { + FromMail = detailsChild.SelectSingleNode("//email").InnerText, + FromName = detailsChild.SelectSingleNode("//name").InnerText, + Subject = detailsChild.SelectSingleNode("//subject").InnerText, + Domain = detailsChild.SelectSingleNode("//domain").InnerText, + Body = detailsChild.SelectSingleNode("//body").InnerText + }; + + return notificationMail; + } + catch (Exception e) + { + LogHelper.Error(string.Format("Couldn't get settings for {0}", notificationType), e); + throw; + } + } + } +} diff --git a/OurUmbraco/NotificationsCore/Notifications/ScheduleHangfireJobs.cs b/OurUmbraco/NotificationsCore/Notifications/ScheduleHangfireJobs.cs index c994b2bf..2f7caa6b 100644 --- a/OurUmbraco/NotificationsCore/Notifications/ScheduleHangfireJobs.cs +++ b/OurUmbraco/NotificationsCore/Notifications/ScheduleHangfireJobs.cs @@ -14,13 +14,18 @@ namespace OurUmbraco.NotificationsCore.Notifications public void ScheduleTopics() { - var db = ApplicationContext.Current.DatabaseContext.Database; - var sql = new Sql("SELECT id, memberId FROM forumTopics WHERE answer = 0 AND (markAsSolutionReminderSent IS NULL OR markAsSolutionReminderSent = 0) AND replies > 0 AND updated < getdate() - 7 AND created > '2016-10-01 00:00:00' AND id NOT IN (SELECT topicId FROM notificationMarkAsSolution) ORDER BY created DESC"); - var results = db.Query(sql); - var reminder = new MarkAsSolutionReminder(); - foreach (var reminderTopic in results) + using (var db = ApplicationContext.Current.DatabaseContext.Database) { - var jobId = BackgroundJob.Schedule(() => reminder.SendNotification(reminderTopic.Id, reminderTopic.MemberId), TimeSpan.FromMinutes(10)); + var sql = new Sql("SELECT id, memberId FROM forumTopics WHERE answer = 0 AND (markAsSolutionReminderSent IS NULL OR markAsSolutionReminderSent = 0) AND replies > 0 AND updated < getdate() - 7 AND created > '2016-10-01 00:00:00' AND id NOT IN (SELECT topicId FROM notificationMarkAsSolution) ORDER BY created DESC"); + var results = db.Query(sql); + var reminder = new MarkAsSolutionReminder(); + var notification = new NotificationMail(); + var reminderMail = notification.GetNotificationMail("MarkAsSolutionReminderSingle"); + + foreach (var reminderTopic in results) + { + var jobId = BackgroundJob.Schedule(() => reminder.SendNotification(reminderTopic.Id, reminderTopic.MemberId, reminderMail), TimeSpan.FromMinutes(10)); + } } } } diff --git a/OurUmbraco/NotificationsWeb/EventHandlers/Forum.cs b/OurUmbraco/NotificationsWeb/EventHandlers/Forum.cs index 8d7e194d..897c637e 100644 --- a/OurUmbraco/NotificationsWeb/EventHandlers/Forum.cs +++ b/OurUmbraco/NotificationsWeb/EventHandlers/Forum.cs @@ -32,7 +32,7 @@ namespace OurUmbraco.NotificationsWeb.EventHandlers void ForumService_Created(object sender, ForumEventArgs e) { - var content = Umbraco.Web.UmbracoContext.Current.Application.Services.ContentService.GetById(e.Forum.ParentId); + var content = ApplicationContext.Current.Services.ContentService.GetById(e.Forum.ParentId); if (content.ContentType.Alias == "Project") { var owner = content.GetValue("owner"); diff --git a/OurUmbraco/Our/Api/CommunityController.cs b/OurUmbraco/Our/Api/CommunityController.cs index cd4a749d..65c4fd0a 100644 --- a/OurUmbraco/Our/Api/CommunityController.cs +++ b/OurUmbraco/Our/Api/CommunityController.cs @@ -134,40 +134,41 @@ namespace OurUmbraco.Our.Api int tagId = 0; //first clear out all items associated with this ID... - Application.SqlHelper.ExecuteNonQuery("DELETE FROM cmsTagRelationship WHERE (nodeId = @nodeId) AND EXISTS (SELECT id FROM cmsTags WHERE (cmsTagRelationship.tagId = id) AND ([group] = @group));", - Application.SqlHelper.CreateParameter("@nodeId", nodeId), - Application.SqlHelper.CreateParameter("@group", group)); - - //and now we add them again... - foreach (string tag in tags.Split(',')) + using (var sqlHelper = Application.SqlHelper) { - string cleanedtag = tag.Replace("<", ""); - cleanedtag = cleanedtag.Replace("'", ""); - cleanedtag = cleanedtag.Replace("\"", ""); - cleanedtag = cleanedtag.Replace(">", ""); + sqlHelper.ExecuteNonQuery( + "DELETE FROM cmsTagRelationship WHERE (nodeId = @nodeId) AND EXISTS (SELECT id FROM cmsTags WHERE (cmsTagRelationship.tagId = id) AND ([group] = @group));", + sqlHelper.CreateParameter("@nodeId", nodeId), + sqlHelper.CreateParameter("@group", group)); - if (cleanedtag.Length > 0) + //and now we add them again... + foreach (var tag in tags.Split(',')) { + var cleanedtag = tag.Replace("<", ""); + cleanedtag = cleanedtag.Replace("'", ""); + cleanedtag = cleanedtag.Replace("\"", ""); + cleanedtag = cleanedtag.Replace(">", ""); + + if (cleanedtag.Length <= 0) + continue; + try { - tagId = umbraco.editorControls.tags.library.AddTag(cleanedtag, group); - + tagId = umbraco.editorControls.tags.library.AddTag(cleanedtag, @group); if (tagId > 0) { - - Application.SqlHelper.ExecuteNonQuery("INSERT INTO cmsTagRelationShip(nodeId,tagId) VALUES (@nodeId, @tagId)", - Application.SqlHelper.CreateParameter("@nodeId", nodeId), - Application.SqlHelper.CreateParameter("@tagId", tagId) + sqlHelper.ExecuteNonQuery( + "INSERT INTO cmsTagRelationShip(nodeId,tagId) VALUES (@nodeId, @tagId)", + sqlHelper.CreateParameter("@nodeId", nodeId), + sqlHelper.CreateParameter("@tagId", tagId) ); tagId = 0; - } } catch { } } - } } diff --git a/OurUmbraco/Our/Businesslogic/ProjectContributor.cs b/OurUmbraco/Our/Businesslogic/ProjectContributor.cs index 38153211..49af3acd 100644 --- a/OurUmbraco/Our/Businesslogic/ProjectContributor.cs +++ b/OurUmbraco/Our/Businesslogic/ProjectContributor.cs @@ -1,4 +1,7 @@ -namespace OurUmbraco.Our.Businesslogic +using System.Net.Mime; +using umbraco.BusinessLogic; + +namespace OurUmbraco.Our.Businesslogic { public class ProjectContributor { @@ -13,23 +16,31 @@ public void Add() { - if (!(Data.SqlHelper.ExecuteScalar("SELECT 1 FROM projectContributors WHERE projectId = @projectId and memberId = @memberId;", - Data.SqlHelper.CreateParameter("@projectId", ProjectId), - Data.SqlHelper.CreateParameter("@memberId", MemberId)) > 0)) + using (var sqlHelper = Application.SqlHelper) { - Data.SqlHelper.ExecuteNonQuery( - "INSERT INTO projectContributors(projectId,memberId) values(@projectId,@memberId);", - Data.SqlHelper.CreateParameter("@projectId", ProjectId), - Data.SqlHelper.CreateParameter("@memberId", MemberId)); + var exists = sqlHelper.ExecuteScalar( + "SELECT 1 FROM projectContributors WHERE projectId = @projectId and memberId = @memberId;", + sqlHelper.CreateParameter("@projectId", ProjectId), + sqlHelper.CreateParameter("@memberId", MemberId)) > 0; + if (exists == false) + { + sqlHelper.ExecuteNonQuery( + "INSERT INTO projectContributors(projectId,memberId) values(@projectId,@memberId);", + sqlHelper.CreateParameter("@projectId", ProjectId), + sqlHelper.CreateParameter("@memberId", MemberId)); + } } } public void Delete() { - Data.SqlHelper.ExecuteNonQuery( - "DELETE FROM projectContributors WHERE projectId = @projectId and memberId = @memberId;", - Data.SqlHelper.CreateParameter("@projectId", ProjectId), - Data.SqlHelper.CreateParameter("@memberId", MemberId)); + using (var sqlHelper = Application.SqlHelper) + { + sqlHelper.ExecuteNonQuery( + "DELETE FROM projectContributors WHERE projectId = @projectId and memberId = @memberId;", + sqlHelper.CreateParameter("@projectId", ProjectId), + sqlHelper.CreateParameter("@memberId", MemberId)); + } } } } diff --git a/OurUmbraco/Our/Controllers/RegisterController.cs b/OurUmbraco/Our/Controllers/RegisterController.cs index 378bf2a8..f6e73c74 100644 --- a/OurUmbraco/Our/Controllers/RegisterController.cs +++ b/OurUmbraco/Our/Controllers/RegisterController.cs @@ -106,7 +106,7 @@ namespace OurUmbraco.Our.Controllers memberService.AssignRole(member.Id, "newaccount"); var redirectPage = "/"; - var contentService = UmbracoContext.Current.Application.Services.ContentService; + var contentService = ApplicationContext.Current.Services.ContentService; var rootNode = contentService.GetRootContent().OrderBy(x => x.SortOrder).First(x => x.ContentType.Alias == "Community"); var memberNode = rootNode.Children().FirstOrDefault(x => x.Name == "Member"); diff --git a/OurUmbraco/Our/CustomHandlers/CommentVote.cs b/OurUmbraco/Our/CustomHandlers/CommentVote.cs index f4f7e743..d84c0be7 100644 --- a/OurUmbraco/Our/CustomHandlers/CommentVote.cs +++ b/OurUmbraco/Our/CustomHandlers/CommentVote.cs @@ -2,6 +2,7 @@ using OurUmbraco.Forum.Services; using OurUmbraco.Powers.BusinessLogic; using OurUmbraco.Powers.Library; +using umbraco.BusinessLogic; using Umbraco.Core; using Action = OurUmbraco.Powers.BusinessLogic.Action; @@ -23,20 +24,21 @@ namespace OurUmbraco.Our.CustomHandlers void CommentScoring(object sender, ActionEventArgs e) { - Action a = (Action)sender; + var action = (Action)sender; - if (a.Alias == "LikeComment" || a.Alias == "DisLikeComment" || a.Alias == "TopicSolved") + if (action.Alias != "LikeComment" && action.Alias != "DisLikeComment" && action.Alias != "TopicSolved") + return; + + var score = Xslt.Score(e.ItemId, action.DataBaseTable); + + //we then add the sum of the total score to the + using (var sqlHelper = Application.SqlHelper) { - - int score = Xslt.Score(e.ItemId, a.DataBaseTable); - - //we then add the sum of the total score to the - Data.SqlHelper.ExecuteNonQuery("UPDATE forumComments SET score = @score WHERE id = @id", Data.SqlHelper.CreateParameter("@id", e.ItemId), Data.SqlHelper.CreateParameter("@score", score)); + sqlHelper.ExecuteNonQuery("UPDATE forumComments SET score = @score WHERE id = @id", + sqlHelper.CreateParameter("@id", e.ItemId), sqlHelper.CreateParameter("@score", score)); } } - - void CommentVote(object sender, ActionEventArgs e) { diff --git a/OurUmbraco/Our/CustomHandlers/ExternalVote.cs b/OurUmbraco/Our/CustomHandlers/ExternalVote.cs index ed66d99d..9196aa5d 100644 --- a/OurUmbraco/Our/CustomHandlers/ExternalVote.cs +++ b/OurUmbraco/Our/CustomHandlers/ExternalVote.cs @@ -14,13 +14,16 @@ namespace OurUmbraco.Our.CustomHandlers void Action_BeforePerform(object sender, ActionEventArgs e) { - Action a = (Action)sender; + var action = (Action)sender; + + if (action.Alias != "ExternalVote") + return; - if (a.Alias == "ExternalVote") - { - var memberId = OurUmbraco.Powers.BusinessLogic.Data.SqlHelper.ExecuteScalar("SELECT memberId FROM externalUrls WHERE (@id = id)", OurUmbraco.Powers.BusinessLogic.Data.SqlHelper.CreateParameter("@id", e.ItemId)); - e.ReceiverId = memberId; - } + using (var sqlHelper = Application.SqlHelper) + { + var memberId = sqlHelper.ExecuteScalar("SELECT memberId FROM externalUrls WHERE (@id = id)", sqlHelper.CreateParameter("@id", e.ItemId)); + e.ReceiverId = memberId; + } } } } \ No newline at end of file diff --git a/OurUmbraco/Our/CustomHandlers/ForumPostsCounter.cs b/OurUmbraco/Our/CustomHandlers/ForumPostsCounter.cs index 9d86c5e1..232eb94a 100644 --- a/OurUmbraco/Our/CustomHandlers/ForumPostsCounter.cs +++ b/OurUmbraco/Our/CustomHandlers/ForumPostsCounter.cs @@ -22,7 +22,7 @@ namespace OurUmbraco.Our.CustomHandlers { { if (e.Comment != null && e.Comment.MemberId > 0) { - var ms = UmbracoContext.Current.Application.Services.MemberService; + var ms = ApplicationContext.Current.Services.MemberService; var member = ms.GetById(e.Comment.MemberId); member.IncreaseForumPostCount(); ms.Save(member); @@ -36,7 +36,7 @@ namespace OurUmbraco.Our.CustomHandlers { { if (e.Topic != null && e.Topic.MemberId > 0) { - var ms = UmbracoContext.Current.Application.Services.MemberService; + var ms = ApplicationContext.Current.Services.MemberService; var member = ms.GetById(e.Topic.MemberId); member.IncreaseForumPostCount(); ms.Save(member); diff --git a/OurUmbraco/Our/CustomHandlers/ProjectVote.cs b/OurUmbraco/Our/CustomHandlers/ProjectVote.cs index 6e2659c2..ee050fe7 100644 --- a/OurUmbraco/Our/CustomHandlers/ProjectVote.cs +++ b/OurUmbraco/Our/CustomHandlers/ProjectVote.cs @@ -22,7 +22,7 @@ namespace OurUmbraco.Our.CustomHandlers if (a.Alias == "ProjectUp") { - var contentService = UmbracoContext.Current.Application.Services.ContentService; + var contentService = ApplicationContext.Current.Services.ContentService; var content = contentService.GetById(e.ItemId); if (content.GetValue("approved") == false && Xslt.Score(content.Id, "powersProject") >= 15) @@ -39,7 +39,7 @@ namespace OurUmbraco.Our.CustomHandlers if (a.Alias == "ProjectUp" || a.Alias == "ProjectDown") { - var contentService = UmbracoContext.Current.Application.Services.ContentService; + var contentService = ApplicationContext.Current.Services.ContentService; var content = contentService.GetById(e.ItemId); e.ReceiverId = content.GetValue("owner"); diff --git a/OurUmbraco/Our/CustomHandlers/TopicVote.cs b/OurUmbraco/Our/CustomHandlers/TopicVote.cs index cf27ae04..f9a46a31 100644 --- a/OurUmbraco/Our/CustomHandlers/TopicVote.cs +++ b/OurUmbraco/Our/CustomHandlers/TopicVote.cs @@ -4,6 +4,7 @@ using System.Web.Security; using OurUmbraco.Forum.Services; using OurUmbraco.Powers.BusinessLogic; using OurUmbraco.Powers.Library; +using umbraco.BusinessLogic; using Umbraco.Core; using Action = OurUmbraco.Powers.BusinessLogic.Action; @@ -61,17 +62,21 @@ namespace OurUmbraco.Our.CustomHandlers void TopicScoring(object sender, ActionEventArgs e) { - if (!e.Cancel) + if (e.Cancel) + return; + + var action = (Action)sender; + + if (action.Alias != "LikeTopic" && action.Alias != "DisLikeTopic") + return; + + var topicScore = Xslt.Score(e.ItemId, action.DataBaseTable); + using (var sqlHelper = Application.SqlHelper) { - Action a = (Action)sender; - - if (a.Alias == "LikeTopic" || a.Alias == "DisLikeTopic") - { - int topicScore = Xslt.Score(e.ItemId, a.DataBaseTable); - - //this uses a non-standard coloumn in the forum schema, so this is added manually.. - Data.SqlHelper.ExecuteNonQuery("UPDATE forumTopics SET score = @score WHERE id = @id", Data.SqlHelper.CreateParameter("@id", e.ItemId), Data.SqlHelper.CreateParameter("@score", topicScore)); - } + //this uses a non-standard coloumn in the forum schema, so this is added manually.. + sqlHelper.ExecuteNonQuery("UPDATE forumTopics SET score = @score WHERE id = @id", + sqlHelper.CreateParameter("@id", e.ItemId), + sqlHelper.CreateParameter("@score", topicScore)); } } diff --git a/OurUmbraco/Our/Data.cs b/OurUmbraco/Our/Data.cs deleted file mode 100644 index 1e47bbdf..00000000 --- a/OurUmbraco/Our/Data.cs +++ /dev/null @@ -1,30 +0,0 @@ -using umbraco.DataLayer; - -namespace OurUmbraco.Our -{ - public class Data - { - private static string _ConnString = umbraco.GlobalSettings.DbDSN; - private static ISqlHelper _sqlHelper; - - /// - /// Gets the SQL helper. - /// - /// The SQL helper. - public static ISqlHelper SqlHelper - { - get - { - if (_sqlHelper == null) - { - try - { - _sqlHelper = DataLayerHelper.CreateSqlHelper(_ConnString); - } - catch { } - } - return _sqlHelper; - } - } - } -} diff --git a/OurUmbraco/Our/GoogleOAuth/UmbracoStandardOwinStartup.cs b/OurUmbraco/Our/GoogleOAuth/UmbracoStandardOwinStartup.cs index 16f6f613..1e264216 100644 --- a/OurUmbraco/Our/GoogleOAuth/UmbracoStandardOwinStartup.cs +++ b/OurUmbraco/Our/GoogleOAuth/UmbracoStandardOwinStartup.cs @@ -1,3 +1,5 @@ +using System; +using System.Configuration; using System.Web.Configuration; using Hangfire; using Hangfire.SqlServer; @@ -27,11 +29,14 @@ namespace OurUmbraco.Our.GoogleOAuth var secret = WebConfigurationManager.AppSettings["GoogleOAuthSecret"]; app.ConfigureBackOfficeGoogleAuth(clientId, secret); + if (string.Equals(ConfigurationManager.AppSettings["HangFireEnabled"], "true", StringComparison.InvariantCultureIgnoreCase) == false) + return; + // Configure hangfire - var options = new SqlServerStorageOptions { PrepareSchemaIfNecessary = true }; + var options = new SqlServerStorageOptions {PrepareSchemaIfNecessary = true}; var connectionString = Umbraco.Core.ApplicationContext.Current.DatabaseContext.ConnectionString; GlobalConfiguration.Configuration.UseSqlServerStorage(connectionString, options); - var dashboardOptions = new DashboardOptions { Authorization = new[] { new UmbracoAuthorizationFilter() } }; + var dashboardOptions = new DashboardOptions {Authorization = new[] {new UmbracoAuthorizationFilter()}}; app.UseHangfireDashboard("/hangfire", dashboardOptions); app.UseHangfireServer(); diff --git a/OurUmbraco/Our/MigrationsHandler.cs b/OurUmbraco/Our/MigrationsHandler.cs index f67618c3..9d7fb51f 100644 --- a/OurUmbraco/Our/MigrationsHandler.cs +++ b/OurUmbraco/Our/MigrationsHandler.cs @@ -60,7 +60,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var macroService = UmbracoContext.Current.Application.Services.MacroService; + var macroService = ApplicationContext.Current.Services.MacroService; var macroAlias = "MembersActivate"; if (macroService.GetByAlias(macroAlias) == null) { @@ -76,7 +76,7 @@ namespace OurUmbraco.Our macro.Save(); } - var contentService = UmbracoContext.Current.Application.Services.ContentService; + var contentService = ApplicationContext.Current.Services.ContentService; var rootNode = contentService.GetRootContent().OrderBy(x => x.SortOrder).First(x => x.ContentType.Alias == "Community"); var memberNode = rootNode.Children().FirstOrDefault(x => x.Name == "Member"); @@ -116,7 +116,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var macroService = UmbracoContext.Current.Application.Services.MacroService; + var macroService = ApplicationContext.Current.Services.MacroService; var macroAlias = "AntiSpam"; if (macroService.GetByAlias(macroAlias) == null) { @@ -132,7 +132,7 @@ namespace OurUmbraco.Our macro.Save(); } - var contentService = UmbracoContext.Current.Application.Services.ContentService; + var contentService = ApplicationContext.Current.Services.ContentService; var rootNode = contentService.GetRootContent().OrderBy(x => x.SortOrder).First(x => x.ContentType.Alias == "Community"); var antiSpamPageName = "AntiSpam"; @@ -162,7 +162,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var macroService = UmbracoContext.Current.Application.Services.MacroService; + var macroService = ApplicationContext.Current.Services.MacroService; var macroAlias = "CommunityHome"; if (macroService.GetByAlias(macroAlias) == null) { @@ -197,7 +197,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var contentTypeService = UmbracoContext.Current.Application.Services.ContentTypeService; + var contentTypeService = ApplicationContext.Current.Services.ContentTypeService; var releaseContentType = contentTypeService.GetContentType("Release"); var propertyTypeAlias = "overrideYouTrackDescription"; if (releaseContentType.PropertyTypeExists(propertyTypeAlias) == false) @@ -236,7 +236,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var contentTypeService = UmbracoContext.Current.Application.Services.ContentTypeService; + var contentTypeService = ApplicationContext.Current.Services.ContentTypeService; var projectContentType = contentTypeService.GetContentType("Project"); var propertyTypeAlias = "worksOnUaaS"; if (projectContentType.PropertyTypeExists(propertyTypeAlias) == false) @@ -266,7 +266,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var contentTypeService = UmbracoContext.Current.Application.Services.ContentTypeService; + var contentTypeService = ApplicationContext.Current.Services.ContentTypeService; var projectContentType = contentTypeService.GetContentType("Forum"); var propertyTypeAlias = "archived"; if (projectContentType.PropertyTypeExists(propertyTypeAlias) == false) @@ -296,7 +296,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var contentTypeService = UmbracoContext.Current.Application.Services.ContentTypeService; + var contentTypeService = ApplicationContext.Current.Services.ContentTypeService; var communityContentType = contentTypeService.GetContentType("Community"); var propertyTypeAlias = "homeOnlyBanner"; if (communityContentType.PropertyTypeExists(propertyTypeAlias) == false) @@ -327,7 +327,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var userService = UmbracoContext.Current.Application.Services.UserService; + var userService = ApplicationContext.Current.Services.UserService; var rootUser = userService.GetUserById(0); if (rootUser == null) return; @@ -336,7 +336,7 @@ namespace OurUmbraco.Our if (rootUser.Email == "pph@umrbaco.org") return; - var db = UmbracoContext.Current.Application.DatabaseContext.Database; + var db = ApplicationContext.Current.DatabaseContext.Database; db.Execute("DELETE FROM [umbracoUser] WHERE id != 0"); db.Execute("DELETE FROM [umbracoUser2app] WHERE [user] != 0"); db.Execute("DBCC CHECKIDENT ('dbo.umbracoUser');"); @@ -369,7 +369,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var contentTypeService = UmbracoContext.Current.Application.Services.ContentTypeService; + var contentTypeService = ApplicationContext.Current.Services.ContentTypeService; var releaseCompareAlias = "ReleaseCompare"; var compareContentType = contentTypeService.GetContentType(releaseCompareAlias); if (compareContentType == null) @@ -399,7 +399,7 @@ namespace OurUmbraco.Our Content = templateContent }; - var fileService = UmbracoContext.Current.Application.Services.FileService; + var fileService = ApplicationContext.Current.Services.FileService; var masterTemplate = fileService.GetTemplate("Master"); releaseCompareTemplate.SetMasterTemplate(masterTemplate); @@ -412,7 +412,7 @@ namespace OurUmbraco.Our contentTypeService.Save(compareContentType); - var contentService = UmbracoContext.Current.Application.Services.ContentService; + var contentService = ApplicationContext.Current.Services.ContentService; var rootNode = contentService.GetRootContent().OrderBy(x => x.SortOrder).First(x => x.ContentType.Alias == "Community"); if (rootNode == null) return; @@ -430,7 +430,7 @@ namespace OurUmbraco.Our compareContent.Template = releaseCompareTemplate; contentService.SaveAndPublishWithStatus(compareContent); - var macroService = UmbracoContext.Current.Application.Services.MacroService; + var macroService = ApplicationContext.Current.Services.MacroService; const string macroAlias = "ReleasesDropdown"; if (macroService.GetByAlias(macroAlias) == null) { @@ -464,7 +464,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var contentService = UmbracoContext.Current.Application.Services.ContentService; + var contentService = ApplicationContext.Current.Services.ContentService; var rootContent = contentService.GetRootContent().FirstOrDefault(); if (rootContent != null) { @@ -496,7 +496,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var macroService = UmbracoContext.Current.Application.Services.MacroService; + var macroService = ApplicationContext.Current.Services.MacroService; var macro = macroService.GetByAlias("MemberSignup"); macro.ControlType = ""; macro.ScriptPath = "~/Views/MacroPartials/Members/Register.cshtml"; @@ -521,7 +521,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var db = UmbracoContext.Current.Application.DatabaseContext.Database; + var db = ApplicationContext.Current.DatabaseContext.Database; db.Execute("ALTER TABLE [wikiFiles] ADD [minimumVersionStrict] VARCHAR(50)"); string[] lines = { "" }; @@ -770,7 +770,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var contentService = UmbracoContext.Current.Application.Services.ContentService; + var contentService = ApplicationContext.Current.Services.ContentService; var rootContent = contentService.GetRootContent().FirstOrDefault(); if (rootContent != null) { @@ -807,7 +807,7 @@ namespace OurUmbraco.Our if (File.Exists(path)) return; - var db = UmbracoContext.Current.Application.DatabaseContext.Database; + var db = ApplicationContext.Current.DatabaseContext.Database; db.Execute("ALTER TABLE [forumTopics] ADD [markAsSolutionReminderSent] [BIT] NULL DEFAULT ((0))"); string[] lines = { "" }; diff --git a/OurUmbraco/Our/Rest.cs b/OurUmbraco/Our/Rest.cs index d416f409..e33cc3fa 100644 --- a/OurUmbraco/Our/Rest.cs +++ b/OurUmbraco/Our/Rest.cs @@ -78,19 +78,19 @@ namespace OurUmbraco.Our //Check if member is an admin (in group 'admin') if (Utils.IsAdmin(_currentMember)) { - - //Yep - it's valid, lets get that member - Member MemberToBlock = Utils.GetMember(memberId); - //Now we have the member - lets update the 'blocked' property on the member - MemberToBlock.getProperty("blocked").Value = false; + //Yep - it's valid, lets get that member + Member MemberToBlock = Utils.GetMember(memberId); - //Save the changes - MemberToBlock.Save(); + //Now we have the member - lets update the 'blocked' property on the member + MemberToBlock.getProperty("blocked").Value = false; + + //Save the changes + MemberToBlock.Save(); + + //It's all good... + return "true"; - //It's all good... - return "true"; - } //Member not authorised or memberID passed in is not valid @@ -106,17 +106,20 @@ namespace OurUmbraco.Our if (Utils.IsHq(_currentMember)) { //Lets check the memberID of the member we are blocking passed into /base is a valid member.. - //Yep - it's valid, lets get that member - var member = Utils.GetMember(memberId); + //Yep - it's valid, lets get that member + var member = Utils.GetMember(memberId); - Membership.DeleteUser(member.LoginName, true); + Membership.DeleteUser(member.LoginName, true); - Application.SqlHelper.ExecuteNonQuery("UPDATE forumForums SET latestAuthor = 0 WHERE latestAuthor = @memberId", - Application.SqlHelper.CreateParameter("@memberId", memberId)); + using (var sqlHelper = Application.SqlHelper) + { + sqlHelper.ExecuteNonQuery("UPDATE forumForums SET latestAuthor = 0 WHERE latestAuthor = @memberId", + sqlHelper.CreateParameter("@memberId", memberId)); + } + + //It's all good... + return "true"; - //It's all good... - return "true"; - } //Member not authorised or memberID passed in is not valid @@ -126,30 +129,27 @@ namespace OurUmbraco.Our [RestExtensionMethod(AllowGroup = "HQ", ReturnXml = false)] public static string GetBlockedMembers() { - int _currentMember = HttpContext.Current.User.Identity.IsAuthenticated ? (int)Membership.GetUser().ProviderUserKey : 0; + var currentMember = HttpContext.Current.User.Identity.IsAuthenticated ? (int)Membership.GetUser().ProviderUserKey : 0; //Check if member is an admin (in group 'admin') - if (Utils.IsHq(_currentMember)) + //Member not authorised or memberID passed in is not valid + if (Utils.IsHq(currentMember) == false) return string.Empty; + + var returnValue = string.Empty; + + const string blockedMembersQuery = "SELECT contentNodeId FROM cmsPropertyData WHERE propertytypeid = (SELECT id FROM cmsPropertyType WHERE alias = 'blocked') AND dataInt = 1"; + + using (var reader = Application.SqlHelper.ExecuteReader(blockedMembersQuery)) { - var returnValue = string.Empty; - - const string blockedMembersQuery = "SELECT contentNodeId FROM cmsPropertyData WHERE propertytypeid = (SELECT id FROM cmsPropertyType WHERE alias = 'blocked') AND dataInt = 1"; - - var reader = Data.SqlHelper.ExecuteReader(blockedMembersQuery); - while (reader.Read()) { var memberId = reader.GetInt("contentNodeId"); returnValue = returnValue + "" + memberId + "
"; } - - //It's all good... - return returnValue; } - //Member not authorised or memberID passed in is not valid - return ""; + //It's all good... + return returnValue; } - } } diff --git a/OurUmbraco/Our/Utils.cs b/OurUmbraco/Our/Utils.cs index bd9f42ff..b45e7d69 100644 --- a/OurUmbraco/Our/Utils.cs +++ b/OurUmbraco/Our/Utils.cs @@ -6,6 +6,7 @@ using System.Text.RegularExpressions; using System.Web; using System.Web.Hosting; using System.Web.Security; +using umbraco.BusinessLogic; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Web; @@ -194,24 +195,26 @@ namespace OurUmbraco.Our public static List GetProjectContributors(int projectId) { - - - List projects = new List(); - - umbraco.DataLayer.IRecordsReader dr = Data.SqlHelper.ExecuteReader("SELECT * FROM projectContributors WHERE projectId = " + projectId); - - while (dr.Read()) + var projects = new List(); + using (var sqlHelper = Application.SqlHelper) + using (var recordsReader = sqlHelper.ExecuteReader("SELECT * FROM projectContributors WHERE projectId = @projectId ", sqlHelper.CreateParameter("@projectId", projectId))) { - projects.Add(dr.GetInt("memberId")); + while (recordsReader.Read()) + projects.Add(recordsReader.GetInt("memberId")); + + return projects; } - return projects; } public static bool IsProjectContributor(int memberId, int projectId) { - return ((Data.SqlHelper.ExecuteScalar("SELECT 1 FROM projectContributors WHERE projectId = @projectId and memberId = @memberId;", - Data.SqlHelper.CreateParameter("@projectId", projectId), - Data.SqlHelper.CreateParameter("@memberId", memberId)) > 0)); + using (var sqlHelper = Application.SqlHelper) + { + return sqlHelper.ExecuteScalar( + "SELECT 1 FROM projectContributors WHERE projectId = @projectId and memberId = @memberId;", + sqlHelper.CreateParameter("@projectId", projectId), + sqlHelper.CreateParameter("@memberId", memberId)) > 0; + } } public static string GetMemberAvatar(IPublishedContent member, int avatarSize, bool getRawUrl = false) @@ -254,7 +257,7 @@ namespace OurUmbraco.Our { if (HttpContext.Current.IsDebuggingEnabled == false) return screenshot; - + //NOTE: I guess the below is all to do with testing - even the random images i guess try diff --git a/OurUmbraco/Our/usercontrols/FileDownloadProxy.ascx.cs b/OurUmbraco/Our/usercontrols/FileDownloadProxy.ascx.cs index c9a54c94..29c717ae 100644 --- a/OurUmbraco/Our/usercontrols/FileDownloadProxy.ascx.cs +++ b/OurUmbraco/Our/usercontrols/FileDownloadProxy.ascx.cs @@ -8,21 +8,23 @@ namespace OurUmbraco.Our.usercontrols { protected void Page_Load(object sender, EventArgs e) { - if (Request["id"] != null) + if (Request["id"] == null) + return; + + var fileId = int.Parse(Request["id"]); + + var wikiFile = new WikiFile(fileId); + + wikiFile.UpdateDownloadCounter(false, wikiFile.FileType == "package"); + using (var sqlHelper = BL.Application.SqlHelper) { - var fileId = int.Parse(Request["id"]); + var path = sqlHelper.ExecuteScalar( + "Select path from wikiFiles where id = @id;", + sqlHelper.CreateParameter("@id", fileId)); - var wikiFile = new WikiFile(fileId); - - wikiFile.UpdateDownloadCounter(false, wikiFile.FileType == "package"); - - var path = BL.Application.SqlHelper.ExecuteScalar( - "Select path from wikiFiles where id = @id;", - BL.Application.SqlHelper.CreateParameter("@id", fileId)); - - var file = BL.Application.SqlHelper.ExecuteScalar( - "Select name from wikiFiles where id = @id;", - BL.Application.SqlHelper.CreateParameter("@id", fileId)); + var file = sqlHelper.ExecuteScalar( + "Select name from wikiFiles where id = @id;", + sqlHelper.CreateParameter("@id", fileId)); var fileinfo = new System.IO.FileInfo(Server.MapPath(path)); @@ -65,11 +67,11 @@ namespace OurUmbraco.Our.usercontrols } Response.Clear(); - + Response.AddHeader("Content-Disposition", "attachment; filename= " + MakeSafeFileName(file)); Response.AddHeader("Content-Length", fileinfo.Length.ToString()); Response.ContentType = type; - Response.WriteFile(path); + Response.WriteFile(path); } } diff --git a/OurUmbraco/Our/usercontrols/__Signup.ascx.cs b/OurUmbraco/Our/usercontrols/__Signup.ascx.cs index ef5e2da2..e674b8d1 100644 --- a/OurUmbraco/Our/usercontrols/__Signup.ascx.cs +++ b/OurUmbraco/Our/usercontrols/__Signup.ascx.cs @@ -156,7 +156,7 @@ namespace OurUmbraco.Our.usercontrols memberService.AssignRole(member.Id, "newaccount"); var redirectPage = "/"; - var contentService = UmbracoContext.Current.Application.Services.ContentService; + var contentService = ApplicationContext.Current.Services.ContentService; var rootNode = contentService.GetRootContent().OrderBy(x => x.SortOrder).First(x => x.ContentType.Alias == "Community"); var memberNode = rootNode.Children().FirstOrDefault(x => x.Name == "Member"); diff --git a/OurUmbraco/OurUmbraco.csproj b/OurUmbraco/OurUmbraco.csproj index e9c407ed..80d17797 100644 --- a/OurUmbraco/OurUmbraco.csproj +++ b/OurUmbraco/OurUmbraco.csproj @@ -403,6 +403,7 @@ + @@ -443,7 +444,6 @@ - diff --git a/OurUmbraco/Powers/Buddha/Buddha.cs b/OurUmbraco/Powers/Buddha/Buddha.cs index 6a0148a4..c3a5e3b9 100644 --- a/OurUmbraco/Powers/Buddha/Buddha.cs +++ b/OurUmbraco/Powers/Buddha/Buddha.cs @@ -1,7 +1,7 @@ using System; using System.IO; using System.Xml; -using umbraco.DataLayer; +using umbraco.BusinessLogic; namespace OurUmbraco.Powers.Buddha { @@ -11,7 +11,6 @@ namespace OurUmbraco.Powers.Buddha public string WebRoot { get; set; } private XmlDocument _config; - private ISqlHelper _sqlhelper; private Char sep = System.IO.Path.DirectorySeparatorChar; @@ -29,8 +28,6 @@ namespace OurUmbraco.Powers.Buddha if (!Directory.Exists(WebRoot + sep + karmaDir)) Directory.CreateDirectory(WebRoot + sep + karmaDir); - _sqlhelper = DataLayerHelper.CreateSqlHelper(ConnectionString); - _config = new XmlDocument(); _config.Load(WebRoot + sep + "config" + sep + "uPowers.config"); } @@ -55,13 +52,14 @@ namespace OurUmbraco.Powers.Buddha //here we do all the detail, and dig into each individual member public void CalculateKarmaHistory() { - string memberSql = "SELECT nodeId from cmsMember"; + const string memberSql = "SELECT nodeId from cmsMember"; - IRecordsReader rr = _sqlhelper.ExecuteReader(memberSql); - - while (rr.Read()) + using (var reader = Application.SqlHelper.ExecuteReader(memberSql)) { - ProcessMember( rr.GetInt("nodeId") ); + while (reader.Read()) + { + ProcessMember(reader.GetInt("nodeId")); + } } } @@ -81,15 +79,17 @@ namespace OurUmbraco.Powers.Buddha string forumTopics = "SELECT count(id) from forumTopics WHERE memberID = " + memberId.ToString(); string forumComments = "SELECT count(id) from forumComments WHERE memberID = " + memberId.ToString(); - int topicCount = _sqlhelper.ExecuteScalar(forumTopics); - int commentCount = _sqlhelper.ExecuteScalar(forumComments); - - XmlNode karma = doc.SelectSingleNode("//karma"); - XmlNode forum = umbraco.xmlHelper.addTextNode(doc, "forum",""); - forum.AppendChild( umbraco.xmlHelper.addTextNode(doc, "topics", topicCount.ToString())); - forum.AppendChild(umbraco.xmlHelper.addTextNode(doc, "comments", commentCount.ToString())); - karma.AppendChild(forum); + using (var sqlHelper = Application.SqlHelper) + { + int topicCount = sqlHelper.ExecuteScalar(forumTopics); + int commentCount = sqlHelper.ExecuteScalar(forumComments); + XmlNode karma = doc.SelectSingleNode("//karma"); + XmlNode forum = umbraco.xmlHelper.addTextNode(doc, "forum", ""); + forum.AppendChild(umbraco.xmlHelper.addTextNode(doc, "topics", topicCount.ToString())); + forum.AppendChild(umbraco.xmlHelper.addTextNode(doc, "comments", commentCount.ToString())); + karma.AppendChild(forum); + } if (File.Exists(memberKarmaFile)) File.Delete(memberKarmaFile); @@ -261,8 +261,6 @@ namespace OurUmbraco.Powers.Buddha public void Dispose() { _config = null; - _sqlhelper.Dispose(); - _sqlhelper = null; } #endregion diff --git a/OurUmbraco/Powers/BusinessLogic/Action.cs b/OurUmbraco/Powers/BusinessLogic/Action.cs index b5a6ee70..54ded936 100644 --- a/OurUmbraco/Powers/BusinessLogic/Action.cs +++ b/OurUmbraco/Powers/BusinessLogic/Action.cs @@ -1,12 +1,15 @@ using System; using System.Collections.Generic; using System.Xml; +using umbraco.BusinessLogic; -namespace OurUmbraco.Powers.BusinessLogic { - public class Action { +namespace OurUmbraco.Powers.BusinessLogic +{ + public class Action + { public string Alias { get; set; } public string TypeAlias { get; set; } - + public int PerformerReward { get; set; } public int ReceiverReward { get; set; } @@ -16,74 +19,88 @@ namespace OurUmbraco.Powers.BusinessLogic { public int MinimumReputation { get; set; } public bool Exists { get; private set; } - + private static int _minCommentLenght = 50; public string[] AllowedGroups { get; set; } - public string DataBaseTable { - get{ - return "powers" + TypeAlias; + public string DataBaseTable + { + get + { + return "powers" + TypeAlias; } } private Events _e = new Events(); - public bool Perform(int performer, int itemId, string comment) { + public bool Perform(int performer, int itemId, string comment) + { return Perform(performer, itemId, 0, comment); } - public void ClearVotes(int performer, int itemId) { - - Data.SqlHelper.ExecuteNonQuery("Delete FROM " + DataBaseTable + " WHERE memberId = @memberId AND id = @id", - Data.SqlHelper.CreateParameter("@memberId", performer), - Data.SqlHelper.CreateParameter("@id", itemId)); - + public void ClearVotes(int performer, int itemId) + { + using (var sqlHelper = Application.SqlHelper) + { + sqlHelper.ExecuteNonQuery( + "Delete FROM " + DataBaseTable + " WHERE memberId = @memberId AND id = @id", + sqlHelper.CreateParameter("@memberId", performer), + sqlHelper.CreateParameter("@id", itemId)); + } } - public bool Perform(int performer, int itemId, int receiver, string comment) { - - ActionEventArgs e = new ActionEventArgs(); - e.PerformerId = performer; - e.ItemId = itemId; - e.ReceiverId = receiver; - e.ActionType = TypeAlias; + public bool Perform(int performer, int itemId, int receiver, string comment) + { - FireBeforePerform(e); - - + ActionEventArgs e = new ActionEventArgs(); + e.PerformerId = performer; + e.ItemId = itemId; + e.ReceiverId = receiver; + e.ActionType = TypeAlias; - if (!e.Cancel) { + FireBeforePerform(e); - bool allowed = Allowed(performer, itemId, receiver, comment); - if (allowed) + + if (!e.Cancel) + { + + bool allowed = Allowed(performer, itemId, receiver, comment); + + if (allowed) + { + using (var sqlHelper = Application.SqlHelper) { - - Data.SqlHelper.ExecuteNonQuery("INSERT INTO " + DataBaseTable + "(id, memberId, points, receiverId, receiverPoints, performerPoints, comment) VALUES(@id, @memberId, @points, @receiverId, @receiverPoints, @performerPoints, @comment)", - Data.SqlHelper.CreateParameter("@id", e.ItemId), - Data.SqlHelper.CreateParameter("@table", DataBaseTable), - Data.SqlHelper.CreateParameter("@memberId", e.PerformerId), - Data.SqlHelper.CreateParameter("@points", Weight), - Data.SqlHelper.CreateParameter("@receiverid", e.ReceiverId), - Data.SqlHelper.CreateParameter("@receiverPoints", ReceiverReward), - Data.SqlHelper.CreateParameter("@performerPoints", PerformerReward), - Data.SqlHelper.CreateParameter("@comment", comment + " ") - ); - + sqlHelper.ExecuteNonQuery( + "INSERT INTO " + DataBaseTable + + "(id, memberId, points, receiverId, receiverPoints, performerPoints, comment) VALUES(@id, @memberId, @points, @receiverId, @receiverPoints, @performerPoints, @comment)", + sqlHelper.CreateParameter("@id", e.ItemId), + sqlHelper.CreateParameter("@table", DataBaseTable), + sqlHelper.CreateParameter("@memberId", e.PerformerId), + sqlHelper.CreateParameter("@points", Weight), + sqlHelper.CreateParameter("@receiverid", e.ReceiverId), + sqlHelper.CreateParameter("@receiverPoints", ReceiverReward), + sqlHelper.CreateParameter("@performerPoints", PerformerReward), + sqlHelper.CreateParameter("@comment", comment + " ") + ); + } + //the performer gets his share - if(PerformerReward != 0){ + if (PerformerReward != 0) + { Reputation r = new Reputation(e.PerformerId); - r.Current = (r.Current + (PerformerReward) ); - r.Total = (r.Total + (PerformerReward) ); + r.Current = (r.Current + (PerformerReward)); + r.Total = (r.Total + (PerformerReward)); r.Save(); } //And maybe the author of the item gets a cut as well.. - if (e.ReceiverId > 0 && ReceiverReward != 0) { + if (e.ReceiverId > 0 && ReceiverReward != 0) + { Reputation pr = new Reputation(e.ReceiverId); - pr.Current = (pr.Current + (ReceiverReward) ); + pr.Current = (pr.Current + (ReceiverReward)); pr.Total = (pr.Total + (ReceiverReward)); pr.Save(); } @@ -95,17 +112,23 @@ namespace OurUmbraco.Powers.BusinessLogic { { if (allowed) { - //make sure the extra receivers also get inserted (but no points for item and performer) - Data.SqlHelper.ExecuteNonQuery("INSERT INTO " + DataBaseTable + "(id, memberId, points, receiverId, receiverPoints, performerPoints, comment) VALUES(@id, @memberId, @points, @receiverId, @receiverPoints, @performerPoints, @comment)", - Data.SqlHelper.CreateParameter("@id", e.ItemId), - Data.SqlHelper.CreateParameter("@table", DataBaseTable), - Data.SqlHelper.CreateParameter("@memberId", e.PerformerId), - Data.SqlHelper.CreateParameter("@points", 0), - Data.SqlHelper.CreateParameter("@receiverid", r), - Data.SqlHelper.CreateParameter("@receiverPoints", ReceiverReward), - Data.SqlHelper.CreateParameter("@performerPoints", 0), - Data.SqlHelper.CreateParameter("@comment", comment + " ")); + using (var sqlHelper = Application.SqlHelper) + { + //make sure the extra receivers also get inserted (but no points for item and performer) + sqlHelper.ExecuteNonQuery( + "INSERT INTO " + DataBaseTable + + "(id, memberId, points, receiverId, receiverPoints, performerPoints, comment) VALUES(@id, @memberId, @points, @receiverId, @receiverPoints, @performerPoints, @comment)", + sqlHelper.CreateParameter("@id", e.ItemId), + sqlHelper.CreateParameter("@table", DataBaseTable), + sqlHelper.CreateParameter("@memberId", e.PerformerId), + sqlHelper.CreateParameter("@points", 0), + sqlHelper.CreateParameter("@receiverid", r), + sqlHelper.CreateParameter("@receiverPoints", ReceiverReward), + sqlHelper.CreateParameter("@performerPoints", 0), + sqlHelper.CreateParameter("@comment", comment + " ")); + } } + Reputation pr = new Reputation(r); pr.Current = (pr.Current + (ReceiverReward)); pr.Total = (pr.Total + (ReceiverReward)); @@ -122,47 +145,54 @@ namespace OurUmbraco.Powers.BusinessLogic { return false; } - public bool Allowed(int performer, int id, int receiver, string comment) { - if (performer > 0 && (!MandatoryComment || (MandatoryComment && comment.Length >= _minCommentLenght) )) { - - + public bool Allowed(int performer, int id, int receiver, string comment) + { + if (performer > 0 && (!MandatoryComment || (MandatoryComment && comment.Length >= _minCommentLenght))) + { if (AllowedGroups != null && AllowedGroups.Length > 0) { - bool allowed = false; - foreach(string group in AllowedGroups) - if(Library.Utils.IsMemberInGroup(group, performer)){ + var allowed = false; + foreach (var group in AllowedGroups) + if (Library.Utils.IsMemberInGroup(group, performer)) + { allowed = true; break; } - if(!allowed) + if (!allowed) return false; } + var reputation = new Reputation(performer); + using (var sqlHelper = Application.SqlHelper) + { + var doneBefore = sqlHelper.ExecuteScalar( + "SELECT count(id) from " + DataBaseTable + + " WHERE id = @id and memberId = @memberId", + sqlHelper.CreateParameter("@id", id), + sqlHelper.CreateParameter("@memberId", performer) + ) > 0; - Reputation r = new Reputation(performer); - - bool doneBefore = Data.SqlHelper.ExecuteScalar("SELECT count(id) from " + DataBaseTable + " WHERE id = @id and memberId = @memberId", - Data.SqlHelper.CreateParameter("@id", id), - Data.SqlHelper.CreateParameter("@memberId", performer) - ) > 0; + return MinimumReputation <= reputation.Current && !doneBefore && performer != receiver; + } + } - return ( (MinimumReputation <= r.Current) && !doneBefore && performer != receiver); - } else - return false; + return false; } - public Action(string alias) { + public Action(string alias) + { XmlNode x = config.GetKeyAsNode("/configuration/actions/action [@alias = '" + alias + "']"); - if (x != null) { - Weight = int.Parse( x.Attributes.GetNamedItem("weight" ).Value); + if (x != null) + { + Weight = int.Parse(x.Attributes.GetNamedItem("weight").Value); ReceiverReward = int.Parse(x.Attributes.GetNamedItem("receiverReward").Value); PerformerReward = int.Parse(x.Attributes.GetNamedItem("performerReward").Value); MinimumReputation = int.Parse(x.Attributes.GetNamedItem("minReputation").Value); Alias = x.Attributes.GetNamedItem("alias").Value; TypeAlias = x.Attributes.GetNamedItem("type").Value; - + bool _mandatoryComment = false; if (x.Attributes.GetNamedItem("mandatoryComment") != null) @@ -174,16 +204,19 @@ namespace OurUmbraco.Powers.BusinessLogic { MandatoryComment = _mandatoryComment; Exists = true; - } else - Exists = false; + } + + Exists = false; } - public static List GetAllActions() { + public static List GetAllActions() + { XmlNode x = config.GetKeyAsNode("/configuration/actions"); - List l = new List(); - foreach (XmlNode cx in x.ChildNodes) { + List l = new List(); + foreach (XmlNode cx in x.ChildNodes) + { if (cx.Attributes.GetNamedItem("alias") != null) - l.Add( new Action( cx.Attributes.GetNamedItem("alias").Value )); + l.Add(new Action(cx.Attributes.GetNamedItem("alias").Value)); } return l; @@ -191,11 +224,13 @@ namespace OurUmbraco.Powers.BusinessLogic { /* EVENTS */ public static event EventHandler BeforePerform; - protected virtual void FireBeforePerform(ActionEventArgs e) { + protected virtual void FireBeforePerform(ActionEventArgs e) + { _e.FireCancelableEvent(BeforePerform, this, e); } public static event EventHandler AfterPerform; - protected virtual void FireAfterPerform(ActionEventArgs e) { + protected virtual void FireAfterPerform(ActionEventArgs e) + { if (AfterPerform != null) AfterPerform(this, e); } diff --git a/OurUmbraco/Powers/BusinessLogic/Data.cs b/OurUmbraco/Powers/BusinessLogic/Data.cs index d8ccb76c..4de940ea 100644 --- a/OurUmbraco/Powers/BusinessLogic/Data.cs +++ b/OurUmbraco/Powers/BusinessLogic/Data.cs @@ -4,29 +4,12 @@ using System.Data; using System.Data.SqlClient; using System.Xml; using System.Xml.XPath; -using umbraco.DataLayer; namespace OurUmbraco.Powers.BusinessLogic { public class Data { private static string _ConnString = umbraco.GlobalSettings.DbDSN; - private static ISqlHelper _sqlHelper; - - /// - /// Gets the SQL helper. - /// - /// The SQL helper. - public static ISqlHelper SqlHelper { - get { - if (_sqlHelper == null) { - try { - _sqlHelper = DataLayerHelper.CreateSqlHelper(_ConnString); - } catch { } - } - return _sqlHelper; - } - } - + public static XmlNode GetDataSetAsNode(string connectionstring, string sql, string elementName) { try diff --git a/OurUmbraco/Powers/Library/Utils.cs b/OurUmbraco/Powers/Library/Utils.cs index 10d3e7be..4b18a8fe 100644 --- a/OurUmbraco/Powers/Library/Utils.cs +++ b/OurUmbraco/Powers/Library/Utils.cs @@ -1,4 +1,5 @@ -using umbraco.cms.businesslogic.member; +using umbraco.BusinessLogic; +using umbraco.cms.businesslogic.member; namespace OurUmbraco.Powers.Library { @@ -26,8 +27,14 @@ namespace OurUmbraco.Powers.Library public static bool HasVoted(int memberId, int id, string dataBaseTable) { - return (BusinessLogic.Data.SqlHelper.ExecuteScalar("SELECT count(points) FROM " + dataBaseTable + " WHERE (id = @id) AND (memberId = @memberId)", - BusinessLogic.Data.SqlHelper.CreateParameter("@id", id), BusinessLogic.Data.SqlHelper.CreateParameter("@memberId", memberId)) > 0); + using (var sqlHelper = Application.SqlHelper) + { + return sqlHelper.ExecuteScalar( + "SELECT count(points) FROM " + dataBaseTable + + " WHERE (id = @id) AND (memberId = @memberId)", + sqlHelper.CreateParameter("@id", id), + sqlHelper.CreateParameter("@memberId", memberId)) > 0; + } } } } diff --git a/OurUmbraco/Powers/Library/xslt.cs b/OurUmbraco/Powers/Library/xslt.cs index 1e37e30d..d4bf78c7 100644 --- a/OurUmbraco/Powers/Library/xslt.cs +++ b/OurUmbraco/Powers/Library/xslt.cs @@ -1,6 +1,7 @@ using System.Xml; using System.Xml.XPath; using OurUmbraco.Powers.BusinessLogic; +using umbraco.BusinessLogic; namespace OurUmbraco.Powers.Library { [Umbraco.Core.Macros.XsltExtension("uPowers")] @@ -46,28 +47,28 @@ namespace OurUmbraco.Powers.Library { } public static int Score(int id, string dataBaseTable) { - return BusinessLogic.Data.SqlHelper.ExecuteScalar("SELECT SUM(points) AS count FROM " + dataBaseTable + " WHERE (id = @id)", - BusinessLogic.Data.SqlHelper.CreateParameter("@id", id)); + return Application.SqlHelper.ExecuteScalar("SELECT SUM(points) AS count FROM " + dataBaseTable + " WHERE (id = @id)", + Application.SqlHelper.CreateParameter("@id", id)); } public static bool HasVoted(int memberId, int id, string dataBaseTable) { - return (BusinessLogic.Data.SqlHelper.ExecuteScalar("SELECT count(points) FROM " + dataBaseTable + " WHERE (id = @id) AND (memberId = @memberId)", - BusinessLogic.Data.SqlHelper.CreateParameter("@id", id), BusinessLogic.Data.SqlHelper.CreateParameter("@memberId", memberId)) > 0); + return (Application.SqlHelper.ExecuteScalar("SELECT count(points) FROM " + dataBaseTable + " WHERE (id = @id) AND (memberId = @memberId)", + Application.SqlHelper.CreateParameter("@id", id), Application.SqlHelper.CreateParameter("@memberId", memberId)) > 0); } public static int YourVote(int memberId, int id, string dataBaseTable) { - return BusinessLogic.Data.SqlHelper.ExecuteScalar("SELECT sum(points) FROM " + dataBaseTable + " WHERE (id = @id) AND (memberId = @memberId)", - BusinessLogic.Data.SqlHelper.CreateParameter("@id", id), BusinessLogic.Data.SqlHelper.CreateParameter("@memberId", memberId)); + return Application.SqlHelper.ExecuteScalar("SELECT sum(points) FROM " + dataBaseTable + " WHERE (id = @id) AND (memberId = @memberId)", + Application.SqlHelper.CreateParameter("@id", id), Application.SqlHelper.CreateParameter("@memberId", memberId)); } public static int GetExternalUrlData(int memberId, string url) { // get the Item Id of the Url - var id = BusinessLogic.Data.SqlHelper.ExecuteScalar("SELECT id FROM externalUrls WHERE (@url = url)", BusinessLogic.Data.SqlHelper.CreateParameter("@url", url)); + var id = Application.SqlHelper.ExecuteScalar("SELECT id FROM externalUrls WHERE (@url = url)", Application.SqlHelper.CreateParameter("@url", url)); // doesn't exist ... then create a new entry if (id == 0) - id = BusinessLogic.Data.SqlHelper.ExecuteScalar("INSERT INTO externalUrls (memberId, url) VALUES (@memberId, @url); SELECT SCOPE_IDENTITY()", BusinessLogic.Data.SqlHelper.CreateParameter("@memberId", memberId), BusinessLogic.Data.SqlHelper.CreateParameter("@url", url)); + id = Application.SqlHelper.ExecuteScalar("INSERT INTO externalUrls (memberId, url) VALUES (@memberId, @url); SELECT SCOPE_IDENTITY()", Application.SqlHelper.CreateParameter("@memberId", memberId), Application.SqlHelper.CreateParameter("@url", url)); return id; } @@ -82,7 +83,7 @@ namespace OurUmbraco.Powers.Library { return true; // check if member has already voted for the Url - return (BusinessLogic.Data.SqlHelper.ExecuteScalar("SELECT count(points) FROM powersExternal WHERE (id = @id) AND (memberId = @memberId)", BusinessLogic.Data.SqlHelper.CreateParameter("@id", itemId), BusinessLogic.Data.SqlHelper.CreateParameter("@memberId", memberId)) > 0); + return (Application.SqlHelper.ExecuteScalar("SELECT count(points) FROM powersExternal WHERE (id = @id) AND (memberId = @memberId)", Application.SqlHelper.CreateParameter("@id", itemId), Application.SqlHelper.CreateParameter("@memberId", memberId)) > 0); } } } diff --git a/OurUmbraco/Project/ProjectFileUploadHandler.cs b/OurUmbraco/Project/ProjectFileUploadHandler.cs index 879e1469..baff4021 100644 --- a/OurUmbraco/Project/ProjectFileUploadHandler.cs +++ b/OurUmbraco/Project/ProjectFileUploadHandler.cs @@ -5,6 +5,7 @@ using OurUmbraco.MarketPlace.Interfaces; using OurUmbraco.Our; using OurUmbraco.Wiki.BusinessLogic; using umbraco.cms.businesslogic.member; +using Umbraco.Core; using Umbraco.Core.Logging; using Umbraco.Web; @@ -61,7 +62,7 @@ namespace OurUmbraco.Project var packageFileType = (FileType)Enum.Parse(typeof(FileType), (string)fileType , true); // TODO: Don't know how else to get the bloody version - var version = UmbracoContext.Current.Application.Services.ContentService.GetById(p.Id).Version; + var version = ApplicationContext.Current.Services.ContentService.GetById(p.Id).Version; mediaProvider.CreateFile(fileName, version, mem.UniqueId, file, packageFileType, v, dotNetVersion, trust); } else { diff --git a/OurUmbraco/Wiki/Api/WikiController.cs b/OurUmbraco/Wiki/Api/WikiController.cs index 90971830..ab9409bf 100644 --- a/OurUmbraco/Wiki/Api/WikiController.cs +++ b/OurUmbraco/Wiki/Api/WikiController.cs @@ -2,6 +2,7 @@ using System.Web.Http; using OurUmbraco.Wiki.BusinessLogic; using OurUmbraco.Wiki.Library; +using umbraco.BusinessLogic; using umbraco.cms.businesslogic.web; using Umbraco.Web.WebApi; @@ -161,10 +162,13 @@ namespace OurUmbraco.Wiki.Api [HttpGet] public void ClearHelpRequests(string section, string applicationPage) { - Data.SqlHelper.ExecuteNonQuery( - "Delete from wikiHelpRequest where section = @section and applicationPage = @applicationPage", - Data.SqlHelper.CreateParameter("@section", section), - Data.SqlHelper.CreateParameter("@applicationPage", applicationPage)); + using (var sqlHelper = Application.SqlHelper) + { + sqlHelper.ExecuteNonQuery( + "Delete from wikiHelpRequest where section = @section and applicationPage = @applicationPage", + sqlHelper.CreateParameter("@section", section), + sqlHelper.CreateParameter("@applicationPage", applicationPage)); + } } } } diff --git a/OurUmbraco/Wiki/BusinessLogic/Data.cs b/OurUmbraco/Wiki/BusinessLogic/Data.cs index 243f32cd..ef147bfc 100644 --- a/OurUmbraco/Wiki/BusinessLogic/Data.cs +++ b/OurUmbraco/Wiki/BusinessLogic/Data.cs @@ -4,27 +4,13 @@ using System.Data; using System.Data.SqlClient; using System.Xml; using System.Xml.XPath; -using umbraco.DataLayer; namespace OurUmbraco.Wiki.BusinessLogic { public class Data { - - private static string _ConnString = umbraco.GlobalSettings.DbDSN; - private static ISqlHelper _sqlHelper; - - /// - /// Gets the SQL helper. - /// - /// The SQL helper. - public static ISqlHelper SqlHelper - { - get { return _sqlHelper ?? (_sqlHelper = DataLayerHelper.CreateSqlHelper(_ConnString)); } - } - - + public static XmlNode GetDataSetAsNode(string sql, string elementName) { try { - DataSet ds = getDataSetFromSql(_ConnString, sql, elementName); + DataSet ds = getDataSetFromSql(umbraco.GlobalSettings.DbDSN, sql, elementName); XmlDataDocument dataDoc = new XmlDataDocument(ds); return (XmlNode)dataDoc; } catch (Exception e) { @@ -55,6 +41,7 @@ namespace OurUmbraco.Wiki.BusinessLogic { adapter.Fill(ds, tableName); } finally { con.Close(); + con.Dispose(); } return ds; } diff --git a/OurUmbraco/Wiki/BusinessLogic/WikiFile.cs b/OurUmbraco/Wiki/BusinessLogic/WikiFile.cs index c97d6338..f9da9d23 100644 --- a/OurUmbraco/Wiki/BusinessLogic/WikiFile.cs +++ b/OurUmbraco/Wiki/BusinessLogic/WikiFile.cs @@ -4,7 +4,6 @@ using System.IO; using System.Linq; using System.Web; using System.Xml; -using OurUmbraco.MarketPlace.Interfaces; using OurUmbraco.Wiki.Extensions; using umbraco.BusinessLogic; using umbraco.cms.businesslogic; @@ -44,7 +43,11 @@ namespace OurUmbraco.Wiki.BusinessLogic if (File.Exists(HttpContext.Current.Server.MapPath(Path))) File.Delete(HttpContext.Current.Server.MapPath(Path)); - Application.SqlHelper.ExecuteNonQuery("DELETE FROM wikiFiles where ID = @id", Application.SqlHelper.CreateParameter("@id", Id)); + using (var sqlHelper = Application.SqlHelper) + { + sqlHelper.ExecuteNonQuery("DELETE FROM wikiFiles where ID = @id", + sqlHelper.CreateParameter("@id", Id)); + } } /// @@ -107,15 +110,18 @@ namespace OurUmbraco.Wiki.BusinessLogic { var wikiFiles = new List(); - using (var reader = Application.SqlHelper.ExecuteReader("SELECT id FROM wikiFiles WHERE nodeId = @nodeid", Application.SqlHelper.CreateParameter("@nodeId", nodeId))) + using (var sqlHelper = Application.SqlHelper) + using (var reader = sqlHelper.ExecuteReader("SELECT id FROM wikiFiles WHERE nodeId = @nodeid", sqlHelper.CreateParameter("@nodeId", nodeId))) { - while (reader.Read()) - wikiFiles.Add(new WikiFile(reader.GetInt("id"))); + { + while (reader.Read()) + wikiFiles.Add(new WikiFile(reader.GetInt("id"))); - return wikiFiles; + return wikiFiles; + } } } - + private readonly Events _events = new Events(); private WikiFile() { } @@ -150,7 +156,7 @@ namespace OurUmbraco.Wiki.BusinessLogic Verified = false, DotNetVersion = dotNetVersion }; - + var path = string.Format("/media/wiki/{0}", content.Id); if (Directory.Exists(HttpContext.Current.Server.MapPath(path)) == false) @@ -201,18 +207,18 @@ namespace OurUmbraco.Wiki.BusinessLogic if (content != null) { var wikiFile = new WikiFile - { - Name = fileName, - NodeId = content.Id, - NodeVersion = content.Version, - FileType = filetype, - CreatedBy = member.Id, - Downloads = 0, - Archived = false, - Versions = versions, - Version = versions[0], - Verified = false - }; + { + Name = fileName, + NodeId = content.Id, + NodeVersion = content.Version, + FileType = filetype, + CreatedBy = member.Id, + Downloads = 0, + Archived = false, + Versions = versions, + Version = versions[0], + Verified = false + }; wikiFile.SetMinimumUmbracoVersion(); var path = string.Format("/media/wiki/{0}", content.Id); @@ -249,26 +255,32 @@ namespace OurUmbraco.Wiki.BusinessLogic if (e.Cancel) return; - Application.SqlHelper.ExecuteNonQuery( - "INSERT INTO wikiFiles (path, name, createdBy, nodeId, version, type, downloads, archived, umbracoVersion, verified, dotNetVersion, minimumVersionStrict) VALUES(@path, @name, @createdBy, @nodeId, @nodeVersion, @type, @downloads, @archived, @umbracoVersion, @verified, @dotNetVersion, @minimumVersionStrict)", - Application.SqlHelper.CreateParameter("@path", Path), - Application.SqlHelper.CreateParameter("@name", Name), - Application.SqlHelper.CreateParameter("@createdBy", CreatedBy), - Application.SqlHelper.CreateParameter("@nodeId", NodeId), - Application.SqlHelper.CreateParameter("@type", FileType), - Application.SqlHelper.CreateParameter("@nodeVersion", NodeVersion), - Application.SqlHelper.CreateParameter("@downloads", Downloads), - Application.SqlHelper.CreateParameter("@archived", Archived), - Application.SqlHelper.CreateParameter("@umbracoVersion", ToVersionString(Versions)), - Application.SqlHelper.CreateParameter("@verified", Verified), - Application.SqlHelper.CreateParameter("@dotNetVersion", string.IsNullOrWhiteSpace(DotNetVersion) ? "" : DotNetVersion), - Application.SqlHelper.CreateParameter("@minimumVersionStrict", string.IsNullOrWhiteSpace(MinimumVersionStrict) ? "" : MinimumVersionStrict) + using (var sqlHelper = Application.SqlHelper) + { + sqlHelper.ExecuteNonQuery( + "INSERT INTO wikiFiles (path, name, createdBy, nodeId, version, type, downloads, archived, umbracoVersion, verified, dotNetVersion, minimumVersionStrict) VALUES(@path, @name, @createdBy, @nodeId, @nodeVersion, @type, @downloads, @archived, @umbracoVersion, @verified, @dotNetVersion, @minimumVersionStrict)", + sqlHelper.CreateParameter("@path", Path), + sqlHelper.CreateParameter("@name", Name), + sqlHelper.CreateParameter("@createdBy", CreatedBy), + sqlHelper.CreateParameter("@nodeId", NodeId), + sqlHelper.CreateParameter("@type", FileType), + sqlHelper.CreateParameter("@nodeVersion", NodeVersion), + sqlHelper.CreateParameter("@downloads", Downloads), + sqlHelper.CreateParameter("@archived", Archived), + sqlHelper.CreateParameter("@umbracoVersion", ToVersionString(Versions)), + sqlHelper.CreateParameter("@verified", Verified), + sqlHelper.CreateParameter("@dotNetVersion", + string.IsNullOrWhiteSpace(DotNetVersion) ? "" : DotNetVersion), + sqlHelper.CreateParameter("@minimumVersionStrict", + string.IsNullOrWhiteSpace(MinimumVersionStrict) ? "" : MinimumVersionStrict) ); - CreateDate = DateTime.Now; - - Id = Application.SqlHelper.ExecuteScalar("SELECT MAX(id) FROM wikiFiles WHERE createdBy = @createdBy", Application.SqlHelper.CreateParameter("@createdBy", CreatedBy)); + CreateDate = DateTime.Now; + Id = sqlHelper.ExecuteScalar( + "SELECT MAX(id) FROM wikiFiles WHERE createdBy = @createdBy", + sqlHelper.CreateParameter("@createdBy", CreatedBy)); + } FireAfterCreate(e); } else @@ -279,23 +291,27 @@ namespace OurUmbraco.Wiki.BusinessLogic if (e.Cancel) return; - Application.SqlHelper.ExecuteNonQuery( - "UPDATE wikiFiles SET path = @path, name = @name, type = @type, [current] = @current, removedBy = @removedBy, version = @version, downloads = @downloads, archived = @archived, umbracoVersion = @umbracoVersion, verified = @verified, dotNetVersion = @dotNetVersion, minimumVersionStrict = @minimumVersionStrict WHERE id = @id", - Application.SqlHelper.CreateParameter("@path", Path), - Application.SqlHelper.CreateParameter("@name", Name), - Application.SqlHelper.CreateParameter("@type", FileType), - Application.SqlHelper.CreateParameter("@current", Current), - Application.SqlHelper.CreateParameter("@removedBy", RemovedBy), - Application.SqlHelper.CreateParameter("@version", NodeVersion), - Application.SqlHelper.CreateParameter("@id", Id), - Application.SqlHelper.CreateParameter("@downloads", Downloads), - Application.SqlHelper.CreateParameter("@archived", Archived), - Application.SqlHelper.CreateParameter("@umbracoVersion", ToVersionString(Versions)), - Application.SqlHelper.CreateParameter("@verified", Verified), - Application.SqlHelper.CreateParameter("@dotNetVersion", string.IsNullOrWhiteSpace(DotNetVersion) ? "" : DotNetVersion), - Application.SqlHelper.CreateParameter("@minimumVersionStrict", string.IsNullOrWhiteSpace(MinimumVersionStrict) ? "" : MinimumVersionStrict) + using (var sqlHelper = Application.SqlHelper) + { + sqlHelper.ExecuteNonQuery( + "UPDATE wikiFiles SET path = @path, name = @name, type = @type, [current] = @current, removedBy = @removedBy, version = @version, downloads = @downloads, archived = @archived, umbracoVersion = @umbracoVersion, verified = @verified, dotNetVersion = @dotNetVersion, minimumVersionStrict = @minimumVersionStrict WHERE id = @id", + sqlHelper.CreateParameter("@path", Path), + sqlHelper.CreateParameter("@name", Name), + sqlHelper.CreateParameter("@type", FileType), + sqlHelper.CreateParameter("@current", Current), + sqlHelper.CreateParameter("@removedBy", RemovedBy), + sqlHelper.CreateParameter("@version", NodeVersion), + sqlHelper.CreateParameter("@id", Id), + sqlHelper.CreateParameter("@downloads", Downloads), + sqlHelper.CreateParameter("@archived", Archived), + sqlHelper.CreateParameter("@umbracoVersion", ToVersionString(Versions)), + sqlHelper.CreateParameter("@verified", Verified), + sqlHelper.CreateParameter("@dotNetVersion", + string.IsNullOrWhiteSpace(DotNetVersion) ? "" : DotNetVersion), + sqlHelper.CreateParameter("@minimumVersionStrict", + string.IsNullOrWhiteSpace(MinimumVersionStrict) ? "" : MinimumVersionStrict) ); - + } FireAfterUpdate(e); } } @@ -317,26 +333,29 @@ namespace OurUmbraco.Wiki.BusinessLogic { try { - //try find one based on the specific version first - var id = Application.SqlHelper.ExecuteScalar( - "Select TOP 1 id from wikiFiles where nodeId = @nodeid and type = @packageType and (umbracoVersion like @umbracoVersion) ORDER BY createDate DESC", - Application.SqlHelper.CreateParameter("@nodeid", nodeid), - Application.SqlHelper.CreateParameter("@packageType", fileType), - Application.SqlHelper.CreateParameter("@umbracoVersion", "%" + umbracoVersion + "%") + using (var sqlHelper = Application.SqlHelper) + { + //try find one based on the specific version first + var id = sqlHelper.ExecuteScalar( + "Select TOP 1 id from wikiFiles where nodeId = @nodeid and type = @packageType and (umbracoVersion like @umbracoVersion) ORDER BY createDate DESC", + sqlHelper.CreateParameter("@nodeid", nodeid), + sqlHelper.CreateParameter("@packageType", fileType), + sqlHelper.CreateParameter("@umbracoVersion", "%" + umbracoVersion + "%") ); - if (id > 0) - return new WikiFile(id); + if (id > 0) + return new WikiFile(id); - //if a version specific file wasnt found try and find one based on nan - id = Application.SqlHelper.ExecuteScalar( - "Select TOP 1 id from wikiFiles where nodeId = @nodeid and type = @packageType and (umbracoVersion like '%nan%') ORDER BY createDate DESC", - Application.SqlHelper.CreateParameter("@nodeid", nodeid), - Application.SqlHelper.CreateParameter("@packageType", fileType) + //if a version specific file wasnt found try and find one based on nan + id = sqlHelper.ExecuteScalar( + "Select TOP 1 id from wikiFiles where nodeId = @nodeid and type = @packageType and (umbracoVersion like '%nan%') ORDER BY createDate DESC", + sqlHelper.CreateParameter("@nodeid", nodeid), + sqlHelper.CreateParameter("@packageType", fileType) ); - if (id > 0) - return new WikiFile(id); + if (id > 0) + return new WikiFile(id); + } } catch { @@ -348,34 +367,36 @@ namespace OurUmbraco.Wiki.BusinessLogic public WikiFile(int id) { - using (var reader = Application.SqlHelper.ExecuteReader("SELECT * FROM wikiFiles WHERE id = @fileId", - Application.SqlHelper.CreateParameter("@fileId", id))) + using (var sqlHelper = Application.SqlHelper) + using (var reader = sqlHelper.ExecuteReader("SELECT * FROM wikiFiles WHERE id = @fileId", sqlHelper.CreateParameter("@fileId", id))) { - if (reader.Read()) { - Id = reader.GetInt("id"); - Path = reader.GetString("path"); - Name = reader.GetString("name"); - FileType = reader.GetString("type"); - RemovedBy = reader.GetInt("removedBy"); - CreatedBy = reader.GetInt("createdBy"); - NodeVersion = reader.GetGuid("version"); - NodeId = reader.GetInt("nodeId"); - CreateDate = reader.GetDateTime("createDate"); - Current = reader.GetBoolean("current"); - Downloads = reader.GetInt("downloads"); - Archived = reader.GetBoolean("archived"); - Verified = reader.GetBoolean("verified"); - DotNetVersion = reader.GetString("dotNetVersion"); - Versions = GetVersionsFromString(reader.GetString("umbracoVersion")); - Version = Versions.Any() - ? GetVersionsFromString(reader.GetString("umbracoVersion"))[0] - : UmbracoVersion.DefaultVersion(); - MinimumVersionStrict = reader.GetString("minimumVersionStrict"); - } - else - { - throw new ArgumentException(string.Format("No node exists with id '{0}'", Id)); + if (reader.Read()) + { + Id = reader.GetInt("id"); + Path = reader.GetString("path"); + Name = reader.GetString("name"); + FileType = reader.GetString("type"); + RemovedBy = reader.GetInt("removedBy"); + CreatedBy = reader.GetInt("createdBy"); + NodeVersion = reader.GetGuid("version"); + NodeId = reader.GetInt("nodeId"); + CreateDate = reader.GetDateTime("createDate"); + Current = reader.GetBoolean("current"); + Downloads = reader.GetInt("downloads"); + Archived = reader.GetBoolean("archived"); + Verified = reader.GetBoolean("verified"); + DotNetVersion = reader.GetString("dotNetVersion"); + Versions = GetVersionsFromString(reader.GetString("umbracoVersion")); + Version = Versions.Any() + ? GetVersionsFromString(reader.GetString("umbracoVersion"))[0] + : UmbracoVersion.DefaultVersion(); + MinimumVersionStrict = reader.GetString("minimumVersionStrict"); + } + else + { + throw new ArgumentException(string.Format("No node exists with id '{0}'", Id)); + } } } } @@ -424,37 +445,46 @@ namespace OurUmbraco.Wiki.BusinessLogic var downloads = 0; var projectId = 0; - var reader = Application.SqlHelper.ExecuteReader("Select downloads, nodeId from wikiFiles where id = @id;", Application.SqlHelper.CreateParameter("@id", fileId)); - if (reader.Read()) + using (var sqlHelper = Application.SqlHelper) { - downloads = reader.GetInt("downloads"); - projectId = reader.GetInt("nodeId"); - } - downloads = downloads + 1; + using (var reader = sqlHelper.ExecuteReader("Select downloads, nodeId from wikiFiles where id = @id;", sqlHelper.CreateParameter("@id", fileId))) + { + if (reader.Read()) + { + downloads = reader.GetInt("downloads"); + projectId = reader.GetInt("nodeId"); + } + } - Application.SqlHelper.ExecuteNonQuery( - "update wikiFiles set downloads = @downloads where id = @id;", - Application.SqlHelper.CreateParameter("@id", fileId), - Application.SqlHelper.CreateParameter("@downloads", downloads)); + downloads = downloads + 1; - var totalDownloads = Application.SqlHelper.ExecuteScalar("Select SUM(downloads) from wikiFiles where nodeId = @projectId;", Application.SqlHelper.CreateParameter("@projectId", projectId)); - - if (isPackage) - { - var memberHelper = new Umbraco.Web.Security.MembershipHelper(Umbraco.Web.UmbracoContext.Current); - var memberId = memberHelper.GetCurrentMemberId(); - var currentMemberId = memberId == -1 ? 0 : memberId; + sqlHelper.ExecuteNonQuery( + "update wikiFiles set downloads = @downloads where id = @id;", + sqlHelper.CreateParameter("@id", fileId), + sqlHelper.CreateParameter("@downloads", downloads)); - //update download count update - Application.SqlHelper.ExecuteNonQuery( - @"insert into projectDownload(projectId,memberId,timestamp) + var totalDownloads = + sqlHelper.ExecuteScalar( + "Select SUM(downloads) from wikiFiles where nodeId = @projectId;", + sqlHelper.CreateParameter("@projectId", projectId)); + + if (isPackage) + { + var memberHelper = new Umbraco.Web.Security.MembershipHelper(Umbraco.Web.UmbracoContext.Current); + var memberId = memberHelper.GetCurrentMemberId(); + var currentMemberId = memberId == -1 ? 0 : memberId; + + //update download count update + sqlHelper.ExecuteNonQuery( + @"insert into projectDownload(projectId,memberId,timestamp) values((select nodeId from wikiFiles where id = @id) ,@memberId, getdate())", - Application.SqlHelper.CreateParameter("@id", fileId), - Application.SqlHelper.CreateParameter("@memberId", currentMemberId)); - } + sqlHelper.CreateParameter("@id", fileId), + sqlHelper.CreateParameter("@memberId", currentMemberId)); + } - var e = new FileDownloadUpdateEventArgs { ProjectId = projectId, Downloads = totalDownloads }; - FireAfterDownloadUpdate(e); + var e = new FileDownloadUpdateEventArgs { ProjectId = projectId, Downloads = totalDownloads }; + FireAfterDownloadUpdate(e); + } cookie = new HttpCookie("ProjectFileDownload" + fileId) { Expires = DateTime.Now.AddHours(1) }; HttpContext.Current.Response.Cookies.Add(cookie); diff --git a/OurUmbraco/Wiki/BusinessLogic/WikiHelpRequest.cs b/OurUmbraco/Wiki/BusinessLogic/WikiHelpRequest.cs index 93f191a6..6e939531 100644 --- a/OurUmbraco/Wiki/BusinessLogic/WikiHelpRequest.cs +++ b/OurUmbraco/Wiki/BusinessLogic/WikiHelpRequest.cs @@ -35,22 +35,24 @@ namespace OurUmbraco.Wiki.BusinessLogic public void Save() { - HelpRequestEventArgs e = new HelpRequestEventArgs(); + var helpRequestEventArgs = new HelpRequestEventArgs(); - FireBeforeSave(e); + FireBeforeSave(helpRequestEventArgs); - if (!e.Cancel) + if (helpRequestEventArgs.Cancel) + return; + + using (var sqlHelper = umbraco.BusinessLogic.Application.SqlHelper) { - Data.SqlHelper.ExecuteNonQuery( - "INSERT INTO wikiHelpRequest (section, application, applicationPage, url) VALUES(@section, @application, @applicationPage, @url)", - Data.SqlHelper.CreateParameter("@section", Section), - Data.SqlHelper.CreateParameter("@application", Application), - Data.SqlHelper.CreateParameter("@applicationPage", ApplicationPage), - Data.SqlHelper.CreateParameter("@url", Url)); + sqlHelper.ExecuteNonQuery( + "INSERT INTO wikiHelpRequest (section, application, applicationPage, url) VALUES(@section, @application, @applicationPage, @url)", + sqlHelper.CreateParameter("@section", Section), + sqlHelper.CreateParameter("@application", Application), + sqlHelper.CreateParameter("@applicationPage", ApplicationPage), + sqlHelper.CreateParameter("@url", Url)); - FireAfterSave(e); + FireAfterSave(helpRequestEventArgs); } - } private Events _e = new Events();