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:
@@ -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)
|
||||
|
||||
@@ -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(" ", "");
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -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" />
|
||||
|
||||
@@ -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(".");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user