Skip to content

Commit

Permalink
Merge pull request #777 from johnhenley/dev81/wrap/1-final-caching-724
Browse files Browse the repository at this point in the history
TASK: Final tweaks before 8.1
  • Loading branch information
WillStrohl committed May 2, 2024
2 parents 5741a6e + fff001f commit 85e6f31
Show file tree
Hide file tree
Showing 36 changed files with 2,248 additions and 2,233 deletions.
1 change: 0 additions & 1 deletion Dnn.CommunityForums/ActiveForumViewerSettings.ascx.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,6 @@ public override void UpdateSettings()
objModules.UpdateModuleSetting(ModuleId, ForumViewerSettingsKeys.AFForumGroup, drpForum.SelectedItem.Value);
//objModules.UpdateModuleSetting(ModuleId, "AFEnableToolbar", CType(chkEnableToolbar.Checked, String))
string ForumGroup;
int ForumGroupID = 0;
ForumGroup = drpForum.SelectedItem.Value;
if ((ForumGroup.IndexOf("GROUPID:", 0) + 1) > 0)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -375,9 +375,6 @@
<data name="SecGrid:view.Text" xml:space="preserve">
<value>View</value>
</data>
<data name="String1" xml:space="preserve">
<value />
</data>
<data name="UserPermissions.Text" xml:space="preserve">
<value>User Permissions</value>
</data>
Expand Down
26 changes: 25 additions & 1 deletion Dnn.CommunityForums/Controllers/ForumController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Xml;
using DotNetNuke.Data;
using DotNetNuke.Modules.ActiveForums.Data;
Expand Down Expand Up @@ -144,6 +145,30 @@ public static string GetForumsForUser(string userRoles, int portalId, int module
}
return forumIds;
}
public static string GetForumsHtmlOption(int moduleId, User currentUser)
{
var sb = new StringBuilder();
int index = 1;
var forums = new DotNetNuke.Modules.ActiveForums.Controllers.ForumController().GetForums(moduleId).Where(f => !f.Hidden && !f.ForumGroup.Hidden && (currentUser.IsSuperUser || DotNetNuke.Modules.ActiveForums.Controllers.PermissionController.HasPerm(f.Security.View, currentUser.UserRoles)));
DotNetNuke.Modules.ActiveForums.Controllers.ForumController.IterateForumsList(forums.ToList(), currentUser,
fi =>
{
sb.AppendFormat("<option value=\"{0}\">{1}</option>", "-1", fi.GroupName);
index += 1;
},
fi =>
{
sb.AppendFormat("<option value=\"{0}\">{1}</option>", fi.ForumID.ToString(), "--" + fi.ForumName);
index += 1;
},
fi =>
{
sb.AppendFormat("<option value=\"{0}\">----{1}</option>", fi.ForumID.ToString(), fi.ForumName);
index += 1;
}
);
return sb.ToString();
}
public XmlDocument GetForumListXML(int PortalId, int ModuleId)
{
XmlDocument xDoc = new XmlDocument();
Expand Down Expand Up @@ -248,7 +273,6 @@ public XmlDocument GetForumListXML(int PortalId, int ModuleId)
{
xDoc = (XmlDocument)obj;
}
//Logger.Log(xDoc.OuterXml)
return xDoc;
}
public int Forums_Save(int portalId, DotNetNuke.Modules.ActiveForums.Entities.ForumInfo fi, bool isNew, bool useGroupFeatures, bool useGroupSecurity)
Expand Down
78 changes: 50 additions & 28 deletions Dnn.CommunityForums/Controllers/ReplyController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// DEALINGS IN THE SOFTWARE.
//
using DotNetNuke.Data;
using DotNetNuke.Modules.ActiveForums.Data;
using DotNetNuke.Modules.ActiveForums.Services.ProcessQueue;
using DotNetNuke.Services.FileSystem;
using DotNetNuke.Services.Journal;
Expand All @@ -27,6 +28,7 @@
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Security.Policy;
using System.Text;
using System.Web;
Expand Down Expand Up @@ -55,6 +57,11 @@ public void Reply_Delete(int PortalId, int ForumId, int TopicId, int ReplyId, in
{
var ri = GetById(ReplyId);
DataProvider.Instance().Reply_Delete(ForumId, TopicId, ReplyId, DelBehavior);
DataCache.ContentCacheClear(ri.ModuleId, string.Format(CacheKeys.ForumInfo, ri.ModuleId, ForumId));
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.ForumViewPrefix, ri.ModuleId));
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.TopicViewPrefix, ri.ModuleId));
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.TopicsViewPrefix, ri.ModuleId));

