private void cbMod_Callback(object sender, Modules.ActiveForums.Controls.CallBackEventArgs e) { SettingsInfo ms = DataCache.MainSettings(ForumModuleId); Forum fi = null; if (e.Parameters.Length > 0) { if (ForumId < 1) { SetPermissions(Convert.ToInt32(e.Parameters[1])); ForumController fc = new ForumController(); fi = fc.Forums_Get(Convert.ToInt32(e.Parameters[1]), -1, false, true); } else { fi = ForumInfo; } switch (e.Parameters[0].ToLowerInvariant()) { case "moddel": { if (bModDelete) { int delAction = ms.DeleteBehavior; int tmpForumId = -1; int tmpTopicId = -1; int tmpReplyId = -1; tmpForumId = Convert.ToInt32(e.Parameters[1]); tmpTopicId = Convert.ToInt32(e.Parameters[2]); tmpReplyId = Convert.ToInt32(e.Parameters[3]); Author auth = null; if (fi.ModDeleteTemplateId > 0) { try { //Email.SendEmail(fi.ModDeleteTemplateId, PortalId, ForumModuleId, ForumTabId, tmpForumId, tmpTopicId, tmpReplyId, string.Empty, auth); Email.SendEmailToModerators(fi.ModDeleteTemplateId, PortalId, tmpForumId, tmpTopicId, tmpReplyId, ForumModuleId, ForumTabId, string.Empty); } catch (Exception ex) { } } if (tmpForumId > 0 & tmpTopicId > 0 && tmpReplyId == 0) { TopicsController tc = new TopicsController(); TopicInfo ti = tc.Topics_Get(PortalId, ForumModuleId, tmpTopicId); if (ti != null) { auth = ti.Author; } tc.Topics_Delete(PortalId, ModuleId, tmpForumId, tmpTopicId, delAction); } else if (tmpForumId > 0 & tmpTopicId > 0 & tmpReplyId > 0) { ReplyController rc = new ReplyController(); ReplyInfo ri = rc.Reply_Get(PortalId, ForumModuleId, tmpTopicId, tmpReplyId); if (ri != null) { auth = ri.Author; } rc.Reply_Delete(PortalId, tmpForumId, tmpTopicId, tmpReplyId, delAction); } } break; } case "modreject": { int tmpForumId = 0; int tmpTopicId = 0; int tmpReplyId = 0; int tmpAuthorId = 0; tmpForumId = Convert.ToInt32(e.Parameters[1]); tmpTopicId = Convert.ToInt32(e.Parameters[2]); tmpReplyId = Convert.ToInt32(e.Parameters[3]); tmpAuthorId = Convert.ToInt32(e.Parameters[4]); ModController mc = new ModController(); mc.Mod_Reject(PortalId, ForumModuleId, UserId, tmpForumId, tmpTopicId, tmpReplyId); if (fi.ModRejectTemplateId > 0 & tmpAuthorId > 0) { DotNetNuke.Entities.Users.UserController uc = new DotNetNuke.Entities.Users.UserController(); DotNetNuke.Entities.Users.UserInfo ui = uc.GetUser(PortalId, tmpAuthorId); if (ui != null) { Author au = new Author(); au.AuthorId = tmpAuthorId; au.DisplayName = ui.DisplayName; au.Email = ui.Email; au.FirstName = ui.FirstName; au.LastName = ui.LastName; au.Username = ui.Username; Email.SendEmail(fi.ModRejectTemplateId, PortalId, ForumModuleId, ForumTabId, tmpForumId, tmpTopicId, tmpReplyId, string.Empty, au); } } break; } case "modappr": { int tmpForumId = -1; int tmpTopicId = -1; int tmpReplyId = -1; tmpForumId = Convert.ToInt32(e.Parameters[1]); tmpTopicId = Convert.ToInt32(e.Parameters[2]); tmpReplyId = Convert.ToInt32(e.Parameters[3]); string sSubject = string.Empty; string sBody = string.Empty; if (tmpForumId > 0 & tmpTopicId > 0 && tmpReplyId == 0) { TopicsController tc = new TopicsController(); TopicInfo ti = tc.Topics_Get(PortalId, ForumModuleId, tmpTopicId, tmpForumId, -1, false); if (ti != null) { sSubject = ti.Content.Subject; sBody = ti.Content.Body; ti.IsApproved = true; tc.TopicSave(PortalId, ti); tc.Topics_SaveToForum(tmpForumId, tmpTopicId, PortalId, ModuleId); //TODO: Add Audit log for who approved topic if (fi.ModApproveTemplateId > 0 & ti.Author.AuthorId > 0) { Email.SendEmail(fi.ModApproveTemplateId, PortalId, ForumModuleId, ForumTabId, tmpForumId, tmpTopicId, tmpReplyId, string.Empty, ti.Author); } Subscriptions.SendSubscriptions(PortalId, ForumModuleId, ForumTabId, tmpForumId, tmpTopicId, 0, ti.Content.AuthorId); try { ControlUtils ctlUtils = new ControlUtils(); string sUrl = ctlUtils.BuildUrl(ForumTabId, ForumModuleId, fi.ForumGroup.PrefixURL, fi.PrefixURL, fi.ForumGroupId, fi.ForumID, TopicId, ti.TopicUrl, -1, -1, string.Empty, 1, -1, fi.SocialGroupId); // Utilities.NavigateUrl(ForumTabId, "", ParamKeys.ViewType & "=" & Views.Topic & "&" & ParamKeys.ForumId & "=" & ForumId, ParamKeys.TopicId & "=" & TopicId) if (sUrl.Contains("~/") || Request.QueryString["asg"] != null) { sUrl = Utilities.NavigateUrl(ForumTabId, "", ParamKeys.TopicId + "=" + TopicId); } Social amas = new Social(); if (Request.QueryString["asg"] == null & !(string.IsNullOrEmpty(MainSettings.ActiveSocialTopicsKey)) && fi.ActiveSocialEnabled) { amas.AddTopicToJournal(PortalId, ForumModuleId, ForumId, ti.TopicId, ti.Author.AuthorId, sUrl, sSubject, ti.Content.Summary, sBody, fi.ActiveSocialSecurityOption, fi.Security.Read, SocialGroupId); } else { amas.AddForumItemToJournal(PortalId, ForumModuleId, ti.Author.AuthorId, "forumtopic", sUrl, sSubject, sBody); } } catch (Exception ex) { DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); } } } else if (tmpForumId > 0 & tmpTopicId > 0 & tmpReplyId > 0) { ReplyController rc = new ReplyController(); ReplyInfo ri = rc.Reply_Get(PortalId, ForumModuleId, tmpTopicId, tmpReplyId); if (ri != null) { ri.IsApproved = true; sSubject = ri.Content.Subject; sBody = ri.Content.Body; rc.Reply_Save(PortalId, ri); TopicsController tc = new TopicsController(); tc.Topics_SaveToForum(tmpForumId, tmpTopicId, PortalId, ModuleId, tmpReplyId); TopicInfo ti = tc.Topics_Get(PortalId, ForumModuleId, tmpTopicId, tmpForumId, -1, false); //TODO: Add Audit log for who approved topic if (fi.ModApproveTemplateId > 0 & ri.Author.AuthorId > 0) { Email.SendEmail(fi.ModApproveTemplateId, PortalId, ForumModuleId, ForumTabId, tmpForumId, tmpTopicId, tmpReplyId, string.Empty, ri.Author); } Subscriptions.SendSubscriptions(PortalId, ForumModuleId, ForumTabId, tmpForumId, tmpTopicId, tmpReplyId, ri.Content.AuthorId); try { ControlUtils ctlUtils = new ControlUtils(); string fullURL = ctlUtils.BuildUrl(ForumTabId, ForumModuleId, fi.ForumGroup.PrefixURL, fi.PrefixURL, fi.ForumGroupId, fi.ForumID, TopicId, ti.TopicUrl, -1, -1, string.Empty, 1, -1, fi.SocialGroupId); if (fullURL.Contains("~/") || Request.QueryString["asg"] != null) { fullURL = Utilities.NavigateUrl(ForumTabId, "", new string[] { ParamKeys.TopicId + "=" + TopicId, ParamKeys.ContentJumpId + "=" + tmpReplyId }); } Social amas = new Social(); if (Request.QueryString["asg"] == null & !(string.IsNullOrEmpty(MainSettings.ActiveSocialTopicsKey)) && fi.ActiveSocialEnabled && !fi.ActiveSocialTopicsOnly) { amas.AddReplyToJournal(PortalId, ForumModuleId, ForumId, ri.TopicId, ri.ReplyId, ri.Author.AuthorId, fullURL, ri.Content.Subject, string.Empty, sBody, fi.ActiveSocialSecurityOption, fi.Security.Read, fi.SocialGroupId); } else { amas.AddForumItemToJournal(PortalId, ForumModuleId, ri.Author.AuthorId, "forumreply", fullURL, sSubject, sBody); } } catch (Exception ex) { DotNetNuke.Services.Exceptions.Exceptions.LogException(ex); } } } break; } } string cachekey = string.Format("AF-FV-{0}-{1}", PortalId, ModuleId); DataCache.CacheClearPrefix(cachekey); } BuildModList(); litTopics.RenderControl(e.Output); }
public HttpResponseMessage DeletePost(ModerationDTO dto) { var notify = NotificationsController.Instance.GetNotification(dto.NotificationId); ParseNotificationContext(notify.Context); var fc = new ForumController(); var fi = fc.Forums_Get(_forumId, -1, false, true); if (fi == null) { return(Request.CreateResponse(HttpStatusCode.OK, new { Message = "Forum Not Found" })); } if (!(IsMod(_forumId))) { return(Request.CreateResponse(HttpStatusCode.Forbidden, new { Message = "User is not a moderator for this forum" })); } int authorId; var ms = DataCache.MainSettings(_moduleId); if (_replyId > 0 & _replyId != _topicId) { var rc = new ReplyController(); var reply = rc.Reply_Get(PortalSettings.PortalId, _moduleId, _topicId, _replyId); if (reply == null) { return(Request.CreateResponse(HttpStatusCode.OK, new { Message = "Reply Not Found" })); } authorId = reply.Content.AuthorId; rc.Reply_Delete(PortalSettings.PortalId, _forumId, _topicId, _replyId, ms.DeleteBehavior); } else { var tc = new TopicsController(); var topic = tc.Topics_Get(PortalSettings.PortalId, _moduleId, _topicId); if (topic == null) { return(Request.CreateResponse(HttpStatusCode.OK, new { Message = "Topic Not Found" })); } authorId = topic.Content.AuthorId; tc.Topics_Delete(PortalSettings.PortalId, _moduleId, _forumId, _topicId, ms.DeleteBehavior); } if (fi.ModDeleteTemplateId > 0 && authorId > 0) { var uc = new Entities.Users.UserController(); var ui = uc.GetUser(PortalSettings.PortalId, authorId); if (ui != null) { var au = new Author { AuthorId = authorId, DisplayName = ui.DisplayName, Email = ui.Email, FirstName = ui.FirstName, LastName = ui.LastName, Username = ui.Username }; //Email.SendEmail(fi.ModDeleteTemplateId, PortalSettings.PortalId, _moduleId, _tabId, _forumId, _topicId, _replyId, string.Empty, null); Email.SendEmailToModerators(fi.ModDeleteTemplateId, PortalSettings.PortalId, _forumId, _topicId, _replyId, _moduleId, _tabId, string.Empty); } } NotificationsController.Instance.DeleteNotification(dto.NotificationId); return(Request.CreateResponse(HttpStatusCode.OK, new { Result = "success" })); }