diff --git a/OurUmbraco.Site/Views/MacroPartials/Members/JsValues.cshtml b/OurUmbraco.Site/Views/MacroPartials/Members/JsValues.cshtml
index 3cdede5e..41b47ff0 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Members/JsValues.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Members/JsValues.cshtml
@@ -1,6 +1,5 @@
-@inherits Umbraco.Web.Macros.PartialViewMacroPage
-@using uForum;
-@using uForum.Extensions
+@using OurUmbraco.Forum.Extensions
+@inherits Umbraco.Web.Macros.PartialViewMacroPage
@if(Members.IsLoggedIn()){
diff --git a/OurUmbraco.Site/Views/MacroPartials/Members/ProfileNotifications.cshtml b/OurUmbraco.Site/Views/MacroPartials/Members/ProfileNotifications.cshtml
index bf2c58da..8c9112a4 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Members/ProfileNotifications.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Members/ProfileNotifications.cshtml
@@ -1,5 +1,5 @@
@using NotificationsWeb.Services
-@using uForum.Services
+@using OurUmbraco.Forum.Services
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
diff --git a/OurUmbraco.Site/Views/MacroPartials/Members/PublicProfile.cshtml b/OurUmbraco.Site/Views/MacroPartials/Members/PublicProfile.cshtml
index b3d6f730..ba7eb420 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Members/PublicProfile.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Members/PublicProfile.cshtml
@@ -1,7 +1,8 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@using Marketplace.Interfaces
@using Marketplace.Providers
-@using uForum.Extensions
+@using OurUmbraco.Forum.Extensions
+@using OurUmbraco.Forum.Services
@{
var memberId = Request["id"];
int id = 0;
@@ -15,7 +16,7 @@
}
else
{
- var ts = new uForum.Services.TopicService(UmbracoContext.Application.DatabaseContext);
+ var ts = new TopicService(UmbracoContext.Application.DatabaseContext);
var topics = ts.GetLatestTopicsForMember(member.Id);
diff --git a/OurUmbraco.Site/Views/MacroPartials/Members/QuickMenu.cshtml b/OurUmbraco.Site/Views/MacroPartials/Members/QuickMenu.cshtml
index cd2d26dd..d37410c3 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Members/QuickMenu.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Members/QuickMenu.cshtml
@@ -1,9 +1,8 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@using System.Drawing
@using our
-@using uForum
-@using uForum.Extensions
-@using uForum.Services
+@using OurUmbraco.Forum.Extensions
+@using OurUmbraco.Forum.Services
@{
var topicService = new TopicService(ApplicationContext.DatabaseContext);
Image avatarImage = null;
diff --git a/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml b/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml
index 6397c3f2..02eaeb10 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Projects/ProjectDetails.cshtml
@@ -1,8 +1,7 @@
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@using our.Controllers
+@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Wiki.BusinessLogic
-@using uForum;
-@using uForum.Extensions
@using uProject.Controllers
@{
diff --git a/OurUmbraco.Site/Views/MacroPartials/Rss/Forum.cshtml b/OurUmbraco.Site/Views/MacroPartials/Rss/Forum.cshtml
index 13bc4d97..8e52b1d5 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Rss/Forum.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Rss/Forum.cshtml
@@ -1,6 +1,5 @@
-@using uForum
-@using uForum.Extensions
-@using uForum.Services
+@using OurUmbraco.Forum.Extensions
+@using OurUmbraco.Forum.Services
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
Response.Clear();
diff --git a/OurUmbraco.Site/Views/MacroPartials/Rss/LatestTopics.cshtml b/OurUmbraco.Site/Views/MacroPartials/Rss/LatestTopics.cshtml
index 05d7196c..e607dcdb 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Rss/LatestTopics.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Rss/LatestTopics.cshtml
@@ -1,6 +1,5 @@
-@using uForum
-@using uForum.Extensions
-@using uForum.Services
+@using OurUmbraco.Forum.Extensions
+@using OurUmbraco.Forum.Services
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
Response.Clear();
diff --git a/OurUmbraco.Site/Views/MacroPartials/Rss/Packages.cshtml b/OurUmbraco.Site/Views/MacroPartials/Rss/Packages.cshtml
index f4fdf65e..9ebba4fd 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Rss/Packages.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Rss/Packages.cshtml
@@ -1,5 +1,4 @@
-@using uForum
-@using uForum.Extensions
+@using OurUmbraco.Forum.Extensions
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
Response.Clear();
diff --git a/OurUmbraco.Site/Views/MacroPartials/Rss/Participated.cshtml b/OurUmbraco.Site/Views/MacroPartials/Rss/Participated.cshtml
index 523d7693..b9de89ec 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Rss/Participated.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Rss/Participated.cshtml
@@ -1,6 +1,5 @@
-@using uForum
-@using uForum.Extensions
-@using uForum.Services
+@using OurUmbraco.Forum.Extensions
+@using OurUmbraco.Forum.Services
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
Response.Clear();
diff --git a/OurUmbraco.Site/Views/MacroPartials/Rss/Topic.cshtml b/OurUmbraco.Site/Views/MacroPartials/Rss/Topic.cshtml
index 283f5afc..6bb2d186 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Rss/Topic.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Rss/Topic.cshtml
@@ -1,6 +1,5 @@
-@using uForum
-@using uForum.Extensions
-@using uForum.Services
+@using OurUmbraco.Forum.Extensions
+@using OurUmbraco.Forum.Services
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
Response.Clear();
diff --git a/OurUmbraco.Site/Views/MacroPartials/Spam/Overview.cshtml b/OurUmbraco.Site/Views/MacroPartials/Spam/Overview.cshtml
index fac9ac6a..c5094153 100644
--- a/OurUmbraco.Site/Views/MacroPartials/Spam/Overview.cshtml
+++ b/OurUmbraco.Site/Views/MacroPartials/Spam/Overview.cshtml
@@ -1,6 +1,6 @@
@using our
-@using uForum.Extensions
-@using uForum.Services
+@using OurUmbraco.Forum.Extensions
+@using OurUmbraco.Forum.Services
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@if (Members.IsAdmin())
diff --git a/OurUmbraco.Site/Views/Partials/Forum/Comment.cshtml b/OurUmbraco.Site/Views/Partials/Forum/Comment.cshtml
index fc14b4e6..45568117 100644
--- a/OurUmbraco.Site/Views/Partials/Forum/Comment.cshtml
+++ b/OurUmbraco.Site/Views/Partials/Forum/Comment.cshtml
@@ -1,6 +1,6 @@
-@inherits Umbraco.Web.Mvc.UmbracoViewPage
+@inherits Umbraco.Web.Mvc.UmbracoViewPage
+@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Powers.Library
-@using uForum.Extensions
@{
var currentMember = Members.GetCurrentMember();
diff --git a/OurUmbraco.Site/Views/Partials/Forum/MemberBadge.cshtml b/OurUmbraco.Site/Views/Partials/Forum/MemberBadge.cshtml
index 684f0cdf..97ef632a 100644
--- a/OurUmbraco.Site/Views/Partials/Forum/MemberBadge.cshtml
+++ b/OurUmbraco.Site/Views/Partials/Forum/MemberBadge.cshtml
@@ -1,6 +1,5 @@
-@model IMember
-@using uForum;
-@using uForum.Extensions
+@using OurUmbraco.Forum.Extensions
+@model IMember
diff --git a/OurUmbraco.Site/Views/Partials/Forum/Question.cshtml b/OurUmbraco.Site/Views/Partials/Forum/Question.cshtml
index 70765e18..26762def 100644
--- a/OurUmbraco.Site/Views/Partials/Forum/Question.cshtml
+++ b/OurUmbraco.Site/Views/Partials/Forum/Question.cshtml
@@ -1,6 +1,6 @@
-@inherits Umbraco.Web.Mvc.UmbracoViewPage
+@inherits Umbraco.Web.Mvc.UmbracoViewPage
+@using OurUmbraco.Forum.Extensions
@using OurUmbraco.Powers.Library
-@using uForum.Extensions
@{
var currentMember = Members.GetCurrentMember();
diff --git a/OurUmbraco.Site/macroScripts/ManageSpam.cshtml b/OurUmbraco.Site/macroScripts/ManageSpam.cshtml
index d0561892..9095eff7 100644
--- a/OurUmbraco.Site/macroScripts/ManageSpam.cshtml
+++ b/OurUmbraco.Site/macroScripts/ManageSpam.cshtml
@@ -1,8 +1,8 @@
-@using uForum.Businesslogic
-@using uForum.Library
+@using OurUmbraco.Forum.Library
+@using uForum.Businesslogic
@using umbraco.cms.businesslogic.member
@{
- if (uForum.Library.Utils.IsModerator() == false)
+ if (Utils.IsModerator() == false)
{
return;
}
diff --git a/uForum/AntiSpam/SpamChecker.cs b/OurUmbraco/Forum/AntiSpam/SpamChecker.cs
similarity index 98%
rename from uForum/AntiSpam/SpamChecker.cs
rename to OurUmbraco/Forum/AntiSpam/SpamChecker.cs
index 2b73fe43..34362f28 100644
--- a/uForum/AntiSpam/SpamChecker.cs
+++ b/OurUmbraco/Forum/AntiSpam/SpamChecker.cs
@@ -7,17 +7,16 @@ using System.Net;
using System.Text.RegularExpressions;
using System.Web;
using HtmlAgilityPack;
-using uForum.Extensions;
-using uForum.Library;
-using uForum.Models;
-using uForum.Services;
+using OurUmbraco.Forum.Extensions;
+using OurUmbraco.Forum.Library;
+using OurUmbraco.Forum.Models;
+using OurUmbraco.Forum.Services;
using umbraco.BusinessLogic;
using Umbraco.Core;
using Umbraco.Core.Models;
-using Umbraco.Core.Services;
using Umbraco.Web;
-namespace uForum.AntiSpam
+namespace OurUmbraco.Forum.AntiSpam
{
internal class SpamChecker
{
diff --git a/uForum/Api/ForumAdminController.cs b/OurUmbraco/Forum/Api/ForumAdminController.cs
similarity index 100%
rename from uForum/Api/ForumAdminController.cs
rename to OurUmbraco/Forum/Api/ForumAdminController.cs
diff --git a/uForum/Api/ForumController.cs b/OurUmbraco/Forum/Api/ForumController.cs
similarity index 98%
rename from uForum/Api/ForumController.cs
rename to OurUmbraco/Forum/Api/ForumController.cs
index 87e96c44..39c22d58 100644
--- a/uForum/Api/ForumController.cs
+++ b/OurUmbraco/Forum/Api/ForumController.cs
@@ -3,30 +3,25 @@ using System.Collections.Specialized;
using System.Configuration;
using System.Dynamic;
using System.IO;
-using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
-using System.Text.RegularExpressions;
using System.Web;
using System.Web.Http;
-using System.Web.Security;
using Newtonsoft.Json;
-using uForum.AntiSpam;
-using uForum.Extensions;
-using uForum.Library;
-using uForum.Models;
-using uForum.Services;
+using OurUmbraco.Forum.AntiSpam;
+using OurUmbraco.Forum.Extensions;
+using OurUmbraco.Forum.Library;
+using OurUmbraco.Forum.Models;
+using OurUmbraco.Forum.Services;
using umbraco;
-using umbraco.BusinessLogic;
using umbraco.cms.helpers;
using Umbraco.Core;
using Umbraco.Core.Logging;
using Umbraco.Web;
-using Umbraco.Web.Security;
using Umbraco.Web.WebApi;
-namespace uForum.Api
+namespace OurUmbraco.Forum.Api
{
[MemberAuthorize(AllowType = "member")]
public class ForumController : ForumControllerBase
diff --git a/uForum/Api/ForumControllerBase.cs b/OurUmbraco/Forum/Api/ForumControllerBase.cs
similarity index 91%
rename from uForum/Api/ForumControllerBase.cs
rename to OurUmbraco/Forum/Api/ForumControllerBase.cs
index a62f81e1..5123d91d 100644
--- a/uForum/Api/ForumControllerBase.cs
+++ b/OurUmbraco/Forum/Api/ForumControllerBase.cs
@@ -1,7 +1,7 @@
-using uForum.Services;
+using OurUmbraco.Forum.Services;
using Umbraco.Web.WebApi;
-namespace uForum.Api
+namespace OurUmbraco.Forum.Api
{
///
/// Base abstract controller that expose the forum services
diff --git a/uForum/Api/PublicForumController.cs b/OurUmbraco/Forum/Api/PublicForumController.cs
similarity index 91%
rename from uForum/Api/PublicForumController.cs
rename to OurUmbraco/Forum/Api/PublicForumController.cs
index 4954b4f4..6456984f 100644
--- a/uForum/Api/PublicForumController.cs
+++ b/OurUmbraco/Forum/Api/PublicForumController.cs
@@ -1,81 +1,76 @@
-using System;
-using System.Collections.Generic;
-using System.Dynamic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Web.Http;
-using uForum.Extensions;
-using uForum.Services;
-using Umbraco.Core.Models;
-using Umbraco.Web.WebApi;
-
-namespace uForum.Api
-{
- public class PublicForumController : ForumControllerBase
- {
-
- /* TOPICS */
- [HttpGet]
- public IEnumerable LatestPaged(int page, int cat)
- {
- var l = new List();
- foreach (var topic in TopicService.GetLatestTopics(50, page, true, cat))
- {
- dynamic o = new ExpandoObject();
-
- o.url = topic.GetUrl();
- o.title = topic.Title;
- o.replies = topic.Replies;
- o.hasAnswer = topic.Answer > 0;
- o.updated = topic.Updated.ConvertToRelativeTime();
- o.updatedLong = string.Format("{0:ddd, dd MMM yyyy} {0:HH:mm:ss} UTC+{1}", topic.Updated, TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now));
- if (topic.LatestReplyAuthor > 0)
- {
- o.memId = topic.LatestReplyAuthor;
- o.memName = topic.LastReplyAuthorName;
- //var mem = Members.GetById(topic.LatestReplyAuthor);
- //if (mem != null)
- //{
- // o.memId = mem.Id;
- // o.memName = mem.Name;
- //}
- }
- else
- {
- o.memId = topic.MemberId;
- o.memName = topic.AuthorName;
- //var author = Members.GetById(topic.MemberId);
- //if (author != null)
- //{
- // o.memId = author.Id;
- // o.memName = author.Name;
- //}
- }
-
- IPublishedContent forum;
- if (topic.ParentId > 0 && ((forum = Umbraco.TypedContent(topic.ParentId)) != null))
- {
- o.forumUrl = forum.Url;
-
- o.forumName = Library.Utils.GetForumName(forum);
- }
- //var forum = Umbraco.TypedContent(topic.ParentId);
- //if (forum != null)
- //{
- // o.forumUrl = forum.Url;
- // o.forumName = forum.Name;
- //}
-
- l.Add(o);
- }
- return l;
- }
-
- [HttpGet]
- public string CategoryUrl(int id)
- {
- return Umbraco.TypedContent(id).Url;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Web.Http;
+using OurUmbraco.Forum.Extensions;
+using Umbraco.Core.Models;
+
+namespace OurUmbraco.Forum.Api
+{
+ public class PublicForumController : ForumControllerBase
+ {
+
+ /* TOPICS */
+ [HttpGet]
+ public IEnumerable LatestPaged(int page, int cat)
+ {
+ var l = new List();
+ foreach (var topic in TopicService.GetLatestTopics(50, page, true, cat))
+ {
+ dynamic o = new ExpandoObject();
+
+ o.url = topic.GetUrl();
+ o.title = topic.Title;
+ o.replies = topic.Replies;
+ o.hasAnswer = topic.Answer > 0;
+ o.updated = topic.Updated.ConvertToRelativeTime();
+ o.updatedLong = string.Format("{0:ddd, dd MMM yyyy} {0:HH:mm:ss} UTC+{1}", topic.Updated, TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now));
+ if (topic.LatestReplyAuthor > 0)
+ {
+ o.memId = topic.LatestReplyAuthor;
+ o.memName = topic.LastReplyAuthorName;
+ //var mem = Members.GetById(topic.LatestReplyAuthor);
+ //if (mem != null)
+ //{
+ // o.memId = mem.Id;
+ // o.memName = mem.Name;
+ //}
+ }
+ else
+ {
+ o.memId = topic.MemberId;
+ o.memName = topic.AuthorName;
+ //var author = Members.GetById(topic.MemberId);
+ //if (author != null)
+ //{
+ // o.memId = author.Id;
+ // o.memName = author.Name;
+ //}
+ }
+
+ IPublishedContent forum;
+ if (topic.ParentId > 0 && ((forum = Umbraco.TypedContent(topic.ParentId)) != null))
+ {
+ o.forumUrl = forum.Url;
+
+ o.forumName = Library.Utils.GetForumName(forum);
+ }
+ //var forum = Umbraco.TypedContent(topic.ParentId);
+ //if (forum != null)
+ //{
+ // o.forumUrl = forum.Url;
+ // o.forumName = forum.Name;
+ //}
+
+ l.Add(o);
+ }
+ return l;
+ }
+
+ [HttpGet]
+ public string CategoryUrl(int id)
+ {
+ return Umbraco.TypedContent(id).Url;
+ }
+ }
+}
diff --git a/uForum/Api/TopicController.cs b/OurUmbraco/Forum/Api/TopicController.cs
similarity index 88%
rename from uForum/Api/TopicController.cs
rename to OurUmbraco/Forum/Api/TopicController.cs
index 12c73876..06bc8e02 100644
--- a/uForum/Api/TopicController.cs
+++ b/OurUmbraco/Forum/Api/TopicController.cs
@@ -1,13 +1,8 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using uForum.Models;
-using uForum.Services;
+using OurUmbraco.Forum.Models;
using Umbraco.Web.WebApi;
-namespace uForum.Api
+namespace OurUmbraco.Forum.Api
{
[MemberAuthorize(AllowType = "member")]
public class TopicController : ForumControllerBase
diff --git a/uForum/EventHandlers/MemberApprovedEventhandler.cs b/OurUmbraco/Forum/EventHandlers/MemberApprovedEventhandler.cs
similarity index 97%
rename from uForum/EventHandlers/MemberApprovedEventhandler.cs
rename to OurUmbraco/Forum/EventHandlers/MemberApprovedEventhandler.cs
index 5566e3ef..1381ef88 100644
--- a/uForum/EventHandlers/MemberApprovedEventhandler.cs
+++ b/OurUmbraco/Forum/EventHandlers/MemberApprovedEventhandler.cs
@@ -1,13 +1,12 @@
using System;
using System.Linq;
-using uForum.Library;
using Umbraco.Core;
using Umbraco.Core.Events;
using Umbraco.Core.Models;
using Umbraco.Core.Services;
using Umbraco.Web;
-namespace uForum.EventHandlers
+namespace OurUmbraco.Forum.EventHandlers
{
public class MemberApprovedEventhandler : ApplicationEventHandler
{
diff --git a/uForum/EventHandlers/NewForumHandler.cs b/OurUmbraco/Forum/EventHandlers/NewForumHandler.cs
similarity index 92%
rename from uForum/EventHandlers/NewForumHandler.cs
rename to OurUmbraco/Forum/EventHandlers/NewForumHandler.cs
index e54d39b2..004db507 100644
--- a/uForum/EventHandlers/NewForumHandler.cs
+++ b/OurUmbraco/Forum/EventHandlers/NewForumHandler.cs
@@ -1,11 +1,10 @@
using System;
using System.Linq;
-using uForum.Models;
-using uForum.Services;
+using OurUmbraco.Forum.Services;
using Umbraco.Core;
using Umbraco.Core.Services;
-namespace uForum.EventHandlers
+namespace OurUmbraco.Forum.EventHandlers
{
public class NewForumHandler : ApplicationEventHandler
{
@@ -39,11 +38,11 @@ namespace uForum.EventHandlers
var fs = new ForumService(ApplicationContext.Current.DatabaseContext);
foreach (var ent in e.PublishedEntities.Where(x => x.ContentType.Alias == "Forum"))
{
- Forum f = fs.GetById(ent.Id);
+ Models.Forum f = fs.GetById(ent.Id);
if (f == null)
{
- f = new Forum();
+ f = new Models.Forum();
f.Id = ent.Id;
f.ParentId = ent.ParentId;
f.SortOrder = ent.SortOrder;
diff --git a/uForum/Events.cs b/OurUmbraco/Forum/Events.cs
similarity index 89%
rename from uForum/Events.cs
rename to OurUmbraco/Forum/Events.cs
index df83fb67..ab50bb10 100644
--- a/uForum/Events.cs
+++ b/OurUmbraco/Forum/Events.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace uForum
+namespace OurUmbraco.Forum
{
public class TopicEventArgs : System.ComponentModel.CancelEventArgs {
public Models.Topic Topic { get; set; }
diff --git a/uForum/Extensions/EventExtensions.cs b/OurUmbraco/Forum/Extensions/EventExtensions.cs
similarity index 95%
rename from uForum/Extensions/EventExtensions.cs
rename to OurUmbraco/Forum/Extensions/EventExtensions.cs
index 3e718910..ec831ab5 100644
--- a/uForum/Extensions/EventExtensions.cs
+++ b/OurUmbraco/Forum/Extensions/EventExtensions.cs
@@ -1,7 +1,7 @@
using System;
using System.ComponentModel;
-namespace uForum.Extensions
+namespace OurUmbraco.Forum.Extensions
{
public static class EventExtensions
{
diff --git a/uForum/Extensions/ForumExtensions.cs b/OurUmbraco/Forum/Extensions/ForumExtensions.cs
similarity index 97%
rename from uForum/Extensions/ForumExtensions.cs
rename to OurUmbraco/Forum/Extensions/ForumExtensions.cs
index 1ab8de97..663c57eb 100644
--- a/uForum/Extensions/ForumExtensions.cs
+++ b/OurUmbraco/Forum/Extensions/ForumExtensions.cs
@@ -7,13 +7,13 @@ using System.Web;
using System.Web.Security;
using HtmlAgilityPack;
using MarkdownSharp;
-using uForum.AntiSpam;
-using uForum.Library;
-using uForum.Models;
+using OurUmbraco.Forum.AntiSpam;
+using OurUmbraco.Forum.Library;
+using OurUmbraco.Forum.Models;
using Umbraco.Core.Models;
using Umbraco.Web;
-namespace uForum.Extensions
+namespace OurUmbraco.Forum.Extensions
{
public static class ForumExtensions
{
diff --git a/uForum/Extensions/MemberForumExtensions.cs b/OurUmbraco/Forum/Extensions/MemberForumExtensions.cs
similarity index 98%
rename from uForum/Extensions/MemberForumExtensions.cs
rename to OurUmbraco/Forum/Extensions/MemberForumExtensions.cs
index 93e4fc66..01fb42f8 100644
--- a/uForum/Extensions/MemberForumExtensions.cs
+++ b/OurUmbraco/Forum/Extensions/MemberForumExtensions.cs
@@ -4,7 +4,7 @@ using Umbraco.Core.Models;
using Umbraco.Web;
using Umbraco.Web.Security;
-namespace uForum.Extensions
+namespace OurUmbraco.Forum.Extensions
{
public static class MemberForumExtensions
{
diff --git a/uForum/Library/Utils.cs b/OurUmbraco/Forum/Library/Utils.cs
similarity index 99%
rename from uForum/Library/Utils.cs
rename to OurUmbraco/Forum/Library/Utils.cs
index d7ccfe9d..e332a576 100644
--- a/uForum/Library/Utils.cs
+++ b/OurUmbraco/Forum/Library/Utils.cs
@@ -10,18 +10,14 @@ using System.Web;
using System.Web.Security;
using RestSharp;
using RestSharp.Deserializers;
-using umbraco;
using umbraco.BusinessLogic;
-using umbraco.editorControls.MultiNodeTreePicker;
-using umbraco.NodeFactory;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
-using Umbraco.Core.Services;
using Umbraco.Web;
using Member = umbraco.cms.businesslogic.member.Member;
using MemberGroup = umbraco.cms.businesslogic.member.MemberGroup;
-namespace uForum.Library
+namespace OurUmbraco.Forum.Library
{
public class Utils
{
diff --git a/uForum/Library/Xslt.cs b/OurUmbraco/Forum/Library/Xslt.cs
similarity index 97%
rename from uForum/Library/Xslt.cs
rename to OurUmbraco/Forum/Library/Xslt.cs
index d9aa01f8..1e2e7261 100644
--- a/uForum/Library/Xslt.cs
+++ b/OurUmbraco/Forum/Library/Xslt.cs
@@ -1,599 +1,599 @@
-using System;
-using System.Collections.Generic;
-using System.Text.RegularExpressions;
-using System.Web;
-using System.Xml;
-using System.Xml.XPath;
-using HtmlAgilityPack;
-using uForum.Businesslogic;
-using umbraco;
-using MarkdownSharp;
-using umbraco.BusinessLogic;
-using umbraco.cms.businesslogic.member;
-
-namespace uForum.Library
-{
- [Umbraco.Core.Macros.XsltExtension("uForum")]
- public class Xslt
- {
-
- public string ReplaceCode(Match m)
- {
- if (m.Success)
- return "" + HttpContext.Current.Server.HtmlEncode(m.Groups[0].Value).Replace("<br />", "").Replace("<", "<").Replace(">", ">").Trim() + "";
- else
- return "";
- }
-
- public static XPathNodeIterator GetCurrentMember()
- {
- Member m = Member.GetCurrentMember();
- if (m != null)
- {
- XmlDocument mXml = new XmlDocument();
- mXml.LoadXml(m.ToXml(mXml, false).OuterXml);
- XPathNavigator xp = mXml.CreateNavigator();
- return xp.Select("/*");
- }
-
- XmlDocument xd = new XmlDocument();
- xd.LoadXml(
- "No current member exists (best practice is to validate with 'isloggedon()' prior to this call)");
- var retVal = xd.CreateNavigator().Select("/");
- return retVal;
- }
-
- public static string CleanBBCode(string html)
- {
-
- string str = html;
- Regex exp;
-
- // format the code tags: [code]my site[code]
- // becomes: my site
- exp = new Regex(@"\[code\](.+?)\[/code\]", RegexOptions.Singleline | RegexOptions.IgnoreCase);
-
- Xslt x = new Xslt();
- MatchEvaluator exp_eval = new MatchEvaluator(x.ReplaceCode);
- // Replace matched characters using the delegate method.
- str = exp.Replace(str, exp_eval);
-
- // format the url tags: [url=www.website.com]my site[/url]
- // becomes: my site
- exp = new Regex(@"\[quote\=([^\]]+)\]([^\]]+)\[/quote\]", RegexOptions.Singleline);
- str = exp.Replace(str, "$2
");
-
- return str;
- }
-
- public static bool IsMemberInGroup(string GroupName, int memberid)
- {
- Member m;
- try
- {
- m = Utills.GetMember(memberid);
- }
- catch (Exception ex)
- {
- Log.Add(LogTypes.Error, new User(0), -1, string.Format("Utills.GetMember({0}) failed - {1} {2} {3}", memberid, ex.Message, ex.StackTrace, ex.InnerException));
- return false;
- }
-
- foreach (MemberGroup mg in m.Groups.Values)
- {
- if (mg.Text == GroupName)
- return true;
- }
- return false;
- }
-
- public static bool IsInGroup(string GroupName)
- {
-
- if (umbraco.library.IsLoggedOn())
- return IsMemberInGroup(GroupName, Member.CurrentMemberId());
- else
- return false;
- }
-
- public static void RegisterRssFeed(string url, string title, string alias)
- {
- umbraco.library.RegisterClientScriptBlock(alias, "", false);
- }
-
- public static string NiceTopicUrl(int topicId)
- {
- var topic = Businesslogic.Topic.GetTopic(topicId);
-
- if (topic == null || topic.Exists == false)
- return "";
-
- var url = library.NiceUrl(topic.ParentId);
-
- return GlobalSettings.UseDirectoryUrls
- ? string.Format("/{0}/{1}-{2}", url.Trim('/'), topic.Id, topic.UrlName)
- : string.Format("/{0}/{1}-{2}.aspx", url.Substring(0, url.LastIndexOf('.')).Trim('/'), topic.Id, topic.UrlName);
- }
-
- public static int CommentPageNumber(int commentId, int itemsPerPage)
- {
- Businesslogic.Comment c = new uForum.Businesslogic.Comment(commentId);
-
- int position = c.Position - 1;
-
- return (int)(position / itemsPerPage);
- }
-
-
- public static string NiceCommentUrl(int topicId, int commentId, int itemsPerPage)
- {
- string url = NiceTopicUrl(topicId);
- if (!string.IsNullOrEmpty(url))
- {
- Businesslogic.Comment c = new uForum.Businesslogic.Comment(commentId);
-
- int position = c.Position - 1;
-
- int page = (int)(position / itemsPerPage);
-
-
- url += "?p=" + page.ToString() + "#comment" + c.Id.ToString();
- }
-
- return url;
- }
-
- public static XPathNodeIterator ForumPager(int forumId, int itemsPerPage, int currentPage)
- {
- return ForumPager(forumId, itemsPerPage, currentPage, 10);
- }
-
- public static XPathNodeIterator ForumPager(int forumId, int itemsPerPage, int currentPage, int distance)
- {
- var xd = new XmlDocument();
- var totalTopics = 0;
-
- if (forumId == 0)
- totalTopics = Businesslogic.Topic.TotalTopics();
- else
- {
- var f = new uForum.Businesslogic.Forum(forumId);
- totalTopics = f.TotalTopics;
- }
-
- var pages = xmlHelper.addTextNode(xd, "pages", string.Empty);
- var i = 0;
- var p = 0;
-
- while (i < (totalTopics))
- {
- var distanceFromCurrent = p - currentPage;
- if (distanceFromCurrent > -distance && distanceFromCurrent < distance)
- {
- var page = xmlHelper.addTextNode(xd, "page", string.Empty);
- page.Attributes.Append(xmlHelper.addAttribute(xd, "index", p.ToString()));
-
- if (p == currentPage)
- {
- page.Attributes.Append(xmlHelper.addAttribute(xd, "current", "true"));
- }
-
- pages.AppendChild(page);
- }
-
- p++;
- i = (i + itemsPerPage);
- }
-
- return pages.CreateNavigator().Select(".");
- }
-
- public static XPathNodeIterator TopicPager(int topicId, int itemsPerPage, int currentPage)
- {
- XmlDocument xd = new XmlDocument();
- Businesslogic.Topic t = uForum.Businesslogic.Topic.GetTopic(topicId);
-
- XmlNode pages = umbraco.xmlHelper.addTextNode(xd, "pages", "");
-
- int i = 0;
- int p = 0;
-
- while (i < (t.Replies))
- {
- XmlNode page = umbraco.xmlHelper.addTextNode(xd, "page", "");
- page.Attributes.Append(umbraco.xmlHelper.addAttribute(xd, "index", p.ToString()));
- if (p == currentPage)
- {
- page.Attributes.Append(umbraco.xmlHelper.addAttribute(xd, "current", "true"));
- }
- pages.AppendChild(page);
-
- p++;
- i = (i + itemsPerPage);
- }
-
- return pages.CreateNavigator().Select(".");
- }
-
- public static XPathNodeIterator MemberTopicPager(int memberId, int itemsPerPage, int currentPage)
- {
- XmlDocument xd = new XmlDocument();
- XmlNode pages = umbraco.xmlHelper.addTextNode(xd, "pages", "");
-
- int i = 0;
- int p = 0;
- int total = uForum.Businesslogic.Forum.TotalTopicsAndComments(memberId);
-
- while (i < (total))
- {
- XmlNode page = umbraco.xmlHelper.addTextNode(xd, "page", "");
- page.Attributes.Append(umbraco.xmlHelper.addAttribute(xd, "index", p.ToString()));
- if (p == currentPage)
- {
- page.Attributes.Append(umbraco.xmlHelper.addAttribute(xd, "current", "true"));
- }
- pages.AppendChild(page);
-
- p++;
- i = (i + itemsPerPage);
- }
-
- return pages.CreateNavigator().Select(".");
- }
-
- public static XPathNodeIterator AllForums(bool includeLatestData)
- {
-
-
- XmlDocument xd = new XmlDocument();
- XmlNode x = xd.CreateElement("forums");
-
- List forums = Businesslogic.Forum.Forums();
- foreach (Businesslogic.Forum f in forums)
- {
- x.AppendChild(f.ToXml(xd, includeLatestData));
- }
-
- return x.CreateNavigator().Select(".");
- }
-
- public static XPathNodeIterator Forum(int id, bool includeLatestData)
- {
- XmlDocument xd = new XmlDocument();
-
-
- return new Businesslogic.Forum(id).ToXml(xd, includeLatestData).CreateNavigator().Select(".");
-
- }
-
- public static XPathNodeIterator Forums(int parentId, bool includeLatestData)
- {
- XmlDocument xd = new XmlDocument();
- XmlNode x = xd.CreateElement("forums");
-
- List forums = Businesslogic.Forum.Forums(parentId);
- foreach (Businesslogic.Forum f in forums)
- {
- x.AppendChild(f.ToXml(xd, includeLatestData));
- }
-
- return x.CreateNavigator().Select(".");
- }
-
- public static XPathNodeIterator ForumTopics(int nodeId, int amount)
- {
- XmlDocument xd = new XmlDocument();
- XmlNode x = xd.CreateElement("topics");
-
- List topics = Businesslogic.Topic.TopicsInForum(nodeId, amount, 1);
- foreach (Businesslogic.Topic t in topics)
- {
- x.AppendChild(t.ToXml(xd));
- }
-
- return x.CreateNavigator().Select(".");
- }
-
- public static XPathNodeIterator Topic(int topicID)
- {
- XmlDocument xd = new XmlDocument();
- Businesslogic.Topic t = uForum.Businesslogic.Topic.GetTopic(topicID);
-
- if (t.Exists)
- xd.AppendChild(t.ToXml(xd));
-
- return xd.CreateNavigator().Select(".");
- }
-
- public static XPathNodeIterator Comment(int commentID)
- {
-
- XmlDocument xd = new XmlDocument();
- Businesslogic.Comment c = new uForum.Businesslogic.Comment(commentID);
-
- return c.ToXml(xd).CreateNavigator().Select(".");
- }
-
- public static XPathNodeIterator TopicComments(int topicID)
- {
-
- XmlDocument xd = new XmlDocument();
- Businesslogic.Topic t = uForum.Businesslogic.Topic.GetTopic(topicID);
-
- if (t.Exists)
- {
- XmlNode comments = umbraco.xmlHelper.addTextNode(xd, "comments", "");
-
- foreach (Businesslogic.Comment cc in t.Comments)
- {
- comments.AppendChild(cc.ToXml(xd));
- }
-
- xd.AppendChild(comments);
- }
-
- return xd.CreateNavigator().Select(".");
- }
-
- public static XPathNodeIterator LatestTopics(int amount)
- {
- XmlDocument xd = new XmlDocument();
- XmlNode x = xd.CreateElement("topics");
-
- List topics = Businesslogic.Topic.Latest(amount);
- foreach (Businesslogic.Topic t in topics)
- {
- x.AppendChild(t.ToXml(xd));
- }
-
- return x.CreateNavigator().Select(".");
- }
-
- public static string Sanitize(string html)
- {
- // Run it through Markdown first
- var md = new Markdown();
- html = md.Transform(html);
-
- // Linkify images if they are shown as resized versions (only relevant for new Markdown comments)
- var doc = new HtmlDocument();
- doc.LoadHtml(html);
-
- var root = doc.DocumentNode;
- if (root != null)
- {
- var images = root.SelectNodes("//img");
- if (images != null)
- {
- var replace = false;
- foreach (var image in images)
- {
- var src = image.GetAttributeValue("src", "");
- var orgSrc = src.Replace("rs/", "");
-
- if (src == orgSrc || image.ParentNode.Name == "a") continue;
-
- var a = doc.CreateElement("a");
- a.SetAttributeValue("href", orgSrc);
- a.SetAttributeValue("target", "_blank");
-
- a.AppendChild(image.Clone());
-
- image.ParentNode.ReplaceChild(a, image);
-
- replace = true;
- }
-
- if (replace)
- {
- html = root.OuterHtml;
- }
- }
- }
-
- return Utills.Sanitize(html);
- }
-
- public static string TimeDiff(string secondDate)
- {
- DateTime date;
- if (!DateTime.TryParse(secondDate, out date))
- return secondDate;
-
- var TS = DateTime.Now.Subtract(date);
- var span = int.Parse(Math.Round(TS.TotalSeconds, 0).ToString());
-
- if (span < 60)
- return "1 minute ago";
-
- if (span >= 60 && span < 3600)
- return string.Concat(Math.Round(TS.TotalMinutes), " minutes ago");
-
- if (span >= 3600 && span < 7200)
- return "1 hour ago";
-
- if (span >= 3600 && span < 86400)
- return string.Concat(Math.Round(TS.TotalHours), " hours ago");
-
- if (span >= 86400 && span < 172800)
- return "1 day ago";
-
- if (span >= 172800 && span < 604800)
- return string.Concat(Math.Round(TS.TotalDays), " days ago");
-
- if (span >= 604800 && span < 1209600)
- return "1 week ago";
-
- return date.ToString("MMMM d, yyyy @ hh:mm");
- }
-
-
- private static readonly Regex linkFinderRegex = new Regex("(((?)(.*?)()", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
- private static readonly Regex preTagFinderRegex = new Regex("()(.*?)(
)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
- private static readonly string link = "{2}";
- private static readonly string imgLink = "
";
- private static readonly Regex Base64ImageRegex = new Regex("(
)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
- private static readonly Regex imageTagFinderRegex = new Regex("(
)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
-
- public static void TopicNotFound(int topicId)
- {
- HttpContext.Current.Response.RedirectPermanent(string.Concat("/?topicNotFound=", topicId));
- }
-
- public static string ResolveLinks(string body)
- {
-
-
-
- if (string.IsNullOrEmpty(body))
- return body;
-
- //REMOVE BASE64 Images
- body = Base64ImageRegex.Replace(body, "");
-
-
- Dictionary replaceValues = new Dictionary();
-
- int k = 0;
- foreach (Match match in preTagFinderRegex.Matches(body))
- {
- string placeholder = string.Format("[[[[PreTagReplace{0}]]]]", k);
- body = body.Replace(match.Value, placeholder);
- replaceValues.Add(placeholder, "" + match.Groups[3].Value + "
");
- k++;
- }
-
- int j = 0;
- foreach (Match match in anchorFinderRegex.Matches(body))
- {
- string placeholder = string.Format("[[[[AnchorReplacer{0}]]]]", j);
- body = body.Replace(match.Value, placeholder);
-
-
- if (!match.Groups[5].Value.Contains("://") || imageTagFinderRegex.IsMatch(match.Groups[5].Value))
- {
- if (imageTagFinderRegex.IsMatch(match.Groups[5].Value))
- {
- replaceValues.Add(placeholder, string.Format(imgLink, string.Empty, match.Groups[3].Value, HttpUtility.UrlDecode(match.Groups[5].Value)));
- }
- else
- {
- replaceValues.Add(placeholder, string.Format(link, string.Empty, match.Groups[3].Value, HttpUtility.UrlDecode(match.Groups[5].Value)));
- }
- }
- else
- {
- replaceValues.Add(placeholder, string.Format(link, string.Empty, match.Groups[3].Value, HttpUtility.UrlDecode(ShortenUrl(match.Groups[5].Value, 50))));
- }
- j++;
- }
-
-
- int i = 0;
- foreach (Match match in linkFinderRegex.Matches(body))
- {
- string placeholder = string.Format("[[[[LinkReplacer{0}]]]]", i);
- body = body.Replace(match.Value, placeholder);
- if (!match.Value.Contains("://"))
- {
- replaceValues.Add(placeholder, string.Format(link, "http://", match.Value, HttpUtility.UrlDecode(ShortenUrl(match.Value, 50))));
- }
- else
- {
- replaceValues.Add(placeholder, string.Format(link, string.Empty, match.Value, HttpUtility.UrlDecode(ShortenUrl(match.Value, 50))));
- }
- i++;
- }
-
-
- foreach (KeyValuePair replaceValue in replaceValues)
- {
- body = body.Replace(replaceValue.Key, replaceValue.Value);
- }
-
- return body;
- }
- public static bool UseMarkdownEditor()
- {
- return ForumEditor.UseMarkdownEditor();
- }
-
- public static bool IsModerator()
- {
- return Utills.IsModerator();
- }
-
- public static bool CanSeeTopic(int topicId)
- {
- return Utills.CanSeeTopic(topicId);
- }
-
- public static bool CanSeeComment(int commentId)
- {
- return Utills.CanSeeComment(commentId);
- }
-
- private static string ShortenUrl(string url, int max)
- {
- if (url.Length <= max)
- return url;
-
- try
- {
- // Remove the protocal
- int startIndex = url.IndexOf("://");
-
- if (startIndex > -1)
- url = url.Substring(startIndex + 3);
-
- if (url.Length <= max)
- return url;
-
- // Remove the folder structure
- int firstIndex = url.IndexOf("/") + 1;
- int lastIndex = url.LastIndexOf("/");
- if (firstIndex < lastIndex)
- url = url.Replace(url.Substring(firstIndex, lastIndex - firstIndex), "...");
-
- if (url.Length <= max)
- return url;
-
- // Remove URL parameters
- int queryIndex = url.IndexOf("?");
- if (queryIndex > -1)
- url = url.Substring(0, queryIndex);
-
- if (url.Length <= max)
- return url;
-
- // Remove URL fragment
- int fragmentIndex = url.IndexOf("#");
- if (fragmentIndex > -1)
- url = url.Substring(0, fragmentIndex);
-
- if (url.Length <= max)
- return url;
-
- // Shorten page
- firstIndex = url.LastIndexOf("/") + 1;
- lastIndex = url.LastIndexOf(".");
- if (lastIndex - firstIndex > 10)
- {
- string page = url.Substring(firstIndex, lastIndex - firstIndex);
- int length = url.Length - max + 3;
- url = url.Replace(page, "..." + page.Substring(length));
- }
-
-
- return url;
- }
- catch
- {
- return url;
- }
- }
-
-
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text.RegularExpressions;
+using System.Web;
+using System.Xml;
+using System.Xml.XPath;
+using HtmlAgilityPack;
+using uForum.Businesslogic;
+using umbraco;
+using MarkdownSharp;
+using umbraco.BusinessLogic;
+using umbraco.cms.businesslogic.member;
+
+namespace uForum.Library
+{
+ [Umbraco.Core.Macros.XsltExtension("uForum")]
+ public class Xslt
+ {
+
+ public string ReplaceCode(Match m)
+ {
+ if (m.Success)
+ return "" + HttpContext.Current.Server.HtmlEncode(m.Groups[0].Value).Replace("<br />", "").Replace("<", "<").Replace(">", ">").Trim() + "";
+ else
+ return "";
+ }
+
+ public static XPathNodeIterator GetCurrentMember()
+ {
+ Member m = Member.GetCurrentMember();
+ if (m != null)
+ {
+ XmlDocument mXml = new XmlDocument();
+ mXml.LoadXml(m.ToXml(mXml, false).OuterXml);
+ XPathNavigator xp = mXml.CreateNavigator();
+ return xp.Select("/*");
+ }
+
+ XmlDocument xd = new XmlDocument();
+ xd.LoadXml(
+ "No current member exists (best practice is to validate with 'isloggedon()' prior to this call)");
+ var retVal = xd.CreateNavigator().Select("/");
+ return retVal;
+ }
+
+ public static string CleanBBCode(string html)
+ {
+
+ string str = html;
+ Regex exp;
+
+ // format the code tags: [code]my site[code]
+ // becomes: my site
+ exp = new Regex(@"\[code\](.+?)\[/code\]", RegexOptions.Singleline | RegexOptions.IgnoreCase);
+
+ Xslt x = new Xslt();
+ MatchEvaluator exp_eval = new MatchEvaluator(x.ReplaceCode);
+ // Replace matched characters using the delegate method.
+ str = exp.Replace(str, exp_eval);
+
+ // format the url tags: [url=www.website.com]my site[/url]
+ // becomes: my site
+ exp = new Regex(@"\[quote\=([^\]]+)\]([^\]]+)\[/quote\]", RegexOptions.Singleline);
+ str = exp.Replace(str, "$2
");
+
+ return str;
+ }
+
+ public static bool IsMemberInGroup(string GroupName, int memberid)
+ {
+ Member m;
+ try
+ {
+ m = Utills.GetMember(memberid);
+ }
+ catch (Exception ex)
+ {
+ Log.Add(LogTypes.Error, new User(0), -1, string.Format("Utills.GetMember({0}) failed - {1} {2} {3}", memberid, ex.Message, ex.StackTrace, ex.InnerException));
+ return false;
+ }
+
+ foreach (MemberGroup mg in m.Groups.Values)
+ {
+ if (mg.Text == GroupName)
+ return true;
+ }
+ return false;
+ }
+
+ public static bool IsInGroup(string GroupName)
+ {
+
+ if (umbraco.library.IsLoggedOn())
+ return IsMemberInGroup(GroupName, Member.CurrentMemberId());
+ else
+ return false;
+ }
+
+ public static void RegisterRssFeed(string url, string title, string alias)
+ {
+ umbraco.library.RegisterClientScriptBlock(alias, "", false);
+ }
+
+ public static string NiceTopicUrl(int topicId)
+ {
+ var topic = Businesslogic.Topic.GetTopic(topicId);
+
+ if (topic == null || topic.Exists == false)
+ return "";
+
+ var url = library.NiceUrl(topic.ParentId);
+
+ return GlobalSettings.UseDirectoryUrls
+ ? string.Format("/{0}/{1}-{2}", url.Trim('/'), topic.Id, topic.UrlName)
+ : string.Format("/{0}/{1}-{2}.aspx", url.Substring(0, url.LastIndexOf('.')).Trim('/'), topic.Id, topic.UrlName);
+ }
+
+ public static int CommentPageNumber(int commentId, int itemsPerPage)
+ {
+ Businesslogic.Comment c = new uForum.Businesslogic.Comment(commentId);
+
+ int position = c.Position - 1;
+
+ return (int)(position / itemsPerPage);
+ }
+
+
+ public static string NiceCommentUrl(int topicId, int commentId, int itemsPerPage)
+ {
+ string url = NiceTopicUrl(topicId);
+ if (!string.IsNullOrEmpty(url))
+ {
+ Businesslogic.Comment c = new uForum.Businesslogic.Comment(commentId);
+
+ int position = c.Position - 1;
+
+ int page = (int)(position / itemsPerPage);
+
+
+ url += "?p=" + page.ToString() + "#comment" + c.Id.ToString();
+ }
+
+ return url;
+ }
+
+ public static XPathNodeIterator ForumPager(int forumId, int itemsPerPage, int currentPage)
+ {
+ return ForumPager(forumId, itemsPerPage, currentPage, 10);
+ }
+
+ public static XPathNodeIterator ForumPager(int forumId, int itemsPerPage, int currentPage, int distance)
+ {
+ var xd = new XmlDocument();
+ var totalTopics = 0;
+
+ if (forumId == 0)
+ totalTopics = Businesslogic.Topic.TotalTopics();
+ else
+ {
+ var f = new uForum.Businesslogic.Forum(forumId);
+ totalTopics = f.TotalTopics;
+ }
+
+ var pages = xmlHelper.addTextNode(xd, "pages", string.Empty);
+ var i = 0;
+ var p = 0;
+
+ while (i < (totalTopics))
+ {
+ var distanceFromCurrent = p - currentPage;
+ if (distanceFromCurrent > -distance && distanceFromCurrent < distance)
+ {
+ var page = xmlHelper.addTextNode(xd, "page", string.Empty);
+ page.Attributes.Append(xmlHelper.addAttribute(xd, "index", p.ToString()));
+
+ if (p == currentPage)
+ {
+ page.Attributes.Append(xmlHelper.addAttribute(xd, "current", "true"));
+ }
+
+ pages.AppendChild(page);
+ }
+
+ p++;
+ i = (i + itemsPerPage);
+ }
+
+ return pages.CreateNavigator().Select(".");
+ }
+
+ public static XPathNodeIterator TopicPager(int topicId, int itemsPerPage, int currentPage)
+ {
+ XmlDocument xd = new XmlDocument();
+ Businesslogic.Topic t = uForum.Businesslogic.Topic.GetTopic(topicId);
+
+ XmlNode pages = umbraco.xmlHelper.addTextNode(xd, "pages", "");
+
+ int i = 0;
+ int p = 0;
+
+ while (i < (t.Replies))
+ {
+ XmlNode page = umbraco.xmlHelper.addTextNode(xd, "page", "");
+ page.Attributes.Append(umbraco.xmlHelper.addAttribute(xd, "index", p.ToString()));
+ if (p == currentPage)
+ {
+ page.Attributes.Append(umbraco.xmlHelper.addAttribute(xd, "current", "true"));
+ }
+ pages.AppendChild(page);
+
+ p++;
+ i = (i + itemsPerPage);
+ }
+
+ return pages.CreateNavigator().Select(".");
+ }
+
+ public static XPathNodeIterator MemberTopicPager(int memberId, int itemsPerPage, int currentPage)
+ {
+ XmlDocument xd = new XmlDocument();
+ XmlNode pages = umbraco.xmlHelper.addTextNode(xd, "pages", "");
+
+ int i = 0;
+ int p = 0;
+ int total = uForum.Businesslogic.Forum.TotalTopicsAndComments(memberId);
+
+ while (i < (total))
+ {
+ XmlNode page = umbraco.xmlHelper.addTextNode(xd, "page", "");
+ page.Attributes.Append(umbraco.xmlHelper.addAttribute(xd, "index", p.ToString()));
+ if (p == currentPage)
+ {
+ page.Attributes.Append(umbraco.xmlHelper.addAttribute(xd, "current", "true"));
+ }
+ pages.AppendChild(page);
+
+ p++;
+ i = (i + itemsPerPage);
+ }
+
+ return pages.CreateNavigator().Select(".");
+ }
+
+ public static XPathNodeIterator AllForums(bool includeLatestData)
+ {
+
+
+ XmlDocument xd = new XmlDocument();
+ XmlNode x = xd.CreateElement("forums");
+
+ List forums = Businesslogic.Forum.Forums();
+ foreach (Businesslogic.Forum f in forums)
+ {
+ x.AppendChild(f.ToXml(xd, includeLatestData));
+ }
+
+ return x.CreateNavigator().Select(".");
+ }
+
+ public static XPathNodeIterator Forum(int id, bool includeLatestData)
+ {
+ XmlDocument xd = new XmlDocument();
+
+
+ return new Businesslogic.Forum(id).ToXml(xd, includeLatestData).CreateNavigator().Select(".");
+
+ }
+
+ public static XPathNodeIterator Forums(int parentId, bool includeLatestData)
+ {
+ XmlDocument xd = new XmlDocument();
+ XmlNode x = xd.CreateElement("forums");
+
+ List forums = Businesslogic.Forum.Forums(parentId);
+ foreach (Businesslogic.Forum f in forums)
+ {
+ x.AppendChild(f.ToXml(xd, includeLatestData));
+ }
+
+ return x.CreateNavigator().Select(".");
+ }
+
+ public static XPathNodeIterator ForumTopics(int nodeId, int amount)
+ {
+ XmlDocument xd = new XmlDocument();
+ XmlNode x = xd.CreateElement("topics");
+
+ List topics = Businesslogic.Topic.TopicsInForum(nodeId, amount, 1);
+ foreach (Businesslogic.Topic t in topics)
+ {
+ x.AppendChild(t.ToXml(xd));
+ }
+
+ return x.CreateNavigator().Select(".");
+ }
+
+ public static XPathNodeIterator Topic(int topicID)
+ {
+ XmlDocument xd = new XmlDocument();
+ Businesslogic.Topic t = uForum.Businesslogic.Topic.GetTopic(topicID);
+
+ if (t.Exists)
+ xd.AppendChild(t.ToXml(xd));
+
+ return xd.CreateNavigator().Select(".");
+ }
+
+ public static XPathNodeIterator Comment(int commentID)
+ {
+
+ XmlDocument xd = new XmlDocument();
+ Businesslogic.Comment c = new uForum.Businesslogic.Comment(commentID);
+
+ return c.ToXml(xd).CreateNavigator().Select(".");
+ }
+
+ public static XPathNodeIterator TopicComments(int topicID)
+ {
+
+ XmlDocument xd = new XmlDocument();
+ Businesslogic.Topic t = uForum.Businesslogic.Topic.GetTopic(topicID);
+
+ if (t.Exists)
+ {
+ XmlNode comments = umbraco.xmlHelper.addTextNode(xd, "comments", "");
+
+ foreach (Businesslogic.Comment cc in t.Comments)
+ {
+ comments.AppendChild(cc.ToXml(xd));
+ }
+
+ xd.AppendChild(comments);
+ }
+
+ return xd.CreateNavigator().Select(".");
+ }
+
+ public static XPathNodeIterator LatestTopics(int amount)
+ {
+ XmlDocument xd = new XmlDocument();
+ XmlNode x = xd.CreateElement("topics");
+
+ List topics = Businesslogic.Topic.Latest(amount);
+ foreach (Businesslogic.Topic t in topics)
+ {
+ x.AppendChild(t.ToXml(xd));
+ }
+
+ return x.CreateNavigator().Select(".");
+ }
+
+ public static string Sanitize(string html)
+ {
+ // Run it through Markdown first
+ var md = new Markdown();
+ html = md.Transform(html);
+
+ // Linkify images if they are shown as resized versions (only relevant for new Markdown comments)
+ var doc = new HtmlDocument();
+ doc.LoadHtml(html);
+
+ var root = doc.DocumentNode;
+ if (root != null)
+ {
+ var images = root.SelectNodes("//img");
+ if (images != null)
+ {
+ var replace = false;
+ foreach (var image in images)
+ {
+ var src = image.GetAttributeValue("src", "");
+ var orgSrc = src.Replace("rs/", "");
+
+ if (src == orgSrc || image.ParentNode.Name == "a") continue;
+
+ var a = doc.CreateElement("a");
+ a.SetAttributeValue("href", orgSrc);
+ a.SetAttributeValue("target", "_blank");
+
+ a.AppendChild(image.Clone());
+
+ image.ParentNode.ReplaceChild(a, image);
+
+ replace = true;
+ }
+
+ if (replace)
+ {
+ html = root.OuterHtml;
+ }
+ }
+ }
+
+ return Utills.Sanitize(html);
+ }
+
+ public static string TimeDiff(string secondDate)
+ {
+ DateTime date;
+ if (!DateTime.TryParse(secondDate, out date))
+ return secondDate;
+
+ var TS = DateTime.Now.Subtract(date);
+ var span = int.Parse(Math.Round(TS.TotalSeconds, 0).ToString());
+
+ if (span < 60)
+ return "1 minute ago";
+
+ if (span >= 60 && span < 3600)
+ return string.Concat(Math.Round(TS.TotalMinutes), " minutes ago");
+
+ if (span >= 3600 && span < 7200)
+ return "1 hour ago";
+
+ if (span >= 3600 && span < 86400)
+ return string.Concat(Math.Round(TS.TotalHours), " hours ago");
+
+ if (span >= 86400 && span < 172800)
+ return "1 day ago";
+
+ if (span >= 172800 && span < 604800)
+ return string.Concat(Math.Round(TS.TotalDays), " days ago");
+
+ if (span >= 604800 && span < 1209600)
+ return "1 week ago";
+
+ return date.ToString("MMMM d, yyyy @ hh:mm");
+ }
+
+
+ private static readonly Regex linkFinderRegex = new Regex("(((?)(.*?)()", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
+ private static readonly Regex preTagFinderRegex = new Regex("()(.*?)(
)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
+ private static readonly string link = "{2}";
+ private static readonly string imgLink = "
";
+ private static readonly Regex Base64ImageRegex = new Regex("(
)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
+ private static readonly Regex imageTagFinderRegex = new Regex("(
)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline);
+
+ public static void TopicNotFound(int topicId)
+ {
+ HttpContext.Current.Response.RedirectPermanent(string.Concat("/?topicNotFound=", topicId));
+ }
+
+ public static string ResolveLinks(string body)
+ {
+
+
+
+ if (string.IsNullOrEmpty(body))
+ return body;
+
+ //REMOVE BASE64 Images
+ body = Base64ImageRegex.Replace(body, "");
+
+
+ Dictionary replaceValues = new Dictionary();
+
+ int k = 0;
+ foreach (Match match in preTagFinderRegex.Matches(body))
+ {
+ string placeholder = string.Format("[[[[PreTagReplace{0}]]]]", k);
+ body = body.Replace(match.Value, placeholder);
+ replaceValues.Add(placeholder, "" + match.Groups[3].Value + "
");
+ k++;
+ }
+
+ int j = 0;
+ foreach (Match match in anchorFinderRegex.Matches(body))
+ {
+ string placeholder = string.Format("[[[[AnchorReplacer{0}]]]]", j);
+ body = body.Replace(match.Value, placeholder);
+
+
+ if (!match.Groups[5].Value.Contains("://") || imageTagFinderRegex.IsMatch(match.Groups[5].Value))
+ {
+ if (imageTagFinderRegex.IsMatch(match.Groups[5].Value))
+ {
+ replaceValues.Add(placeholder, string.Format(imgLink, string.Empty, match.Groups[3].Value, HttpUtility.UrlDecode(match.Groups[5].Value)));
+ }
+ else
+ {
+ replaceValues.Add(placeholder, string.Format(link, string.Empty, match.Groups[3].Value, HttpUtility.UrlDecode(match.Groups[5].Value)));
+ }
+ }
+ else
+ {
+ replaceValues.Add(placeholder, string.Format(link, string.Empty, match.Groups[3].Value, HttpUtility.UrlDecode(ShortenUrl(match.Groups[5].Value, 50))));
+ }
+ j++;
+ }
+
+
+ int i = 0;
+ foreach (Match match in linkFinderRegex.Matches(body))
+ {
+ string placeholder = string.Format("[[[[LinkReplacer{0}]]]]", i);
+ body = body.Replace(match.Value, placeholder);
+ if (!match.Value.Contains("://"))
+ {
+ replaceValues.Add(placeholder, string.Format(link, "http://", match.Value, HttpUtility.UrlDecode(ShortenUrl(match.Value, 50))));
+ }
+ else
+ {
+ replaceValues.Add(placeholder, string.Format(link, string.Empty, match.Value, HttpUtility.UrlDecode(ShortenUrl(match.Value, 50))));
+ }
+ i++;
+ }
+
+
+ foreach (KeyValuePair replaceValue in replaceValues)
+ {
+ body = body.Replace(replaceValue.Key, replaceValue.Value);
+ }
+
+ return body;
+ }
+ public static bool UseMarkdownEditor()
+ {
+ return ForumEditor.UseMarkdownEditor();
+ }
+
+ public static bool IsModerator()
+ {
+ return Utills.IsModerator();
+ }
+
+ public static bool CanSeeTopic(int topicId)
+ {
+ return Utills.CanSeeTopic(topicId);
+ }
+
+ public static bool CanSeeComment(int commentId)
+ {
+ return Utills.CanSeeComment(commentId);
+ }
+
+ private static string ShortenUrl(string url, int max)
+ {
+ if (url.Length <= max)
+ return url;
+
+ try
+ {
+ // Remove the protocal
+ int startIndex = url.IndexOf("://");
+
+ if (startIndex > -1)
+ url = url.Substring(startIndex + 3);
+
+ if (url.Length <= max)
+ return url;
+
+ // Remove the folder structure
+ int firstIndex = url.IndexOf("/") + 1;
+ int lastIndex = url.LastIndexOf("/");
+ if (firstIndex < lastIndex)
+ url = url.Replace(url.Substring(firstIndex, lastIndex - firstIndex), "...");
+
+ if (url.Length <= max)
+ return url;
+
+ // Remove URL parameters
+ int queryIndex = url.IndexOf("?");
+ if (queryIndex > -1)
+ url = url.Substring(0, queryIndex);
+
+ if (url.Length <= max)
+ return url;
+
+ // Remove URL fragment
+ int fragmentIndex = url.IndexOf("#");
+ if (fragmentIndex > -1)
+ url = url.Substring(0, fragmentIndex);
+
+ if (url.Length <= max)
+ return url;
+
+ // Shorten page
+ firstIndex = url.LastIndexOf("/") + 1;
+ lastIndex = url.LastIndexOf(".");
+ if (lastIndex - firstIndex > 10)
+ {
+ string page = url.Substring(firstIndex, lastIndex - firstIndex);
+ int length = url.Length - max + 3;
+ url = url.Replace(page, "..." + page.Substring(length));
+ }
+
+
+ return url;
+ }
+ catch
+ {
+ return url;
+ }
+ }
+
+
+ }
+}
diff --git a/uForum/Models/Comment.cs b/OurUmbraco/Forum/Models/Comment.cs
similarity index 91%
rename from uForum/Models/Comment.cs
rename to OurUmbraco/Forum/Models/Comment.cs
index 51852d18..8f381e1b 100644
--- a/uForum/Models/Comment.cs
+++ b/OurUmbraco/Forum/Models/Comment.cs
@@ -1,12 +1,8 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Runtime.Serialization;
-using System.Text;
-using System.Threading.Tasks;
using Umbraco.Core.Persistence;
-namespace uForum.Models
+namespace OurUmbraco.Forum.Models
{
[TableName("forumComments")]
[PrimaryKey("id")]
diff --git a/uForum/Models/CommentSaveModel.cs b/OurUmbraco/Forum/Models/CommentSaveModel.cs
similarity index 64%
rename from uForum/Models/CommentSaveModel.cs
rename to OurUmbraco/Forum/Models/CommentSaveModel.cs
index 41754999..5d94f0d8 100644
--- a/uForum/Models/CommentSaveModel.cs
+++ b/OurUmbraco/Forum/Models/CommentSaveModel.cs
@@ -1,11 +1,6 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Text;
-using System.Threading.Tasks;
+using System.Runtime.Serialization;
-namespace uForum.Models
+namespace OurUmbraco.Forum.Models
{
[DataContract( Name="comment")]
public class CommentSaveModel
diff --git a/uForum/Models/Forum.cs b/OurUmbraco/Forum/Models/Forum.cs
similarity index 88%
rename from uForum/Models/Forum.cs
rename to OurUmbraco/Forum/Models/Forum.cs
index 2762e692..05e86c19 100644
--- a/uForum/Models/Forum.cs
+++ b/OurUmbraco/Forum/Models/Forum.cs
@@ -1,11 +1,7 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using Umbraco.Core.Persistence;
-namespace uForum.Models
+namespace OurUmbraco.Forum.Models
{
[TableName("forumForums")]
[PrimaryKey("id", autoIncrement = false)]
diff --git a/uForum/Models/ReadOnlyComment.cs b/OurUmbraco/Forum/Models/ReadOnlyComment.cs
similarity index 94%
rename from uForum/Models/ReadOnlyComment.cs
rename to OurUmbraco/Forum/Models/ReadOnlyComment.cs
index aec10f3f..18256347 100644
--- a/uForum/Models/ReadOnlyComment.cs
+++ b/OurUmbraco/Forum/Models/ReadOnlyComment.cs
@@ -1,8 +1,7 @@
using System;
-using System.Runtime.Serialization;
using Umbraco.Core.Persistence;
-namespace uForum.Models
+namespace OurUmbraco.Forum.Models
{
[TableName("forumComments")]
[PrimaryKey("id")]
diff --git a/uForum/Models/ReadOnlyTopic.cs b/OurUmbraco/Forum/Models/ReadOnlyTopic.cs
similarity index 93%
rename from uForum/Models/ReadOnlyTopic.cs
rename to OurUmbraco/Forum/Models/ReadOnlyTopic.cs
index 0e04e5b9..18513a8b 100644
--- a/uForum/Models/ReadOnlyTopic.cs
+++ b/OurUmbraco/Forum/Models/ReadOnlyTopic.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using Umbraco.Core.Persistence;
-namespace uForum.Models
+namespace OurUmbraco.Forum.Models
{
///
/// A topic with all of it's data including comments and author names
diff --git a/uForum/Models/Topic.cs b/OurUmbraco/Forum/Models/Topic.cs
similarity index 94%
rename from uForum/Models/Topic.cs
rename to OurUmbraco/Forum/Models/Topic.cs
index 96adf5c6..15b5e752 100644
--- a/uForum/Models/Topic.cs
+++ b/OurUmbraco/Forum/Models/Topic.cs
@@ -1,11 +1,8 @@
using System;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using umbraco;
using Umbraco.Core.Persistence;
-namespace uForum.Models
+namespace OurUmbraco.Forum.Models
{
[TableName("forumTopics")]
[PrimaryKey("id")]
diff --git a/uForum/Models/TopicCommentRelator.cs b/OurUmbraco/Forum/Models/TopicCommentRelator.cs
similarity index 97%
rename from uForum/Models/TopicCommentRelator.cs
rename to OurUmbraco/Forum/Models/TopicCommentRelator.cs
index 0b1138be..6214c5c3 100644
--- a/uForum/Models/TopicCommentRelator.cs
+++ b/OurUmbraco/Forum/Models/TopicCommentRelator.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
-namespace uForum.Models
+namespace OurUmbraco.Forum.Models
{
class TopicCommentRelator
{
diff --git a/uForum/Models/TopicSaveModel.cs b/OurUmbraco/Forum/Models/TopicSaveModel.cs
similarity index 69%
rename from uForum/Models/TopicSaveModel.cs
rename to OurUmbraco/Forum/Models/TopicSaveModel.cs
index 83c1c89b..64a793ef 100644
--- a/uForum/Models/TopicSaveModel.cs
+++ b/OurUmbraco/Forum/Models/TopicSaveModel.cs
@@ -1,11 +1,6 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.Serialization;
-using System.Text;
-using System.Threading.Tasks;
+using System.Runtime.Serialization;
-namespace uForum.Models
+namespace OurUmbraco.Forum.Models
{
[DataContract(Name = "topic")]
public class TopicSaveModel
diff --git a/uForum/Services/CommentService.cs b/OurUmbraco/Forum/Services/CommentService.cs
similarity index 96%
rename from uForum/Services/CommentService.cs
rename to OurUmbraco/Forum/Services/CommentService.cs
index 75a21228..a8304a3d 100644
--- a/uForum/Services/CommentService.cs
+++ b/OurUmbraco/Forum/Services/CommentService.cs
@@ -1,14 +1,11 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using uForum.Extensions;
-using uForum.Models;
+using OurUmbraco.Forum.Extensions;
+using OurUmbraco.Forum.Models;
using Umbraco.Core;
using Umbraco.Core.Persistence;
-namespace uForum.Services
+namespace OurUmbraco.Forum.Services
{
///
/// Used for CRUD of comments - There aren't any query methods for comments here, comments are resolved with a Topic in a single query be displayed in the view
diff --git a/uForum/Services/ForumService.cs b/OurUmbraco/Forum/Services/ForumService.cs
similarity index 80%
rename from uForum/Services/ForumService.cs
rename to OurUmbraco/Forum/Services/ForumService.cs
index 5dfbf61f..dc7862c3 100644
--- a/uForum/Services/ForumService.cs
+++ b/OurUmbraco/Forum/Services/ForumService.cs
@@ -1,14 +1,10 @@
using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using uForum.Extensions;
-using uForum.Models;
+using OurUmbraco.Forum.Extensions;
using Umbraco.Core;
using Umbraco.Core.Persistence;
-namespace uForum.Services
+namespace OurUmbraco.Forum.Services
{
public class ForumService
{
@@ -20,20 +16,20 @@ namespace uForum.Services
_databaseContext = dbContext;
}
- public IEnumerable GetForums(int rootId)
+ public IEnumerable GetForums(int rootId)
{
var sql = new Sql();
- sql.Where(x => x.ParentId == rootId);
- sql.OrderBy(x => x.SortOrder);
- return _databaseContext.Database.Fetch(sql);
+ sql.Where(x => x.ParentId == rootId);
+ sql.OrderBy(x => x.SortOrder);
+ return _databaseContext.Database.Fetch(sql);
}
- public Forum GetById(int nodeId)
+ public Models.Forum GetById(int nodeId)
{
- return _databaseContext.Database.SingleOrDefault(nodeId);
+ return _databaseContext.Database.SingleOrDefault(nodeId);
}
- public void Delete(Forum forum)
+ public void Delete(Models.Forum forum)
{
var eventArgs = new ForumEventArgs() { Forum = forum };
if (Deleting.RaiseAndContinue(this, eventArgs))
@@ -45,7 +41,7 @@ namespace uForum.Services
CancelledByEvent.Raise(this, eventArgs);
}
- public Forum Save(Forum forum)
+ public Models.Forum Save(Models.Forum forum)
{
var newForum = _databaseContext.Database.ExecuteScalar("SELECT COUNT(*) FROM forumForums WHERE id=@id", new {id = forum.Id}) == 0;
var eventArgs = new ForumEventArgs() { Forum = forum };
diff --git a/uForum/Services/TopicService.cs b/OurUmbraco/Forum/Services/TopicService.cs
similarity index 98%
rename from uForum/Services/TopicService.cs
rename to OurUmbraco/Forum/Services/TopicService.cs
index e7b67d6e..aa0ea0e9 100644
--- a/uForum/Services/TopicService.cs
+++ b/OurUmbraco/Forum/Services/TopicService.cs
@@ -1,17 +1,14 @@
using System;
using System.Collections.Generic;
-using System.Data.SqlTypes;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using System.Web;
-using uForum.Extensions;
-using uForum.Models;
+using OurUmbraco.Forum.Extensions;
+using OurUmbraco.Forum.Models;
using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Persistence;
-namespace uForum.Services
+namespace OurUmbraco.Forum.Services
{
public class TopicService
{
diff --git a/uForum/Singleton.cs b/OurUmbraco/Forum/Singleton.cs
similarity index 71%
rename from uForum/Singleton.cs
rename to OurUmbraco/Forum/Singleton.cs
index bbda500c..3f2f615b 100644
--- a/uForum/Singleton.cs
+++ b/OurUmbraco/Forum/Singleton.cs
@@ -1,10 +1,6 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-namespace uForum
+namespace OurUmbraco.Forum
{
public class Singleton where T : class, new()
{
diff --git a/uForum/iNotFoundHandler.cs b/OurUmbraco/Forum/iNotFoundHandler.cs
similarity index 95%
rename from uForum/iNotFoundHandler.cs
rename to OurUmbraco/Forum/iNotFoundHandler.cs
index 98795061..8520f336 100644
--- a/uForum/iNotFoundHandler.cs
+++ b/OurUmbraco/Forum/iNotFoundHandler.cs
@@ -1,183 +1,180 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Xml;
-using System.Web;
-using umbraco.cms.businesslogic.web;
-using umbraco;
-using umbraco.cms.businesslogic.template;
-using umbraco.interfaces;
-using umbraco.NodeFactory;
-
-namespace uForum {
- public class iNotFoundHandler : umbraco.interfaces.INotFoundHandler {
- #region INotFoundHandler Members
-
- private int _redirectID = -1;
-
- public bool CacheUrl {
- get { return false; }
- }
-
- public bool Execute(string url) {
-
- HttpContext.Current.Trace.Write("umbraco.faltTemplateHandler","init");
-
- bool _succes = false;
- url = url.Replace(".aspx", string.Empty);
- string currentDomain = HttpContext.Current.Request.ServerVariables["SERVER_NAME"];
- if (url.Length > 0) {
- if (url.Substring(0, 1) == "/")
- url = url.Substring(1, url.Length - 1);
-
- XmlNode urlNode = null;
- string topicId = "";
- string topicTitle = "";
-
- HttpContext.Current.Trace.Write("umbraco.faltTemplateHandler url", url);
-
-
- // We're not at domain root
- if (url.IndexOf("/") != -1) {
-
- string theRealUrl = url.Substring(0, url.LastIndexOf("/"));
- string realUrlXPath = CreateXPathQuery(theRealUrl, true);
-
- urlNode = content.Instance.XmlContent.SelectSingleNode(realUrlXPath);
- topicTitle = url.Substring(url.LastIndexOf("/") + 1, url.Length - url.LastIndexOf(("/")) - 1).ToLower();
- topicId = topicTitle.Split('-')[0];
- topicTitle = topicTitle.Substring(topicTitle.IndexOf('-') + 1);
-
- if(urlNode != null)
- HttpContext.Current.Trace.Write("umbraco.faltTemplateHandler", topicId + " " + urlNode.Name);
- }
-
- if (urlNode != null && topicId != "" && urlNode.Name == "Forum") {
- _redirectID = int.Parse(urlNode.Attributes.GetNamedItem("id").Value);
-
- var cookie = new HttpCookie("altTemplate", "displaytopic");
- HttpContext.Current.Request.Cookies.Add(cookie);
-
- HttpContext.Current.Items["altTemplate"] = "displaytopic";
- HttpContext.Current.Items["topicID"] = topicId;
- HttpContext.Current.Items["topicTitle"] = topicTitle.Replace('-',' ');
-
- HttpContext.Current.Trace.Write("umbraco.faltTemplateHandler",
- string.Format("Templated changed to: '{0}'",
- HttpContext.Current.Items["altTemplate"]));
- _succes = true;
- }
- }
- return _succes;
- }
-
- public int redirectID {
- get {
- return _redirectID;
- }
-
- }
-
- private const string PageXPathQueryStart = "/root";
- private const string UrlName = "@urlName";
- public static string CreateXPathQuery(string url, bool checkDomain)
- {
-
- string _tempQuery = "";
- if (GlobalSettings.HideTopLevelNodeFromPath && checkDomain)
- {
- _tempQuery = "/root" + GetChildContainerName() + "/*";
- }
- else if (checkDomain)
- _tempQuery = "/root" + GetChildContainerName();
-
-
- string[] requestRawUrl = url.Split("/".ToCharArray());
-
- // Check for Domain prefix
- string domainUrl = "";
- if (checkDomain && Domain.Exists(HttpContext.Current.Request.ServerVariables["SERVER_NAME"]))
- {
- // we need to get the node based on domain
- INode n = new Node(Domain.GetRootFromDomain(HttpContext.Current.Request.ServerVariables["SERVER_NAME"]));
- domainUrl = n.UrlName; // we don't use niceUrlFetch as we need more control
- if (n.Parent != null)
- {
- while (n.Parent != null)
- {
- n = n.Parent;
- domainUrl = n.UrlName + "/" + domainUrl;
- }
- }
- domainUrl = "/" + domainUrl;
-
- // If at domain root
- if (url == "")
- {
- _tempQuery = "";
- requestRawUrl = domainUrl.Split("/".ToCharArray());
- HttpContext.Current.Trace.Write("requestHandler",
- "Redirecting to domain: " +
- HttpContext.Current.Request.ServerVariables["SERVER_NAME"] +
- ", nodeId: " +
- Domain.GetRootFromDomain(
- HttpContext.Current.Request.ServerVariables["SERVER_NAME"]).
- ToString());
- }
- else
- {
- // if it matches a domain url, skip all other xpaths and use this!
- string langXpath = CreateXPathQuery(domainUrl + "/" + url, false);
- if (content.Instance.XmlContent.DocumentElement.SelectSingleNode(langXpath) != null)
- return langXpath;
- }
- }
- else if (url == "" && !GlobalSettings.HideTopLevelNodeFromPath)
- _tempQuery += "/*";
-
- bool rootAdded = false;
- if (GlobalSettings.HideTopLevelNodeFromPath && requestRawUrl.Length == 1)
- {
- HttpContext.Current.Trace.Write("umbracoRequestHandler", "xpath: '" + _tempQuery + "'");
- if (_tempQuery == "")
- _tempQuery = "/root" + GetChildContainerName() + "/*";
- _tempQuery = "/root" + GetChildContainerName() + "/* [" + UrlName +
- " = \"" + requestRawUrl[0].Replace(".aspx", "").ToLower() + "\"] | " + _tempQuery;
- HttpContext.Current.Trace.Write("umbracoRequestHandler", "xpath: '" + _tempQuery + "'");
- rootAdded = true;
- }
-
-
- for (int i = 0; i <= requestRawUrl.GetUpperBound(0); i++)
- {
- if (requestRawUrl[i] != "")
- _tempQuery += GetChildContainerName() + "/* [" + UrlName + " = \"" + requestRawUrl[i].Replace(".aspx", "").ToLower() +
- "\"]";
- }
-
- if (GlobalSettings.HideTopLevelNodeFromPath && requestRawUrl.Length == 2)
- {
- _tempQuery += " | " + PageXPathQueryStart + GetChildContainerName() + "/* [" + UrlName + " = \"" +
- requestRawUrl[1].Replace(".aspx", "").ToLower() + "\"]";
- }
- HttpContext.Current.Trace.Write("umbracoRequestHandler", "xpath: '" + _tempQuery + "'");
-
- Debug.Write(_tempQuery + "(" + PageXPathQueryStart + ")");
-
- if (checkDomain)
- return _tempQuery;
- else if (!rootAdded)
- return PageXPathQueryStart + _tempQuery;
- else
- return _tempQuery;
- }
-
- private static string GetChildContainerName()
- {
- if (string.IsNullOrEmpty(UmbracoSettings.TEMP_FRIENDLY_XML_CHILD_CONTAINER_NODENAME) == false)
- return "/" + UmbracoSettings.TEMP_FRIENDLY_XML_CHILD_CONTAINER_NODENAME;
- return "";
- }
- #endregion
- }
-}
+using System.Diagnostics;
+using System.Web;
+using System.Xml;
+using umbraco;
+using umbraco.cms.businesslogic.web;
+using umbraco.interfaces;
+using umbraco.NodeFactory;
+
+namespace OurUmbraco.Forum {
+ public class iNotFoundHandler : umbraco.interfaces.INotFoundHandler {
+ #region INotFoundHandler Members
+
+ private int _redirectID = -1;
+
+ public bool CacheUrl {
+ get { return false; }
+ }
+
+ public bool Execute(string url) {
+
+ HttpContext.Current.Trace.Write("umbraco.faltTemplateHandler","init");
+
+ bool _succes = false;
+ url = url.Replace(".aspx", string.Empty);
+ string currentDomain = HttpContext.Current.Request.ServerVariables["SERVER_NAME"];
+ if (url.Length > 0) {
+ if (url.Substring(0, 1) == "/")
+ url = url.Substring(1, url.Length - 1);
+
+ XmlNode urlNode = null;
+ string topicId = "";
+ string topicTitle = "";
+
+ HttpContext.Current.Trace.Write("umbraco.faltTemplateHandler url", url);
+
+
+ // We're not at domain root
+ if (url.IndexOf("/") != -1) {
+
+ string theRealUrl = url.Substring(0, url.LastIndexOf("/"));
+ string realUrlXPath = CreateXPathQuery(theRealUrl, true);
+
+ urlNode = content.Instance.XmlContent.SelectSingleNode(realUrlXPath);
+ topicTitle = url.Substring(url.LastIndexOf("/") + 1, url.Length - url.LastIndexOf(("/")) - 1).ToLower();
+ topicId = topicTitle.Split('-')[0];
+ topicTitle = topicTitle.Substring(topicTitle.IndexOf('-') + 1);
+
+ if(urlNode != null)
+ HttpContext.Current.Trace.Write("umbraco.faltTemplateHandler", topicId + " " + urlNode.Name);
+ }
+
+ if (urlNode != null && topicId != "" && urlNode.Name == "Forum") {
+ _redirectID = int.Parse(urlNode.Attributes.GetNamedItem("id").Value);
+
+ var cookie = new HttpCookie("altTemplate", "displaytopic");
+ HttpContext.Current.Request.Cookies.Add(cookie);
+
+ HttpContext.Current.Items["altTemplate"] = "displaytopic";
+ HttpContext.Current.Items["topicID"] = topicId;
+ HttpContext.Current.Items["topicTitle"] = topicTitle.Replace('-',' ');
+
+ HttpContext.Current.Trace.Write("umbraco.faltTemplateHandler",
+ string.Format("Templated changed to: '{0}'",
+ HttpContext.Current.Items["altTemplate"]));
+ _succes = true;
+ }
+ }
+ return _succes;
+ }
+
+ public int redirectID {
+ get {
+ return _redirectID;
+ }
+
+ }
+
+ private const string PageXPathQueryStart = "/root";
+ private const string UrlName = "@urlName";
+ public static string CreateXPathQuery(string url, bool checkDomain)
+ {
+
+ string _tempQuery = "";
+ if (GlobalSettings.HideTopLevelNodeFromPath && checkDomain)
+ {
+ _tempQuery = "/root" + GetChildContainerName() + "/*";
+ }
+ else if (checkDomain)
+ _tempQuery = "/root" + GetChildContainerName();
+
+
+ string[] requestRawUrl = url.Split("/".ToCharArray());
+
+ // Check for Domain prefix
+ string domainUrl = "";
+ if (checkDomain && Domain.Exists(HttpContext.Current.Request.ServerVariables["SERVER_NAME"]))
+ {
+ // we need to get the node based on domain
+ INode n = new Node(Domain.GetRootFromDomain(HttpContext.Current.Request.ServerVariables["SERVER_NAME"]));
+ domainUrl = n.UrlName; // we don't use niceUrlFetch as we need more control
+ if (n.Parent != null)
+ {
+ while (n.Parent != null)
+ {
+ n = n.Parent;
+ domainUrl = n.UrlName + "/" + domainUrl;
+ }
+ }
+ domainUrl = "/" + domainUrl;
+
+ // If at domain root
+ if (url == "")
+ {
+ _tempQuery = "";
+ requestRawUrl = domainUrl.Split("/".ToCharArray());
+ HttpContext.Current.Trace.Write("requestHandler",
+ "Redirecting to domain: " +
+ HttpContext.Current.Request.ServerVariables["SERVER_NAME"] +
+ ", nodeId: " +
+ Domain.GetRootFromDomain(
+ HttpContext.Current.Request.ServerVariables["SERVER_NAME"]).
+ ToString());
+ }
+ else
+ {
+ // if it matches a domain url, skip all other xpaths and use this!
+ string langXpath = CreateXPathQuery(domainUrl + "/" + url, false);
+ if (content.Instance.XmlContent.DocumentElement.SelectSingleNode(langXpath) != null)
+ return langXpath;
+ }
+ }
+ else if (url == "" && !GlobalSettings.HideTopLevelNodeFromPath)
+ _tempQuery += "/*";
+
+ bool rootAdded = false;
+ if (GlobalSettings.HideTopLevelNodeFromPath && requestRawUrl.Length == 1)
+ {
+ HttpContext.Current.Trace.Write("umbracoRequestHandler", "xpath: '" + _tempQuery + "'");
+ if (_tempQuery == "")
+ _tempQuery = "/root" + GetChildContainerName() + "/*";
+ _tempQuery = "/root" + GetChildContainerName() + "/* [" + UrlName +
+ " = \"" + requestRawUrl[0].Replace(".aspx", "").ToLower() + "\"] | " + _tempQuery;
+ HttpContext.Current.Trace.Write("umbracoRequestHandler", "xpath: '" + _tempQuery + "'");
+ rootAdded = true;
+ }
+
+
+ for (int i = 0; i <= requestRawUrl.GetUpperBound(0); i++)
+ {
+ if (requestRawUrl[i] != "")
+ _tempQuery += GetChildContainerName() + "/* [" + UrlName + " = \"" + requestRawUrl[i].Replace(".aspx", "").ToLower() +
+ "\"]";
+ }
+
+ if (GlobalSettings.HideTopLevelNodeFromPath && requestRawUrl.Length == 2)
+ {
+ _tempQuery += " | " + PageXPathQueryStart + GetChildContainerName() + "/* [" + UrlName + " = \"" +
+ requestRawUrl[1].Replace(".aspx", "").ToLower() + "\"]";
+ }
+ HttpContext.Current.Trace.Write("umbracoRequestHandler", "xpath: '" + _tempQuery + "'");
+
+ Debug.Write(_tempQuery + "(" + PageXPathQueryStart + ")");
+
+ if (checkDomain)
+ return _tempQuery;
+ else if (!rootAdded)
+ return PageXPathQueryStart + _tempQuery;
+ else
+ return _tempQuery;
+ }
+
+ private static string GetChildContainerName()
+ {
+ if (string.IsNullOrEmpty(UmbracoSettings.TEMP_FRIENDLY_XML_CHILD_CONTAINER_NODENAME) == false)
+ return "/" + UmbracoSettings.TEMP_FRIENDLY_XML_CHILD_CONTAINER_NODENAME;
+ return "";
+ }
+ #endregion
+ }
+}
diff --git a/uForum/setuptables.sql b/OurUmbraco/Forum/setuptables.sql
similarity index 97%
rename from uForum/setuptables.sql
rename to OurUmbraco/Forum/setuptables.sql
index 18bf4b33..8c7888f1 100644
--- a/uForum/setuptables.sql
+++ b/OurUmbraco/Forum/setuptables.sql
@@ -1,240 +1,240 @@
-/****** Object: Table [dbo].[umbracoNode] Script Date: 05/15/2009 05:27:55 ******/
-SET ANSI_NULLS ON
-GO
-SET QUOTED_IDENTIFIER ON
-GO
-IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[umbracoNode]') AND type in (N'U'))
-BEGIN
-CREATE TABLE [dbo].[umbracoNode](
- [id] [int] IDENTITY(1,1) NOT NULL,
- [trashed] [bit] NOT NULL,
- [parentID] [int] NOT NULL,
- [nodeUser] [int] NULL,
- [level] [smallint] NOT NULL,
- [path] [nvarchar](150) COLLATE Danish_Norwegian_CI_AS NOT NULL,
- [sortOrder] [int] NOT NULL,
- [uniqueID] [uniqueidentifier] NULL,
- [text] [nvarchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
- [nodeObjectType] [uniqueidentifier] NULL,
- [createDate] [datetime] NOT NULL,
- CONSTRAINT [PK_structure] PRIMARY KEY CLUSTERED
-(
- [id] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
-)
-END
-GO
-IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[umbracoNode]') AND name = N'IX_umbracoNodeObjectType')
-CREATE NONCLUSTERED INDEX [IX_umbracoNodeObjectType] ON [dbo].[umbracoNode]
-(
- [nodeObjectType] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
-GO
-IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[umbracoNode]') AND name = N'IX_umbracoNodeParentId')
-CREATE NONCLUSTERED INDEX [IX_umbracoNodeParentId] ON [dbo].[umbracoNode]
-(
- [parentID] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
-GO
-/****** Object: Table [dbo].[forumForums] Script Date: 05/15/2009 05:27:55 ******/
-SET ANSI_NULLS ON
-GO
-SET QUOTED_IDENTIFIER ON
-GO
-IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[forumForums]') AND type in (N'U'))
-BEGIN
-CREATE TABLE [dbo].[forumForums](
- [id] [int] NOT NULL,
- [latestTopic] [int] NOT NULL,
- [latestComment] [int] NOT NULL,
- [totalTopics] [int] NOT NULL,
- [totalComments] [int] NOT NULL,
- [latestAuthor] [int] NOT NULL,
- [latestPostDate] [datetime] NOT NULL,
- [sortOrder] [int] NOT NULL,
- [parentId] [int] NOT NULL,
- CONSTRAINT [PK_forumForums] PRIMARY KEY CLUSTERED
-(
- [id] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
-)
-END
-GO
-/****** Object: Table [dbo].[forumTopics] Script Date: 05/15/2009 05:27:55 ******/
-SET ANSI_NULLS ON
-GO
-SET QUOTED_IDENTIFIER ON
-GO
-IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[forumTopics]') AND type in (N'U'))
-BEGIN
-CREATE TABLE [dbo].[forumTopics](
- [id] [int] IDENTITY(1,1) NOT NULL,
- [parentId] [int] NOT NULL,
- [memberId] [int] NOT NULL,
- [title] [nvarchar](70) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
- [body] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
- [created] [datetime] NOT NULL,
- [updated] [datetime] NOT NULL,
- [locked] [bit] NOT NULL,
- [latestReplyAuthor] [int] NOT NULL,
- [isSpam] [bit] NULL
- CONSTRAINT [PK_forumTopics] PRIMARY KEY CLUSTERED
-(
- [id] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
-)
-END
-GO
-/****** Object: Table [dbo].[forumComments] Script Date: 05/15/2009 05:27:55 ******/
-SET ANSI_NULLS ON
-GO
-SET QUOTED_IDENTIFIER ON
-GO
-IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[forumComments]') AND type in (N'U'))
-BEGIN
-CREATE TABLE [dbo].[forumComments](
- [id] [int] IDENTITY(1,1) NOT NULL,
- [topicId] [int] NOT NULL,
- [memberId] [int] NOT NULL,
- [body] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
- [created] [datetime] NOT NULL,
- [isSpam] [bit] NULL
- CONSTRAINT [PK_forumComments] PRIMARY KEY CLUSTERED
-(
- [id] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
-)
-END
-GO
-/****** Object: Default [DF_forumTopics_created] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumTopics_created]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumTopics]'))
-Begin
-ALTER TABLE [dbo].[forumTopics] ADD CONSTRAINT [DF_forumTopics_created] DEFAULT (getdate()) FOR [created]
-
-End
-GO
-/****** Object: Default [DF_forumTopics_updated] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumTopics_updated]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumTopics]'))
-Begin
-ALTER TABLE [dbo].[forumTopics] ADD CONSTRAINT [DF_forumTopics_updated] DEFAULT (getdate()) FOR [updated]
-
-End
-GO
-/****** Object: Default [DF_forumTopics_locked] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumTopics_locked]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumTopics]'))
-Begin
-ALTER TABLE [dbo].[forumTopics] ADD CONSTRAINT [DF_forumTopics_locked] DEFAULT ((0)) FOR [locked]
-
-End
-GO
-/****** Object: Default [DF_forumTopics_latestReplyAuthor] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumTopics_latestReplyAuthor]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumTopics]'))
-Begin
-ALTER TABLE [dbo].[forumTopics] ADD CONSTRAINT [DF_forumTopics_latestReplyAuthor] DEFAULT ((0)) FOR [latestReplyAuthor]
-
-End
-GO
-/****** Object: Default [DF_forumForums_latestTopic] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_latestTopic]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
-Begin
-ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_latestTopic] DEFAULT ((0)) FOR [latestTopic]
-
-End
-GO
-/****** Object: Default [DF_forumForums_latestComment] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_latestComment]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
-Begin
-ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_latestComment] DEFAULT ((0)) FOR [latestComment]
-
-End
-GO
-/****** Object: Default [DF_forumForums_totalTopics] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_totalTopics]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
-Begin
-ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_totalTopics] DEFAULT ((0)) FOR [totalTopics]
-
-End
-GO
-/****** Object: Default [DF_forumForums_totalComments] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_totalComments]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
-Begin
-ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_totalComments] DEFAULT ((0)) FOR [totalComments]
-
-End
-GO
-/****** Object: Default [DF_forumForums_latestAuthor] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_latestAuthor]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
-Begin
-ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_latestAuthor] DEFAULT ((0)) FOR [latestAuthor]
-
-End
-GO
-/****** Object: Default [DF_forumForums_latestPostDate] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_latestPostDate]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
-Begin
-ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_latestPostDate] DEFAULT (getdate()) FOR [latestPostDate]
-
-End
-GO
-/****** Object: Default [DF_forumForums_sortOrder] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_sortOrder]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
-Begin
-ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_sortOrder] DEFAULT ((0)) FOR [sortOrder]
-
-End
-GO
-/****** Object: Default [DF_forumComments_created] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumComments_created]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumComments]'))
-Begin
-ALTER TABLE [dbo].[forumComments] ADD CONSTRAINT [DF_forumComments_created] DEFAULT (getdate()) FOR [created]
-
-End
-GO
-/****** Object: Default [DF_umbracoNode_trashed] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_umbracoNode_trashed]') AND parent_object_id = OBJECT_ID(N'[dbo].[umbracoNode]'))
-Begin
-ALTER TABLE [dbo].[umbracoNode] ADD CONSTRAINT [DF_umbracoNode_trashed] DEFAULT ((0)) FOR [trashed]
-
-End
-GO
-/****** Object: Default [DF_umbracoNode_createDate] Script Date: 05/15/2009 05:27:55 ******/
-IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_umbracoNode_createDate]') AND parent_object_id = OBJECT_ID(N'[dbo].[umbracoNode]'))
-Begin
-ALTER TABLE [dbo].[umbracoNode] ADD CONSTRAINT [DF_umbracoNode_createDate] DEFAULT (getdate()) FOR [createDate]
-
-End
-GO
-/****** Object: ForeignKey [FK_forumTopics_umbracoNode1] Script Date: 05/15/2009 05:27:55 ******/
-IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_forumTopics_umbracoNode1]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumTopics]'))
-ALTER TABLE [dbo].[forumTopics] WITH CHECK ADD CONSTRAINT [FK_forumTopics_umbracoNode1] FOREIGN KEY([parentId])
-REFERENCES [dbo].[umbracoNode] ([id])
-ON DELETE CASCADE
-GO
-ALTER TABLE [dbo].[forumTopics] CHECK CONSTRAINT [FK_forumTopics_umbracoNode1]
-GO
-/****** Object: ForeignKey [FK_forumComments_forumTopics] Script Date: 05/15/2009 05:27:55 ******/
-IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_forumComments_forumTopics]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumComments]'))
-ALTER TABLE [dbo].[forumComments] WITH CHECK ADD CONSTRAINT [FK_forumComments_forumTopics] FOREIGN KEY([topicId])
-REFERENCES [dbo].[forumTopics] ([id])
-ON DELETE CASCADE
-GO
-ALTER TABLE [dbo].[forumComments] CHECK CONSTRAINT [FK_forumComments_forumTopics]
-GO
-/****** Object: ForeignKey [FK_umbracoNode_umbracoNode] Script Date: 05/15/2009 05:27:55 ******/
-IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_umbracoNode_umbracoNode]') AND parent_object_id = OBJECT_ID(N'[dbo].[umbracoNode]'))
-ALTER TABLE [dbo].[umbracoNode] WITH CHECK ADD CONSTRAINT [FK_umbracoNode_umbracoNode] FOREIGN KEY([parentID])
-REFERENCES [dbo].[umbracoNode] ([id])
-GO
-ALTER TABLE [dbo].[umbracoNode] CHECK CONSTRAINT [FK_umbracoNode_umbracoNode]
-GO
-CREATE TABLE [dbo].[cmsTagToTopic](
- [id] [int] IDENTITY(1,1) NOT NULL,
- [tagId] [int] NOT NULL,
- [topicId] [int] NOT NULL,
- [weight] [float] NOT NULL,
- CONSTRAINT [PK_cmsTagToTopic] PRIMARY KEY CLUSTERED
-(
- [id] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
-) ON [PRIMARY]
+/****** Object: Table [dbo].[umbracoNode] Script Date: 05/15/2009 05:27:55 ******/
+SET ANSI_NULLS ON
+GO
+SET QUOTED_IDENTIFIER ON
+GO
+IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[umbracoNode]') AND type in (N'U'))
+BEGIN
+CREATE TABLE [dbo].[umbracoNode](
+ [id] [int] IDENTITY(1,1) NOT NULL,
+ [trashed] [bit] NOT NULL,
+ [parentID] [int] NOT NULL,
+ [nodeUser] [int] NULL,
+ [level] [smallint] NOT NULL,
+ [path] [nvarchar](150) COLLATE Danish_Norwegian_CI_AS NOT NULL,
+ [sortOrder] [int] NOT NULL,
+ [uniqueID] [uniqueidentifier] NULL,
+ [text] [nvarchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
+ [nodeObjectType] [uniqueidentifier] NULL,
+ [createDate] [datetime] NOT NULL,
+ CONSTRAINT [PK_structure] PRIMARY KEY CLUSTERED
+(
+ [id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+)
+END
+GO
+IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[umbracoNode]') AND name = N'IX_umbracoNodeObjectType')
+CREATE NONCLUSTERED INDEX [IX_umbracoNodeObjectType] ON [dbo].[umbracoNode]
+(
+ [nodeObjectType] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+GO
+IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[umbracoNode]') AND name = N'IX_umbracoNodeParentId')
+CREATE NONCLUSTERED INDEX [IX_umbracoNodeParentId] ON [dbo].[umbracoNode]
+(
+ [parentID] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+GO
+/****** Object: Table [dbo].[forumForums] Script Date: 05/15/2009 05:27:55 ******/
+SET ANSI_NULLS ON
+GO
+SET QUOTED_IDENTIFIER ON
+GO
+IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[forumForums]') AND type in (N'U'))
+BEGIN
+CREATE TABLE [dbo].[forumForums](
+ [id] [int] NOT NULL,
+ [latestTopic] [int] NOT NULL,
+ [latestComment] [int] NOT NULL,
+ [totalTopics] [int] NOT NULL,
+ [totalComments] [int] NOT NULL,
+ [latestAuthor] [int] NOT NULL,
+ [latestPostDate] [datetime] NOT NULL,
+ [sortOrder] [int] NOT NULL,
+ [parentId] [int] NOT NULL,
+ CONSTRAINT [PK_forumForums] PRIMARY KEY CLUSTERED
+(
+ [id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+)
+END
+GO
+/****** Object: Table [dbo].[forumTopics] Script Date: 05/15/2009 05:27:55 ******/
+SET ANSI_NULLS ON
+GO
+SET QUOTED_IDENTIFIER ON
+GO
+IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[forumTopics]') AND type in (N'U'))
+BEGIN
+CREATE TABLE [dbo].[forumTopics](
+ [id] [int] IDENTITY(1,1) NOT NULL,
+ [parentId] [int] NOT NULL,
+ [memberId] [int] NOT NULL,
+ [title] [nvarchar](70) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
+ [body] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
+ [created] [datetime] NOT NULL,
+ [updated] [datetime] NOT NULL,
+ [locked] [bit] NOT NULL,
+ [latestReplyAuthor] [int] NOT NULL,
+ [isSpam] [bit] NULL
+ CONSTRAINT [PK_forumTopics] PRIMARY KEY CLUSTERED
+(
+ [id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+)
+END
+GO
+/****** Object: Table [dbo].[forumComments] Script Date: 05/15/2009 05:27:55 ******/
+SET ANSI_NULLS ON
+GO
+SET QUOTED_IDENTIFIER ON
+GO
+IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[forumComments]') AND type in (N'U'))
+BEGIN
+CREATE TABLE [dbo].[forumComments](
+ [id] [int] IDENTITY(1,1) NOT NULL,
+ [topicId] [int] NOT NULL,
+ [memberId] [int] NOT NULL,
+ [body] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
+ [created] [datetime] NOT NULL,
+ [isSpam] [bit] NULL
+ CONSTRAINT [PK_forumComments] PRIMARY KEY CLUSTERED
+(
+ [id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
+)
+END
+GO
+/****** Object: Default [DF_forumTopics_created] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumTopics_created]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumTopics]'))
+Begin
+ALTER TABLE [dbo].[forumTopics] ADD CONSTRAINT [DF_forumTopics_created] DEFAULT (getdate()) FOR [created]
+
+End
+GO
+/****** Object: Default [DF_forumTopics_updated] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumTopics_updated]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumTopics]'))
+Begin
+ALTER TABLE [dbo].[forumTopics] ADD CONSTRAINT [DF_forumTopics_updated] DEFAULT (getdate()) FOR [updated]
+
+End
+GO
+/****** Object: Default [DF_forumTopics_locked] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumTopics_locked]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumTopics]'))
+Begin
+ALTER TABLE [dbo].[forumTopics] ADD CONSTRAINT [DF_forumTopics_locked] DEFAULT ((0)) FOR [locked]
+
+End
+GO
+/****** Object: Default [DF_forumTopics_latestReplyAuthor] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumTopics_latestReplyAuthor]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumTopics]'))
+Begin
+ALTER TABLE [dbo].[forumTopics] ADD CONSTRAINT [DF_forumTopics_latestReplyAuthor] DEFAULT ((0)) FOR [latestReplyAuthor]
+
+End
+GO
+/****** Object: Default [DF_forumForums_latestTopic] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_latestTopic]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
+Begin
+ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_latestTopic] DEFAULT ((0)) FOR [latestTopic]
+
+End
+GO
+/****** Object: Default [DF_forumForums_latestComment] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_latestComment]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
+Begin
+ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_latestComment] DEFAULT ((0)) FOR [latestComment]
+
+End
+GO
+/****** Object: Default [DF_forumForums_totalTopics] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_totalTopics]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
+Begin
+ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_totalTopics] DEFAULT ((0)) FOR [totalTopics]
+
+End
+GO
+/****** Object: Default [DF_forumForums_totalComments] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_totalComments]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
+Begin
+ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_totalComments] DEFAULT ((0)) FOR [totalComments]
+
+End
+GO
+/****** Object: Default [DF_forumForums_latestAuthor] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_latestAuthor]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
+Begin
+ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_latestAuthor] DEFAULT ((0)) FOR [latestAuthor]
+
+End
+GO
+/****** Object: Default [DF_forumForums_latestPostDate] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_latestPostDate]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
+Begin
+ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_latestPostDate] DEFAULT (getdate()) FOR [latestPostDate]
+
+End
+GO
+/****** Object: Default [DF_forumForums_sortOrder] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumForums_sortOrder]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumForums]'))
+Begin
+ALTER TABLE [dbo].[forumForums] ADD CONSTRAINT [DF_forumForums_sortOrder] DEFAULT ((0)) FOR [sortOrder]
+
+End
+GO
+/****** Object: Default [DF_forumComments_created] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_forumComments_created]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumComments]'))
+Begin
+ALTER TABLE [dbo].[forumComments] ADD CONSTRAINT [DF_forumComments_created] DEFAULT (getdate()) FOR [created]
+
+End
+GO
+/****** Object: Default [DF_umbracoNode_trashed] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_umbracoNode_trashed]') AND parent_object_id = OBJECT_ID(N'[dbo].[umbracoNode]'))
+Begin
+ALTER TABLE [dbo].[umbracoNode] ADD CONSTRAINT [DF_umbracoNode_trashed] DEFAULT ((0)) FOR [trashed]
+
+End
+GO
+/****** Object: Default [DF_umbracoNode_createDate] Script Date: 05/15/2009 05:27:55 ******/
+IF Not EXISTS (SELECT * FROM sys.default_constraints WHERE object_id = OBJECT_ID(N'[dbo].[DF_umbracoNode_createDate]') AND parent_object_id = OBJECT_ID(N'[dbo].[umbracoNode]'))
+Begin
+ALTER TABLE [dbo].[umbracoNode] ADD CONSTRAINT [DF_umbracoNode_createDate] DEFAULT (getdate()) FOR [createDate]
+
+End
+GO
+/****** Object: ForeignKey [FK_forumTopics_umbracoNode1] Script Date: 05/15/2009 05:27:55 ******/
+IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_forumTopics_umbracoNode1]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumTopics]'))
+ALTER TABLE [dbo].[forumTopics] WITH CHECK ADD CONSTRAINT [FK_forumTopics_umbracoNode1] FOREIGN KEY([parentId])
+REFERENCES [dbo].[umbracoNode] ([id])
+ON DELETE CASCADE
+GO
+ALTER TABLE [dbo].[forumTopics] CHECK CONSTRAINT [FK_forumTopics_umbracoNode1]
+GO
+/****** Object: ForeignKey [FK_forumComments_forumTopics] Script Date: 05/15/2009 05:27:55 ******/
+IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_forumComments_forumTopics]') AND parent_object_id = OBJECT_ID(N'[dbo].[forumComments]'))
+ALTER TABLE [dbo].[forumComments] WITH CHECK ADD CONSTRAINT [FK_forumComments_forumTopics] FOREIGN KEY([topicId])
+REFERENCES [dbo].[forumTopics] ([id])
+ON DELETE CASCADE
+GO
+ALTER TABLE [dbo].[forumComments] CHECK CONSTRAINT [FK_forumComments_forumTopics]
+GO
+/****** Object: ForeignKey [FK_umbracoNode_umbracoNode] Script Date: 05/15/2009 05:27:55 ******/
+IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_umbracoNode_umbracoNode]') AND parent_object_id = OBJECT_ID(N'[dbo].[umbracoNode]'))
+ALTER TABLE [dbo].[umbracoNode] WITH CHECK ADD CONSTRAINT [FK_umbracoNode_umbracoNode] FOREIGN KEY([parentID])
+REFERENCES [dbo].[umbracoNode] ([id])
+GO
+ALTER TABLE [dbo].[umbracoNode] CHECK CONSTRAINT [FK_umbracoNode_umbracoNode]
+GO
+CREATE TABLE [dbo].[cmsTagToTopic](
+ [id] [int] IDENTITY(1,1) NOT NULL,
+ [tagId] [int] NOT NULL,
+ [topicId] [int] NOT NULL,
+ [weight] [float] NOT NULL,
+ CONSTRAINT [PK_cmsTagToTopic] PRIMARY KEY CLUSTERED
+(
+ [id] ASC
+)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
+) ON [PRIMARY]
GO
\ No newline at end of file
diff --git a/OurUmbraco/OurUmbraco.csproj b/OurUmbraco/OurUmbraco.csproj
index f804ac40..c4d1dcfb 100644
--- a/OurUmbraco/OurUmbraco.csproj
+++ b/OurUmbraco/OurUmbraco.csproj
@@ -109,6 +109,10 @@
..\packages\MarkdownDeep.NET.1.5\lib\.NetFramework 3.5\MarkdownDeep.dll
True
+
+ ..\packages\MarkdownSharp.1.13.0.0\lib\35\MarkdownSharp.dll
+ True
+
..\packages\UmbracoCms.Core.7.2.8-build103\lib\Microsoft.ApplicationBlocks.Data.dll
True
@@ -157,6 +161,7 @@
True
+
@@ -261,6 +266,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -316,6 +346,7 @@
+
@@ -327,7 +358,6 @@
-
diff --git a/OurUmbraco/Release/Import.cs b/OurUmbraco/Release/Import.cs
index aad22988..9c83d9bf 100644
--- a/OurUmbraco/Release/Import.cs
+++ b/OurUmbraco/Release/Import.cs
@@ -13,6 +13,7 @@ using System.Web.Hosting;
using System.Web.Mvc;
using System.Web.Script.Serialization;
using Newtonsoft.Json;
+using OurUmbraco.Release.Controllers;
using OurUmbraco.Release.Models;
using RestSharp;
using umbraco.NodeFactory;
diff --git a/OurUmbraco/packages.config b/OurUmbraco/packages.config
index 48ebecd5..8a1459a7 100644
--- a/OurUmbraco/packages.config
+++ b/OurUmbraco/packages.config
@@ -11,6 +11,7 @@
+
diff --git a/our.umbraco.org.sln b/our.umbraco.org.sln
index 518c10a3..6a80db27 100644
--- a/our.umbraco.org.sln
+++ b/our.umbraco.org.sln
@@ -11,8 +11,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
our.umbraco.org.vsmdi = our.umbraco.org.vsmdi
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "uForum", "uForum\uForum.csproj", "{547C2D0D-1B55-493B-AE0B-E031A5B8EE77}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "our.umbraco.org", "our.umbraco.org\our.umbraco.org.csproj", "{A625544F-660A-4C01-BA49-1B467D0322D9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Notification", "Notification\Notification.csproj", "{80E5F59D-A7A0-4CEE-AEB6-6C626C44B2B2}"
@@ -50,16 +48,6 @@ Global
{911907FB-3B9D-4E5F-9A45-16700A451A54}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{911907FB-3B9D-4E5F-9A45-16700A451A54}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{911907FB-3B9D-4E5F-9A45-16700A451A54}.Release|x86.ActiveCfg = Release|Any CPU
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}.Debug|x86.ActiveCfg = Debug|Any CPU
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}.Release|Any CPU.Build.0 = Release|Any CPU
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}.Release|x86.ActiveCfg = Release|Any CPU
{A625544F-660A-4C01-BA49-1B467D0322D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A625544F-660A-4C01-BA49-1B467D0322D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A625544F-660A-4C01-BA49-1B467D0322D9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
diff --git a/our.umbraco.org/Api/SearchController.cs b/our.umbraco.org/Api/SearchController.cs
index 94ab957a..648a124b 100644
--- a/our.umbraco.org/Api/SearchController.cs
+++ b/our.umbraco.org/Api/SearchController.cs
@@ -9,8 +9,7 @@ using System.Threading.Tasks;
using Examine.SearchCriteria;
using Lucene.Net.Documents;
using our.Models;
-using uForum;
-using uForum.Extensions;
+using OurUmbraco.Forum.Extensions;
using Umbraco.Web.WebApi;
namespace our.Api
diff --git a/our.umbraco.org/CustomHandlers/CommentVote.cs b/our.umbraco.org/CustomHandlers/CommentVote.cs
index b2b61623..3ade656a 100644
--- a/our.umbraco.org/CustomHandlers/CommentVote.cs
+++ b/our.umbraco.org/CustomHandlers/CommentVote.cs
@@ -1,7 +1,7 @@
using System;
+using OurUmbraco.Forum.Services;
using OurUmbraco.Powers.BusinessLogic;
using OurUmbraco.Powers.Library;
-using uForum.Services;
using Umbraco.Core;
using Action = OurUmbraco.Powers.BusinessLogic.Action;
diff --git a/our.umbraco.org/CustomHandlers/ForumIndexer.cs b/our.umbraco.org/CustomHandlers/ForumIndexer.cs
index d84059a7..97ca83b3 100644
--- a/our.umbraco.org/CustomHandlers/ForumIndexer.cs
+++ b/our.umbraco.org/CustomHandlers/ForumIndexer.cs
@@ -2,6 +2,8 @@
using Examine.LuceneEngine;
using Examine.LuceneEngine.Providers;
using our.Examine;
+using OurUmbraco.Forum;
+using OurUmbraco.Forum.Services;
using Umbraco.Core;
//WB Added
@@ -13,19 +15,19 @@ namespace our.CustomHandlers
protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
- uForum.Services.TopicService.Created += TopicService_Updated;
- uForum.Services.TopicService.Updated += TopicService_Updated;
- uForum.Services.TopicService.Deleting += TopicService_Deleted;
+ TopicService.Created += TopicService_Updated;
+ TopicService.Updated += TopicService_Updated;
+ TopicService.Deleting += TopicService_Deleted;
}
- void TopicService_Deleted(object sender, uForum.TopicEventArgs e)
+ void TopicService_Deleted(object sender, TopicEventArgs e)
{
var indexer = (SimpleDataIndexer)ExamineManager.Instance.IndexProviderCollection["ForumIndexer"];
indexer.DeleteFromIndex(e.Topic.Id.ToString());
}
- void TopicService_Updated(object sender, uForum.TopicEventArgs e)
+ void TopicService_Updated(object sender, TopicEventArgs e)
{
var indexer = (SimpleDataIndexer)ExamineManager.Instance.IndexProviderCollection["ForumIndexer"];
var dataSet = ((ForumDataService)indexer.DataService).CreateNewDocument(e.Topic.Id);
diff --git a/our.umbraco.org/CustomHandlers/ForumPostsCounter.cs b/our.umbraco.org/CustomHandlers/ForumPostsCounter.cs
index b5f14e25..114a7d6d 100644
--- a/our.umbraco.org/CustomHandlers/ForumPostsCounter.cs
+++ b/our.umbraco.org/CustomHandlers/ForumPostsCounter.cs
@@ -1,7 +1,7 @@
-using OurUmbraco.Powers.BusinessLogic;
-using uForum;
-using uForum.Extensions;
-using uForum.Services;
+using OurUmbraco.Forum;
+using OurUmbraco.Forum.Extensions;
+using OurUmbraco.Forum.Services;
+using OurUmbraco.Powers.BusinessLogic;
using Umbraco.Core;
using Umbraco.Web;
@@ -18,7 +18,7 @@ namespace our.CustomHandlers {
CommentService.Created += CommentService_Created;
}
- void CommentService_Created(object sender, uForum.CommentEventArgs e)
+ void CommentService_Created(object sender, CommentEventArgs e)
{
if (e.Comment != null && e.Comment.MemberId > 0)
{
@@ -32,7 +32,7 @@ namespace our.CustomHandlers {
}
}
- void TopicService_Created(object sender, uForum.TopicEventArgs e)
+ void TopicService_Created(object sender, TopicEventArgs e)
{
if (e.Topic != null && e.Topic.MemberId > 0)
{
diff --git a/our.umbraco.org/CustomHandlers/TopicVote.cs b/our.umbraco.org/CustomHandlers/TopicVote.cs
index d6441234..bad857a0 100644
--- a/our.umbraco.org/CustomHandlers/TopicVote.cs
+++ b/our.umbraco.org/CustomHandlers/TopicVote.cs
@@ -1,9 +1,9 @@
using System;
using System.Linq;
using System.Web.Security;
+using OurUmbraco.Forum.Services;
using OurUmbraco.Powers.BusinessLogic;
using OurUmbraco.Powers.Library;
-using uForum.Services;
using Umbraco.Core;
using Action = OurUmbraco.Powers.BusinessLogic.Action;
diff --git a/our.umbraco.org/Examine/ForumDataService.cs b/our.umbraco.org/Examine/ForumDataService.cs
index 84938872..244b8898 100644
--- a/our.umbraco.org/Examine/ForumDataService.cs
+++ b/our.umbraco.org/Examine/ForumDataService.cs
@@ -4,11 +4,9 @@ using System.Linq;
using System.Text;
using Examine;
using Examine.LuceneEngine;
-using uForum.Models;
-using uForum.Services;
+using OurUmbraco.Forum.Models;
+using OurUmbraco.Forum.Services;
//WB Added
-
-using uForum;
using Umbraco.Core;
namespace our.Examine
diff --git a/our.umbraco.org/our.umbraco.org.csproj b/our.umbraco.org/our.umbraco.org.csproj
index ccabdb4b..81047c8c 100644
--- a/our.umbraco.org/our.umbraco.org.csproj
+++ b/our.umbraco.org/our.umbraco.org.csproj
@@ -422,10 +422,6 @@
{a8e5c936-ecab-45b3-bfda-d12f680eb2a6}
OurUmbraco
-
- {547C2D0D-1B55-493B-AE0B-E031A5B8EE77}
- uForum
-
diff --git a/our.umbraco.org/usercontrols/ProjectForums.ascx.cs b/our.umbraco.org/usercontrols/ProjectForums.ascx.cs
index cc5c9f98..0a655dc5 100644
--- a/our.umbraco.org/usercontrols/ProjectForums.ascx.cs
+++ b/our.umbraco.org/usercontrols/ProjectForums.ascx.cs
@@ -4,8 +4,8 @@ using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
-using uForum.Models;
-using uForum.Services;
+using OurUmbraco.Forum.Models;
+using OurUmbraco.Forum.Services;
using umbraco.cms.businesslogic.member;
using umbraco.cms.businesslogic.web;
using umbraco.presentation.nodeFactory;
diff --git a/our.umbraco.org/usercontrols/Signup.ascx.cs b/our.umbraco.org/usercontrols/Signup.ascx.cs
index 46728ed6..63a6bb42 100644
--- a/our.umbraco.org/usercontrols/Signup.ascx.cs
+++ b/our.umbraco.org/usercontrols/Signup.ascx.cs
@@ -89,7 +89,7 @@ namespace our.usercontrols
memberService.Save(currentMember);
memberService.SavePassword(currentMember, tb_password.Text);
- uForum.Library.Utils.CheckForSpam(currentMember);
+ OurUmbraco.Forum.Library.Utils.CheckForSpam(currentMember);
Response.Redirect(library.NiceUrl(NextPage));
}
@@ -101,7 +101,7 @@ namespace our.usercontrols
if (member == null)
{
// If spammer then this will stop account creation
- var spamResult = uForum.Library.Utils.CheckForSpam(tb_email.Text, tb_name.Text, true);
+ var spamResult = OurUmbraco.Forum.Library.Utils.CheckForSpam(tb_email.Text, tb_name.Text, true);
if (spamResult != null && spamResult.Blocked)
return;
@@ -140,12 +140,12 @@ namespace our.usercontrols
spamResult.MemberId = member.Id;
memberService.AssignRole(member.Id, "potentialspam");
- uForum.Library.Utils.SendPotentialSpamMemberMail(spamResult);
+ OurUmbraco.Forum.Library.Utils.SendPotentialSpamMemberMail(spamResult);
}
else
{
- uForum.Library.Utils.SendActivationMail(member);
- uForum.Library.Utils.SendMemberSignupMail(member);
+ OurUmbraco.Forum.Library.Utils.SendActivationMail(member);
+ OurUmbraco.Forum.Library.Utils.SendMemberSignupMail(member);
}
memberService.AssignRole(member.Id, "notactivated");
diff --git a/uForum/uForum.csproj b/uForum/uForum.csproj
index 929efa9c..da175f83 100644
--- a/uForum/uForum.csproj
+++ b/uForum/uForum.csproj
@@ -247,39 +247,11 @@
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-