var objectKey = string.Format("{0}:{1}:{2}", ForumId, TopicId, ReplyId);
JournalController.Instance.DeleteJournalItemByKey(PortalId, objectKey);

Expand Down Expand Up @@ -82,19 +89,23 @@ public void Reply_Delete(int PortalId, int ForumId, int TopicId, int ReplyId, in
public int Reply_QuickCreate(int PortalId, int ModuleId, int ForumId, int TopicId, int ReplyToId, string Subject, string Body, int UserId, string DisplayName, bool IsApproved, string IPAddress)
{
int replyId = -1;
DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo ri = new DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo();
ri.TopicId = TopicId;
ri.ReplyToId = ReplyToId;
ri.IsApproved = IsApproved;
ri.IsDeleted = false;
ri.StatusId = -1;
ri.Content = new DotNetNuke.Modules.ActiveForums.Entities.ContentInfo();
ri.Content.AuthorId = UserId;
ri.Content.AuthorName = DisplayName;
ri.Content.Subject = Subject;
ri.Content.Body = Body;
ri.Content.IPAddress = IPAddress;
ri.Content.Summary = string.Empty;
DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo ri = new DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo
{
TopicId = TopicId,
ReplyToId = ReplyToId,
IsApproved = IsApproved,
IsDeleted = false,
StatusId = -1,
Content = new DotNetNuke.Modules.ActiveForums.Entities.ContentInfo
{
AuthorId = UserId,
AuthorName = DisplayName,
Subject = Subject,
Body = Body,
IPAddress = IPAddress,
Summary = string.Empty
}
};
replyId = Reply_Save(PortalId, ModuleId, ri);
Utilities.UpdateModuleLastContentModifiedOnDate(ModuleId);
return replyId;
Expand All @@ -106,9 +117,15 @@ public int Reply_Save(int PortalId, int ModuleId, DotNetNuke.Modules.ActiveForum
{
ri.Content.DateCreated = DateTime.UtcNow;
}
Utilities.UpdateModuleLastContentModifiedOnDate(ModuleId);
// Clear profile Cache to make sure the LastPostDate is updated for Flood Control
UserProfileController.Profiles_ClearCache(ModuleId, ri.Content.AuthorId);

DataCache.ContentCacheClear(ri.ModuleId, string.Format(CacheKeys.ForumInfo, ri.ModuleId, ri.ForumId));
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.ForumViewPrefix, ri.ModuleId));
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.TopicViewPrefix, ri.ModuleId));
DataCache.CacheClearPrefix(ri.ModuleId, string.Format(CacheKeys.TopicsViewPrefix, ri.ModuleId));
DataCache.ContentCacheClear(ri.ModuleId, string.Format(CacheKeys.TopicViewForUser, ri.ModuleId, ri.TopicId, ri.Content.AuthorId));
return Convert.ToInt32(DataProvider.Instance().Reply_Save(PortalId, ri.TopicId, ri.ReplyId, ri.ReplyToId, ri.StatusId, ri.IsApproved, ri.IsDeleted, ri.Content.Subject.Trim(), ri.Content.Body.Trim(), ri.Content.DateCreated, ri.Content.DateUpdated, ri.Content.AuthorId, ri.Content.AuthorName, ri.Content.IPAddress));
}
public DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo Reply_Get(int PortalId, int ModuleId, int TopicId, int ReplyId)
Expand All @@ -118,24 +135,22 @@ public DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo Reply_Get(int PortalId
}
public DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo ApproveReply(int PortalId, int TabId, int ModuleId, int ForumId, int TopicId, int ReplyId)
{
DotNetNuke.Modules.ActiveForums.Entities.ForumInfo fi = new DotNetNuke.Modules.ActiveForums.Controllers.ForumController().GetById(forumId: ForumId, moduleId: ModuleId);

ReplyController rc = new ReplyController();
DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo reply = rc.Reply_Get(PortalId, ModuleId, TopicId, ReplyId);
DotNetNuke.Modules.ActiveForums.Entities.ForumInfo forum = new DotNetNuke.Modules.ActiveForums.Controllers.ForumController().GetById(forumId: ForumId, moduleId: ModuleId);
var rc = new DotNetNuke.Modules.ActiveForums.Controllers.ReplyController();
DotNetNuke.Modules.ActiveForums.Entities.ReplyInfo reply = rc.GetById(ReplyId);
if (reply == null)
{
return null;
}
reply.IsApproved = true;
rc.Reply_Save(PortalId, ModuleId, reply);
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.SaveToForum(ModuleId, ForumId, TopicId, ReplyId);
DotNetNuke.Modules.ActiveForums.Entities.TopicInfo topic = new DotNetNuke.Modules.ActiveForums.Controllers.TopicController().GetById(TopicId);

if (fi.ModApproveTemplateId > 0 & reply.Author.AuthorId > 0)
if (forum.ModApproveTemplateId > 0 & reply.Author.AuthorId > 0)
{
Email.SendEmail(fi.ModApproveTemplateId, PortalId, ModuleId, TabId, ForumId, TopicId, ReplyId, string.Empty, reply.Author);
DotNetNuke.Modules.ActiveForums.Controllers.EmailController.SendEmail(forum.ModApproveTemplateId, PortalId, ModuleId, TabId, ForumId, TopicId, ReplyId, string.Empty, reply.Author);
}
DotNetNuke.Modules.ActiveForums.Controllers.ReplyController.QueueApprovedReplyAfterAction(PortalId, TabId, ModuleId, fi.ForumGroupId, ForumId, TopicId, ReplyId, reply.Content.AuthorId);
DotNetNuke.Modules.ActiveForums.Controllers.ReplyController.QueueApprovedReplyAfterAction(PortalId, TabId, ModuleId, forum.ForumGroupId, ForumId, TopicId, ReplyId, reply.Content.AuthorId);

return reply;
}
Expand Down Expand Up @@ -167,6 +182,11 @@ internal static bool ProcessApprovedReplyAfterAction(int PortalId, int TabId, in
}
Social amas = new Social();
amas.AddReplyToJournal(PortalId, ModuleId, TabId, ForumId, TopicId, ReplyId, reply.Author.AuthorId, fullURL, reply.Content.Subject, string.Empty, reply.Content.Body, reply.Forum.Security.Read, reply.Forum.SocialGroupId);

