/// <summary> /// /// </summary> /// <param name="postid"></param> /// <param name="forumid"></param> /// <param name="status"></param> /// <param name="edittedText"></param> private void ModerateComment(int postid, int forumid, ModerationItemStatus status, string edittedText) { using (FullInputContext _context = new FullInputContext("")) { int threadId = 0, modId = 0, threadModStatus = 0; using (IDnaDataReader dataReader = _context.CreateDnaDataReader("")) { dataReader.ExecuteDEBUGONLY("select modid, threadid, status from threadmod where postid=" + postid.ToString()); if (dataReader.Read()) { threadId = dataReader.GetInt32NullAsZero("threadid"); modId = dataReader.GetInt32NullAsZero("modid"); threadModStatus = dataReader.GetInt32NullAsZero("status"); } } using (IDnaDataReader dataReader = _context.CreateDnaDataReader("moderatepost")) { dataReader.AddParameter("forumid", forumid); dataReader.AddParameter("threadid", threadId); dataReader.AddParameter("postid", postid); dataReader.AddParameter("modid", modId); dataReader.AddParameter("status", (int)status); dataReader.AddParameter("notes", ""); dataReader.AddParameter("referto", 0); dataReader.AddParameter("referredby", 0); dataReader.AddParameter("moderationstatus", threadModStatus); dataReader.Execute(); } if (status == ModerationItemStatus.PassedWithEdit) { using (IDnaDataReader dataReader = _context.CreateDnaDataReader("updatepostdetails")) { dataReader.AddParameter("userid", TestUserAccounts.GetNormalUserAccount.UserID); dataReader.AddParameter("postid", postid); dataReader.AddParameter("subject", ""); dataReader.AddParameter("text", edittedText); dataReader.AddParameter("setlastupdated", true); dataReader.AddParameter("forcemoderateandhide", 0); dataReader.AddParameter("ignoremoderation", 1); dataReader.Execute(); } } } }
public static void ApplyModerationDecision(IDnaDataReaderCreator creator, int forumId, ref int threadId, ref int postId, int modId, ModerationItemStatus decision, String notes, int referId, int threadModStatus, String emailType, out Queue<String> complainantEmails, out Queue<int> complainantIds, out Queue<int> modIds, out String authorEmail, out int authorId, int modUserId) { complainantEmails = new Queue<string>(); complainantIds = new Queue<int>(); modIds = new Queue<int>(); authorEmail = ""; authorId = 0; int processed = 0; using (IDnaDataReader dataReader = creator.CreateDnaDataReader("moderatepost")) { dataReader.AddParameter("forumid", forumId); dataReader.AddParameter("threadid", threadId); dataReader.AddParameter("postid", postId); dataReader.AddParameter("modid", modId); dataReader.AddParameter("status", (int)decision); dataReader.AddParameter("notes", notes); dataReader.AddParameter("referto", referId); dataReader.AddParameter("referredby", modUserId); dataReader.AddParameter("moderationstatus", threadModStatus); dataReader.AddParameter("emailType", emailType); dataReader.Execute(); while (dataReader.Read()) { authorEmail = dataReader.GetStringNullAsEmpty("authorsemail"); authorId = dataReader.GetInt32NullAsZero("authorid"); processed = dataReader.GetInt32NullAsZero("processed"); String complainantEmail = dataReader.GetStringNullAsEmpty("complaintsemail"); complainantEmails.Enqueue(complainantEmail); complainantIds.Enqueue(dataReader.GetInt32NullAsZero("complainantId")); modIds.Enqueue(dataReader.GetInt32NullAsZero("modid")); postId = dataReader.GetInt32NullAsZero("postid"); threadId = dataReader.GetInt32NullAsZero("threadid"); } } }
private void SendComplainantEmail(ModerationItemStatus decision, int siteId, int modId, int complainantId, String complainantEmail, String customText) { String emailSubject = ""; String emailBody = ""; ; if (decision == ModerationItemStatus.Passed) { EmailTemplates.FetchEmailText(AppContext.ReaderCreator, siteId, "RejectComplaintEmail", out emailSubject, out emailBody); } else if (decision == ModerationItemStatus.PassedWithEdit) { EmailTemplates.FetchEmailText(AppContext.ReaderCreator, siteId, "UpholdComplaintEditEntryEmail", out emailSubject, out emailBody); } else if (decision == ModerationItemStatus.Failed) { EmailTemplates.FetchEmailText(AppContext.ReaderCreator, siteId, "UpholdComplaintEmail", out emailSubject, out emailBody); } String reference = "P" + Convert.ToString(modId); emailBody = emailBody.Replace("++**reference_number**++", reference); emailSubject = emailSubject.Replace("++**reference_number**++", reference); if (decision == ModerationItemStatus.Passed || decision == ModerationItemStatus.PassedWithEdit) { emailBody = emailBody.Replace("++**inserted_text**++", customText); } try { //Actually send the email. DnaMessage sendMessage = new DnaMessage(InputContext); String sender = InputContext.TheSiteList.GetSite(siteId).ModeratorsEmail; sendMessage.SendEmailOrSystemMessage(complainantId, complainantEmail, sender, siteId, emailSubject, emailBody); } catch (DnaEmailException e) { AddErrorXml("EMAIL", "Unable to send email." + e.Message, RootElement); } }
private void SendAuthorEmail(ModerationItemStatus decision, int siteId, int forumId, int threadId, int postId, int authorId, String authorEmail, String emailType, String customText) { String contentURL = @"http://www.bbc.co.uk/dna/" + InputContext.TheSiteList.GetSite(siteId).SiteName + @"/F" + Convert.ToString(forumId) + @"?thread=" + Convert.ToString(threadId) + "&post=" + Convert.ToString(postId) + @"#p" + Convert.ToString(postId); String subject = ""; String body = ""; using (IDnaDataReader dataReader = InputContext.CreateDnaDataReader("fetchpostdetails")) { dataReader.AddParameter("postid", postId); dataReader.Execute(); if (dataReader.Read()) { subject = dataReader.GetStringNullAsEmpty("subject"); body = dataReader.GetStringNullAsEmpty("text"); } } String emailSubject = ""; String emailBody = ""; ; if (decision == ModerationItemStatus.Failed) { EmailTemplates.FetchEmailText(AppContext.ReaderCreator, siteId, "ContentRemovedEmail", out emailSubject, out emailBody); } else if (decision == ModerationItemStatus.PassedWithEdit) { EmailTemplates.FetchEmailText(AppContext.ReaderCreator, siteId, "ContentFailedAndEditedEmail", out emailSubject, out emailBody); } else { AddErrorXml("EMAIL", "Unable to send email: No email template.", RootElement); return; } String insertText; if (EmailTemplates.FetchInsertText(AppContext.ReaderCreator, siteId, emailType, out insertText)) { emailBody = emailBody.Replace("++**inserted_text**++", insertText); emailBody = emailBody.Replace("++**inserted_text**++", customText); emailBody = emailBody.Replace("++**content_type**++", "Posting"); emailBody = emailBody.Replace("++**add_content_method**++", "post it"); emailBody = emailBody.Replace("++**content_url**++", contentURL); emailBody = emailBody.Replace("++**content_subject**++", subject); emailBody = emailBody.Replace("++**content_text**++", body); emailSubject = emailSubject.Replace("++**content_type**++", "Posting"); try { //Actually send the email. DnaMessage sendMessage = new DnaMessage(InputContext); String sender = InputContext.TheSiteList.GetSite(siteId).ModeratorsEmail; sendMessage.SendEmailOrSystemMessage(authorId, authorEmail, sender, siteId, emailSubject, emailBody); } catch (DnaEmailException e) { AddErrorXml("EMAIL", "Unable to send email." + e.Message, RootElement); } } else { AddErrorXml("EMAIL", "Unable to send email: No email template reason.", RootElement); } }
/// <summary> /// Updates the moderation item and sends email for the decision /// </summary> /// <param name="siteId"></param> /// <param name="forumId"></param> /// <param name="threadId"></param> /// <param name="postId"></param> /// <param name="modId"></param> /// <param name="decision"></param> /// <param name="notes"></param> /// <param name="referId"></param> /// <param name="threadModStatus"></param> /// <param name="sendEmail"></param> /// <param name="emailType"></param> /// <param name="customText"></param> private void Update(int siteId, int forumId, int threadId, int postId, int modId, ModerationItemStatus decision, String notes, int referId, int threadModStatus, bool sendEmail, String emailType, String customText) { Queue<String> complainantEmails; Queue<int> complainantIds; Queue<int> modIds; String authorEmail; int authorId; ModerationPosts.ApplyModerationDecision(AppContext.ReaderCreator, forumId, ref threadId, ref postId, modId, decision, notes, referId, threadModStatus, emailType, out complainantEmails, out complainantIds, out modIds, out authorEmail, out authorId, InputContext.ViewingUser.UserID); // Send Author Email if content failed or amended. if (sendEmail && (decision == ModerationItemStatus.Failed || decision == ModerationItemStatus.PassedWithEdit)) { SendAuthorEmail(decision, siteId, forumId, threadId, postId, authorId, authorEmail, emailType, customText); } //Send ComplainantEmails for a final decision only. if (decision == ModerationItemStatus.Failed || decision == ModerationItemStatus.Passed || decision == ModerationItemStatus.PassedWithEdit) { for (Queue<string>.Enumerator e = complainantEmails.GetEnumerator(); e.MoveNext(); ) { string complainantEmail = e.Current; int complainantId = complainantIds.Dequeue(); int reference = modIds.Dequeue(); SendComplainantEmail(decision, siteId, reference, complainantId, complainantEmail, customText); } } }
private bool IsArchivePreModPosting(int postId, ModerationItemStatus decision, Api.PostStyle.Style postStyle) { if (postId == 0 && decision == ModerationItemStatus.Failed && postStyle == Api.PostStyle.Style.tweet) { return true; } return false; }
private void AddLatestPreModPostingToParamList(DnaTestURLRequest.ParamList paramList, ModerationItemStatus status, BBC.Dna.Api.PostStyle.Style postStyle) { paramList.Add("postid", 0); paramList.Add("alerts", 0); var pmp = GetLatestPreModPosting(); paramList.Add("threadid", pmp.threadId.HasValue ? pmp.threadId.Value : 0); paramList.Add("modid", pmp.modId); paramList.Add("forumid", pmp.forumId); paramList.Add("siteid", _siteid); paramList.Add("decision", (int)status); paramList.Add("postStyle", (int)postStyle); paramList.Add("skin", "purexml"); }