Merge branch 'master' into move-masterpages-to-views

# Conflicts:
#	OurUmbraco.Site/OurUmbraco.Site.csproj
#	OurUmbraco.Site/masterpages/UmbracoMVP2011.master
#	OurUmbraco/Our/MigrationsHandler.cs
#	OurUmbraco/OurUmbraco.csproj
This commit is contained in:
Sebastiaan Janssen
2016-11-27 13:38:53 +01:00
44 changed files with 665 additions and 897 deletions
-1
View File
@@ -4141,7 +4141,6 @@
<Content Include="macroScripts\TwitterSearch.cshtml" />
<Content Include="macroScripts\SwitchForumEditor.cshtml" />
<Content Include="macroScripts\ManageSpam.cshtml" />
<Content Include="macroScripts\ProjectsVersioned.cshtml" />
<Content Include="macroScripts\ProjectsVersionList.cshtml" />
<Content Include="macroScripts\EditProjectCompatibility.cshtml" />
<Content Include="macroScripts\EventsOverview.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)
+6 -4
View File
@@ -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);
}
@@ -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<UmbracoProject>();
foreach (var projectGroup in projectGroups)
{
foreach (var project in projectGroup.Children)
{
if (project.projectLive)
{
var versionsList = new List<int>();
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)
{
<div class="deliPromoBox clearfix">
@{
var vs = new List<int>();
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))
{
<a href="/Projects/ProjectsVersioned?v=@v">Umbraco @(GetProperVersion(v.ToString(CultureInfo.InvariantCulture)).ToString(2)).x</a><br />
}
}
</div>
}
else
{
<h1 class="deliCatHead">Umbraco @(properVersion.ToString(2)).x compatible projects</h1>
<p><strong>Note:</strong> packages higher up in this list are more likely to actually work as they have been reported <br />to be working with Umbraco version @(properVersion.ToString(2)).x.</p>
<div class="deliPromoBox clearfix">
<div class="deliPromoArea">
<div class="deliPromoBox new clearfix">
@{
var vs = new List<int>();
foreach (var project in projects.OrderByDescending(x => x.CreateDate))
{
foreach (var version in project.CompatibleVersions.Where(version => vs.Contains(version) == false))
{
vs.Add(version);
}
}
}
<ul class="promoOptions">
@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);
<li><a href="?v=@v" class="newnav @(itemProperVersion == currentProperVersion ? "on": null)">@(itemProperVersion).x</a></li>
}
</ul>
@{
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);
}
}
<p class="viewAll">Showing @totalProjects projects</p>
}
}
<ul id="newest-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);
<li class="clearfix">
<div class="deliPackage">
<div class="brief">
<a href="@node.Url" class="packageIcon" style="background:url(@icon) no-repeat top left;">Package</a>
<h3><a href="@node.Url">@project.Name</a></h3>
<div class="category">@category</div>
<div class="commercialIndicator @node.ListingType">@node.ListingType</div>
</div>
<div class="hiLite">
<p><a href="@node.Url">@(ShortenText(description))</a></p>
</div>
<div class="popularity">
<div class="karma">
@project.Karma <small>Karma</small>
</div>
<div class="downloads">
@project.TotalDownloads <small>Downloads</small>
</div>
</div>
</div>
</li>
}
</ul>
</div>
</div>
</div>
}
}
@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("&nbsp;", "");
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();
}
}
+1
View File
@@ -103,6 +103,7 @@
<add key="AppVeyorWebHookAuthKey" value="it's a secret.. and no, this is not the secret, this key will transformed on the build server" />
<add key="GoogleOAuthClientID" value="it's a secret.. and no, this is not the secret, this key will transformed on the build server" />
<add key="GoogleOAuthSecret" value="it's a secret.. and no, this is not the secret, this key will transformed on the build server" />
<add key="HangFireEnabled" value="false" />
</appSettings>
<connectionStrings>
<remove name="umbracoDbDSN" />
+21 -22
View File
@@ -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(".");
}
}
}
+25 -36
View File
@@ -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<int>(
@"
using (var sqlhelper = umbraco.BusinessLogic.Application.SqlHelper)
{
var result = sqlhelper.ExecuteScalar<int>(@"
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<Relation> GetRelations(string alias, string sort, int parentId, int number)
{
List<Relation> retval = new List<Relation>();
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<Relation>();
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<Relation> GetPeopleWaiting(int eventId, int number)
+1 -2
View File
@@ -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<int>("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");
}
+2 -2
View File
@@ -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)
{
@@ -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,
@@ -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;
}
+2 -1
View File
@@ -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;
@@ -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<int>(" select count(*) from projectDownload where projectId = @id;",
Application.SqlHelper.CreateParameter("@id", projectId));
using (var sqlHelper = Application.SqlHelper)
{
return sqlHelper.ExecuteScalar<int>("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
/// <param name="listingItem"></param>
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<IPublishedContent>();
const string sql = @"SELECT * FROM projectContributors WHERE memberId=@memberId";
var contribPackageIds = UmbracoContext.Current.Application.DatabaseContext.Database.Fetch<int>(sql, new { memberId });
var contribPackageIds = ApplicationContext.Current.DatabaseContext.Database.Fetch<int>(sql, new { memberId });
foreach (var contribPackageId in contribPackageIds)
{
@@ -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<int>("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<IKarma>();
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);
}
}
@@ -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<MarkAsSolutionReminder>(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<bool>("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)
{
@@ -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<MarkAsSolutionReminder>(string.Format("Couldn't get settings for {0}", notificationType), e);
throw;
}
}
}
}
@@ -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<ReminderTopic>(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<ReminderTopic>(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));
}
}
}
}
@@ -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<int>("owner");
+20 -19
View File
@@ -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 { }
}
}
}
@@ -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<int>("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<int>(
"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));
}
}
}
}
@@ -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");
+11 -9
View File
@@ -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)
{
@@ -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<int>("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<int>("SELECT memberId FROM externalUrls WHERE (@id = id)", sqlHelper.CreateParameter("@id", e.ItemId));
e.ReceiverId = memberId;
}
}
}
}
@@ -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);
+2 -2
View File
@@ -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<bool>("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<int>("owner");
+15 -10
View File
@@ -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));
}
}
-30
View File
@@ -1,30 +0,0 @@
using umbraco.DataLayer;
namespace OurUmbraco.Our
{
public class Data
{
private static string _ConnString = umbraco.GlobalSettings.DbDSN;
private static ISqlHelper _sqlHelper;
/// <summary>
/// Gets the SQL helper.
/// </summary>
/// <value>The SQL helper.</value>
public static ISqlHelper SqlHelper
{
get
{
if (_sqlHelper == null)
{
try
{
_sqlHelper = DataLayerHelper.CreateSqlHelper(_ConnString);
}
catch { }
}
return _sqlHelper;
}
}
}
}
@@ -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();
+20 -20
View File
@@ -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 = { "" };
+32 -32
View File
@@ -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 + "<a href=\"/member/" + memberId + "\">" + memberId + "</a><br />";
}
//It's all good...
return returnValue;
}
//Member not authorised or memberID passed in is not valid
return "";
//It's all good...
return returnValue;
}
}
}
+16 -13
View File
@@ -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<int> GetProjectContributors(int projectId)
{
List<int> projects = new List<int>();
umbraco.DataLayer.IRecordsReader dr = Data.SqlHelper.ExecuteReader("SELECT * FROM projectContributors WHERE projectId = " + projectId);
while (dr.Read())
var projects = new List<int>();
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<int>("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<int>(
"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
@@ -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<string>(
"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<string>(
"Select path from wikiFiles where id = @id;",
BL.Application.SqlHelper.CreateParameter("@id", fileId));
var file = BL.Application.SqlHelper.ExecuteScalar<string>(
"Select name from wikiFiles where id = @id;",
BL.Application.SqlHelper.CreateParameter("@id", fileId));
var file = sqlHelper.ExecuteScalar<string>(
"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);
}
}
+1 -1
View File
@@ -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");
+1 -1
View File
@@ -403,6 +403,7 @@
<Compile Include="NotificationsCore\Notifications\AccountApproved.cs" />
<Compile Include="NotificationsCore\Notifications\NewForumTopic.cs" />
<Compile Include="NotificationsCore\Notifications\NewForumComment.cs" />
<Compile Include="NotificationsCore\Notifications\NotificationMail.cs" />
<Compile Include="NotificationsCore\Notifications\ScheduleHangfireJobs.cs" />
<Compile Include="NotificationsCore\Notifications\MarkAsSolutionReminder.cs" />
<Compile Include="NotificationsCore\NotificationTypes\NewForumTopic.cs" />
@@ -443,7 +444,6 @@
<Compile Include="Our\CustomHandlers\ProjectsEnsureGuid.cs" />
<Compile Include="Our\CustomHandlers\ProjectVote.cs" />
<Compile Include="Our\CustomHandlers\TopicVote.cs" />
<Compile Include="Our\Data.cs" />
<Compile Include="Our\DefaultMemberAvatarHandler.cs" />
<Compile Include="Our\Examine\DocumentationIndexConfig.cs" />
<Compile Include="Our\Examine\DocumentationIndexDataService.cs" />
+17 -19
View File
@@ -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<int>(forumTopics);
int commentCount = _sqlhelper.ExecuteScalar<int>(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<int>(forumTopics);
int commentCount = sqlHelper.ExecuteScalar<int>(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
+118 -83
View File
@@ -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<int>(
"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<int>("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<Action> GetAllActions() {
public static List<Action> GetAllActions()
{
XmlNode x = config.GetKeyAsNode("/configuration/actions");
List<Action> l = new List<Action>();
foreach (XmlNode cx in x.ChildNodes) {
List<Action> l = new List<Action>();
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<ActionEventArgs> BeforePerform;
protected virtual void FireBeforePerform(ActionEventArgs e) {
protected virtual void FireBeforePerform(ActionEventArgs e)
{
_e.FireCancelableEvent(BeforePerform, this, e);
}
public static event EventHandler<ActionEventArgs> AfterPerform;
protected virtual void FireAfterPerform(ActionEventArgs e) {
protected virtual void FireAfterPerform(ActionEventArgs e)
{
if (AfterPerform != null)
AfterPerform(this, e);
}
+1 -18
View File
@@ -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;
/// <summary>
/// Gets the SQL helper.
/// </summary>
/// <value>The SQL helper.</value>
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
+10 -3
View File
@@ -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<int>("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<int>(
"SELECT count(points) FROM " + dataBaseTable +
" WHERE (id = @id) AND (memberId = @memberId)",
sqlHelper.CreateParameter("@id", id),
sqlHelper.CreateParameter("@memberId", memberId)) > 0;
}
}
}
}
+10 -9
View File
@@ -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<int>("SELECT SUM(points) AS count FROM " + dataBaseTable + " WHERE (id = @id)",
BusinessLogic.Data.SqlHelper.CreateParameter("@id", id));
return Application.SqlHelper.ExecuteScalar<int>("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<int>("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<int>("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<int>("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<int>("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<int>("SELECT id FROM externalUrls WHERE (@url = url)", BusinessLogic.Data.SqlHelper.CreateParameter("@url", url));
var id = Application.SqlHelper.ExecuteScalar<int>("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<int>("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<int>("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<int>("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<int>("SELECT count(points) FROM powersExternal WHERE (id = @id) AND (memberId = @memberId)", Application.SqlHelper.CreateParameter("@id", itemId), Application.SqlHelper.CreateParameter("@memberId", memberId)) > 0);
}
}
}
@@ -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 {
+8 -4
View File
@@ -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));
}
}
}
}
+3 -16
View File
@@ -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;
/// <summary>
/// Gets the SQL helper.
/// </summary>
/// <value>The SQL helper.</value>
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;
}
+149 -119
View File
@@ -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));
}
}
/// <summary>
@@ -107,15 +110,18 @@ namespace OurUmbraco.Wiki.BusinessLogic
{
var wikiFiles = new List<WikiFile>();
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<int>("SELECT MAX(id) FROM wikiFiles WHERE createdBy = @createdBy", Application.SqlHelper.CreateParameter("@createdBy", CreatedBy));
CreateDate = DateTime.Now;
Id = sqlHelper.ExecuteScalar<int>(
"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<int>(
"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<int>(
"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<int>(
"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<int>(
"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<int>("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<int>(
"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);
@@ -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();