DataCache.ContentCacheClear(reply.ModuleId, string.Format(CacheKeys.ForumInfo, reply.ModuleId, reply.ForumId));
DataCache.CacheClearPrefix(reply.ModuleId, string.Format(CacheKeys.ForumViewPrefix, reply.ModuleId));
DataCache.CacheClearPrefix(reply.ModuleId, string.Format(CacheKeys.TopicViewPrefix, reply.ModuleId));
DataCache.CacheClearPrefix(reply.ModuleId, string.Format(CacheKeys.TopicsViewPrefix, reply.ModuleId));
var pqc = new DotNetNuke.Modules.ActiveForums.Controllers.ProcessQueueController();
pqc.Add(ProcessType.UpdateForumTopicPointers, PortalId, tabId: TabId, moduleId: ModuleId, forumGroupId: ForumGroupId, forumId: ForumId, topicId: TopicId, replyId: ReplyId, authorId: AuthorId, requestUrl: RequestUrl);
pqc.Add(ProcessType.UpdateForumLastUpdated, PortalId, tabId: TabId, moduleId: ModuleId, forumGroupId: ForumGroupId, forumId: ForumId, topicId: TopicId, replyId: ReplyId, authorId: AuthorId, requestUrl: RequestUrl);
Expand Down Expand Up @@ -194,13 +214,15 @@ internal static bool ProcessUnapprovedReplyAfterAction(int PortalId, int TabId,
body = body.Replace("[Post]", reply.Content.Body);
string notificationKey = string.Format("{0}:{1}:{2}:{3}:{4}", TabId, ModuleId, ForumId, TopicId, ReplyId);

Notification notification = new Notification();
notification.NotificationTypeID = notificationType.NotificationTypeId;
notification.Subject = subject;
notification.Body = body;
notification.IncludeDismissAction = false;
notification.SenderUserID = reply.Content.AuthorId;
notification.Context = notificationKey;
Notification notification = new Notification
{
NotificationTypeID = notificationType.NotificationTypeId,
Subject = subject,
Body = body,
IncludeDismissAction = false,
SenderUserID = reply.Content.AuthorId,
Context = notificationKey
};

NotificationsController.Instance.SendNotification(notification, PortalId, null, mods);
return true;
Expand Down
23 changes: 22 additions & 1 deletion Dnn.CommunityForums/Controllers/TopicController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,14 @@ public static DotNetNuke.Modules.ActiveForums.Entities.TopicInfo Approve(int Top
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.Save(ti);
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.SaveToForum(ti.ModuleId, ti.ForumId, TopicId);

DataCache.ContentCacheClear(ti.ModuleId, string.Format(CacheKeys.ForumInfo, ti.ModuleId, ti.ForumId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.ForumViewPrefix, ti.ModuleId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.TopicViewPrefix, ti.ModuleId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.TopicsViewPrefix, ti.ModuleId));

if (ti.Forum.ModApproveTemplateId > 0 & ti.Author.AuthorId > 0)
{
Email.SendEmail(ti.Forum.ModApproveTemplateId, ti.PortalId, ti.ModuleId, ti.Forum.TabId, ti.ForumId, TopicId, 0, string.Empty, ti.Author);
DotNetNuke.Modules.ActiveForums.Controllers.EmailController.SendEmail(ti.Forum.ModApproveTemplateId, ti.PortalId, ti.ModuleId, ti.Forum.TabId, ti.ForumId, TopicId, 0, string.Empty, ti.Author);
}
DotNetNuke.Modules.ActiveForums.Controllers.TopicController.QueueApprovedTopicAfterAction(ti.PortalId, ti.Forum.TabId, ti.Forum.ModuleId, ti.Forum.ForumGroupId, ti.ForumId, TopicId, -1, ti.Content.AuthorId);
return ti;
Expand Down Expand Up @@ -159,10 +164,18 @@ public static void Move(int TopicId, int NewForumId)
new DotNetNuke.Modules.ActiveForums.Controllers.ProcessQueueController().Add(ProcessType.UpdateForumLastUpdated, ti.PortalId, tabId: -1, moduleId: ti.ModuleId, forumGroupId: oldForum.ForumGroupId, forumId: oldForum.ForumID, topicId: TopicId, replyId: -1, authorId: ti.Content.AuthorId, requestUrl: null);
new DotNetNuke.Modules.ActiveForums.Controllers.ProcessQueueController().Add(ProcessType.UpdateForumLastUpdated, ti.PortalId, tabId: -1, moduleId: ti.ModuleId, forumGroupId: newForum.ForumGroupId, forumId: newForum.ForumID, topicId: TopicId, replyId: -1, authorId: ti.Content.AuthorId, requestUrl: null);
Utilities.UpdateModuleLastContentModifiedOnDate(ti.ModuleId);
DataCache.ContentCacheClear(ti.ModuleId, string.Format(CacheKeys.ForumInfo, ti.ModuleId, ti.ForumId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.ForumViewPrefix, ti.ModuleId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.TopicViewPrefix, ti.ModuleId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.TopicsViewPrefix, ti.ModuleId));
}
public static int SaveToForum(int ModuleId, int ForumId, int TopicId, int LastReplyId = -1)
{
Utilities.UpdateModuleLastContentModifiedOnDate(ModuleId);
DataCache.ContentCacheClear(ModuleId, string.Format(CacheKeys.ForumInfo, ModuleId, ForumId));
DataCache.CacheClearPrefix(ModuleId, string.Format(CacheKeys.ForumViewPrefix, ModuleId));
DataCache.CacheClearPrefix(ModuleId, string.Format(CacheKeys.TopicViewPrefix, ModuleId));
DataCache.CacheClearPrefix(ModuleId, string.Format(CacheKeys.TopicsViewPrefix, ModuleId));
return Convert.ToInt32(DataProvider.Instance().Topics_SaveToForum(ForumId, TopicId, LastReplyId));
}
public static int Save(DotNetNuke.Modules.ActiveForums.Entities.TopicInfo ti)
Expand All @@ -178,6 +191,11 @@ public static int Save(DotNetNuke.Modules.ActiveForums.Entities.TopicInfo ti)
var uc = new Data.Profiles();
uc.Profile_UpdateTopicCount(ti.Forum.PortalId, ti.Author.AuthorId);
}
Utilities.UpdateModuleLastContentModifiedOnDate(ti.ModuleId);
DataCache.ContentCacheClear(ti.ModuleId, string.Format(CacheKeys.ForumInfo, ti.ModuleId, ti.ForumId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.ForumViewPrefix, ti.ModuleId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.TopicViewPrefix, ti.ModuleId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.TopicsViewPrefix, ti.ModuleId));
//TODO: convert to use DAL2?
return Convert.ToInt32(DataProvider.Instance().Topics_Save(ti.Forum.PortalId, ti.TopicId, ti.ViewCount, ti.ReplyCount, ti.IsLocked, ti.IsPinned, ti.TopicIcon, ti.StatusId, ti.IsApproved, ti.IsDeleted, ti.IsAnnounce, ti.IsArchived, ti.AnnounceStart, ti.AnnounceEnd, ti.Content.Subject.Trim(), ti.Content.Body.Trim(), ti.Content.Summary.Trim(), ti.Content.DateCreated, ti.Content.DateUpdated, ti.Content.AuthorId, ti.Content.AuthorName, ti.Content.IPAddress, (int)ti.TopicType, ti.Priority, ti.TopicUrl, ti.TopicData));
}
Expand All @@ -198,7 +216,10 @@ public void DeleteById(int TopicId)

