/// <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();
                    }
                }

            }
        }
Ejemplo n.º 2
0
        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");
                }
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        /// <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);
                }
            }
        }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 7
0
        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");
        }