DataProvider.Instance().Topics_Delete(ti.ForumId, TopicId, SettingsBase.GetModuleSettings(ti.ModuleId).DeleteBehavior );
Utilities.UpdateModuleLastContentModifiedOnDate(ti.ModuleId);
DataCache.ContentCacheClear(ti.ModuleId, string.Format(CacheKeys.ForumInfo, ti.ModuleId, ti.ForumId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.ForumViewPrefix, ti.ModuleId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.TopicViewPrefix, ti.ModuleId));
DataCache.CacheClearPrefix(ti.ModuleId, string.Format(CacheKeys.TopicsViewPrefix, ti.ModuleId));

if (SettingsBase.GetModuleSettings(ti.ModuleId).DeleteBehavior != 0)
return;
Expand Down
1 change: 0 additions & 1 deletion Dnn.CommunityForums/CustomControls/HTML/SecurityGrid.cs
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,6 @@ public string GetNewGrid()
sb.Append("<table cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\"><div class=\"afsecobjects\"><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">");
sb.Append("<tr><td class=\"afsecobjecthd\" colspan=\"2\">" + Utilities.GetSharedResource("[RESX:SecureObjects]", true) + "</td></tr>");
string tmpObjectName = string.Empty;
int secRows = 0;
for (int x = 0; x < pl.Count; x++)
{
sb.Append("<tr><td style=\"width:16px;\"></td><td class=\"afsecobject\" style=\"white-space:nowrap;\"><div class=\"afsecobjecttxt\" title=\"" + grid[x, 1] + "\" onmouseover=\"this.firstChild.style.display='';\" onmouseout=\"this.firstChild.style.display='none';\"><span style=\"width:16px;height:16px;float:right;display:none;\">");
Expand Down
1 change: 0 additions & 1 deletion Dnn.CommunityForums/CustomControls/HTML/TopicViewer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,6 @@ public string Render()
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
Data.Topics db = new Data.Topics();
int i = 0;

using (IDataReader dr = db.TopicWithReplies(PortalId, TopicId, PageIndex, PageSize))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,6 @@ protected override void Render(System.Web.UI.HtmlTextWriter writer)
System.Text.StringBuilder sb = new System.Text.StringBuilder();

int i = 0;
string controlToLoad = "";
writer = new HtmlTextWriter(writer, string.Empty);
AddAttributesToRender(writer);
foreach (Tab tab in Tabs)
Expand Down
Loading

0 comments on commit 85e6f31

Please sign in to comment.