Пример #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CommentFilter"/> class.
 /// </summary>
 public CommentFilter(ISubtextContext context, ICommentSpamService spamService)
 {
     SubtextContext = context;
     SpamService    = spamService;
     Blog           = context.Blog;
     Cache          = context.Cache;
 }
Пример #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CommentFilter"/> class.
 /// </summary>
 public CommentFilter(ISubtextContext context, ICommentSpamService spamService)
 {
     SubtextContext = context;
     SpamService = spamService;
     Blog = context.Blog;
     Cache = context.Cache;
 }
Пример #3
0
        private int ApplyActionToCheckedFeedback(Action<FeedbackItem, ICommentSpamService> action)
        {
            ICommentSpamService feedbackService = null;
            if(Blog.FeedbackSpamServiceEnabled)
            {
                feedbackService = new AkismetSpamService(Config.CurrentBlog.FeedbackSpamServiceKey, Config.CurrentBlog,
                                                         null, Url);
            }

            int actionsApplied = 0;
            foreach(RepeaterItem item in feedbackRepeater.Items)
            {
                // Get the checkbox from the item or the alternating item.
                var deleteCheck = item.FindControl("chkDelete") as CheckBox ?? item.FindControl("chkDeleteAlt") as CheckBox;

                if(deleteCheck != null && deleteCheck.Checked)
                {
                    // Get the FeedbackId from the item or the alternating item.
                    var feedbackId = item.FindControl("FeedbackId") as HtmlInputHidden ?? item.FindControl("FeedbackIdAlt") as HtmlInputHidden;

                    int id;
                    if(feedbackId != null && int.TryParse(feedbackId.Value, out id))
                    {
                        FeedbackItem feedbackItem = FeedbackItem.Get(id);
                        if(feedbackItem != null)
                        {
                            actionsApplied++;

                            action(feedbackItem, feedbackService);
                        }
                    }
                }
            }
            return actionsApplied;
        }
Пример #4
0
        protected void lkbPost_Click(object sender, EventArgs e)
        {
            try
            {
                var entry = new Trackback(EntryId, txbTitle.Text, txbUrl.Text.EnsureUrl(), string.Empty,
                                          txbBody.Text.Trim().Length > 0 ? txbBody.Text.Trim() : txbTitle.Text);
                var commentService = new CommentService(SubtextContext, null);

                if (commentService.Create(entry, true /*runFilters*/) > 0)
                {
                    ICommentSpamService feedbackService = null;
                    if (Config.CurrentBlog.FeedbackSpamServiceEnabled)
                    {
                        feedbackService = new AkismetSpamService(Config.CurrentBlog.FeedbackSpamServiceKey,
                                                                 Config.CurrentBlog, null, Url);
                    }
                    var filter = new CommentFilter(SubtextContext, feedbackService);
                    filter.FilterAfterPersist(entry);
                    Messages.ShowMessage(Constants.RES_SUCCESSNEW);
                    Edit.Visible    = false;
                    Results.Visible = true;
                }
                else
                {
                    Messages.ShowError(Constants.RES_FAILUREEDIT
                                       + " There was a baseline problem posting your Trackback.");
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex);
                Messages.ShowError(String.Format(Constants.RES_EXCEPTION,
                                                 Constants.RES_FAILUREEDIT, ex.Message));
            }
        }
        public string pingBack(string sourceURI, string targetURI)
        {
            if (!Blog.TrackbacksEnabled)
            {
                return("Pingbacks are not enabled for this site.");
            }

            string pageTitle;

            // GetPostIDFromUrl returns the postID
            int?id = SubtextContext.RequestContext.GetIdFromRequest();

            if (id == null)
            {
                throw new XmlRpcFaultException(33, Resources.XmlRcpFault_DidNotLinkToPermalink);
            }

            Uri sourceUrl = sourceURI.ParseUri();
            Uri targetUrl = targetURI.ParseUri();

            // does the sourceURI actually contain the permalink ?
            if (sourceUrl == null || targetUrl == null ||
                !Verifier.SourceContainsTarget(sourceUrl, targetUrl, out pageTitle))
            {
                throw new XmlRpcFaultException(17, Resources.XmlRcpFault_InvalidLink);
            }

            //PTR = Pingback - TrackBack - Referral
            var trackback = new Trackback(id.Value, HtmlHelper.SafeFormat(pageTitle, SubtextContext.HttpContext.Server),
                                          new Uri(sourceURI), string.Empty,
                                          HtmlHelper.SafeFormat(pageTitle, SubtextContext.HttpContext.Server),
                                          Blog.TimeZone.Now);
            ICommentSpamService feedbackService = null;

            if (Blog.FeedbackSpamServiceEnabled)
            {
                feedbackService = new AkismetSpamService(Blog.FeedbackSpamServiceKey, Blog, null, Url);
            }
            var commentService = new CommentService(SubtextContext, new CommentFilter(SubtextContext, feedbackService));

            commentService.Create(trackback, true /*runFilters*/);

            //TODO: Create this using IoC container
            var emailService = new EmailService(EmailProvider.Instance(), new EmbeddedTemplateEngine(), SubtextContext);

            emailService.EmailCommentToBlogAuthor(trackback);

            return(String.Format(CultureInfo.InvariantCulture, Resources.XmlRpcMessage_ThanksForThePingback, sourceURI));
        }
Пример #6
0
        /// <summary>
        /// Approves the comment, and removes it from the SPAM folder or from the 
        /// Trash folder.
        /// </summary>
        /// <param name="feedback"></param>
        /// <param name="spamService"></param>
        /// <returns></returns>
        public static void Approve(this ObjectRepository repository, FeedbackItem feedback, ICommentSpamService spamService)
        {
            if (feedback == null)
            {
                throw new ArgumentNullException("feedback");
            }

            feedback.SetStatus(FeedbackStatusFlag.Approved, true);
            feedback.SetStatus(FeedbackStatusFlag.Deleted, false);
            if (spamService != null)
            {
                spamService.SubmitGoodFeedback(feedback);
            }

            repository.Update(feedback);
        }
Пример #7
0
        /// <summary>
        /// Approves the comment, and removes it from the SPAM folder or from the
        /// Trash folder.
        /// </summary>
        /// <param name="feedback"></param>
        /// <param name="spamService"></param>
        /// <returns></returns>
        public static void Approve(FeedbackItem feedback, ICommentSpamService spamService)
        {
            if (feedback == null)
            {
                throw new ArgumentNullException("feedback");
            }

            feedback.SetStatus(FeedbackStatusFlag.Approved, true);
            feedback.SetStatus(FeedbackStatusFlag.Deleted, false);
            if (spamService != null)
            {
                spamService.SubmitGoodFeedback(feedback);
            }

            Update(feedback);
        }
Пример #8
0
 private void CreateCommentWithContactMessage(FeedbackItem contactMessage)
 {
     try
     {
         ICommentSpamService feedbackService = null;
         if (Blog.FeedbackSpamServiceEnabled)
         {
             feedbackService = new AkismetSpamService(Blog.FeedbackSpamServiceKey, Blog, null, Url);
         }
         var commentService = new CommentService(SubtextContext,
                                                 new CommentFilter(SubtextContext, feedbackService));
         commentService.Create(contactMessage, true /*runFilters*/);
     }
     catch (BaseCommentException exc)
     {
         lblMessage.Text = exc.Message;
     }
 }
        private void CreateTrackbackAndSendResponse(ISubtextContext subtextContext, IEntryIdentity entry, int entryId)
        {
            HttpContextBase context  = subtextContext.RequestContext.HttpContext;
            string          title    = SafeParam(context, "title");
            string          excerpt  = SafeParam(context, "excerpt");
            string          urlText  = SafeParam(context, "url");
            string          blogName = SafeParam(context, "blog_name");

            Uri url = urlText.ParseUri();

            if (url == null)
            {
                SendTrackbackResponse(context, 1, Resources.TrackbackResponse_NoUrl);
                return;
            }

            if (entry == null ||
                !IsSourceVerification(url,
                                      subtextContext.UrlHelper.EntryUrl(entry).ToFullyQualifiedUrl(subtextContext.Blog)))
            {
                SendTrackbackResponse(context, 2,
                                      String.Format(CultureInfo.InvariantCulture,
                                                    Resources.TrackbackResponse_NoRelevantLink, url));
                return;
            }

            var trackback = new Trackback(entryId, title, url, blogName, excerpt, Blog.TimeZone.Now);
            ICommentSpamService feedbackService = null;
            Blog blog = subtextContext.Blog;

            if (blog.FeedbackSpamServiceEnabled)
            {
                feedbackService = new AkismetSpamService(blog.FeedbackSpamServiceKey, blog, null, Url);
            }
            var commentService = new CommentService(SubtextContext, new CommentFilter(SubtextContext, feedbackService));

            commentService.Create(trackback, true /*runFilters*/);
            //TODO: Create this using IoC container
            var emailService = new EmailService(EmailProvider.Instance(), new EmbeddedTemplateEngine(), subtextContext);

            emailService.EmailCommentToBlogAuthor(trackback);
        }
Пример #10
0
        private void OnSubmitButtonClick(object sender, EventArgs e)
        {
            Thread.Sleep(5000);
            if (!Page.IsValid)
            {
                return;
            }

            LastDitchValidation();
            try
            {
                Entry currentEntry = RealEntry;
                if (IsCommentAllowed)
                {
                    FeedbackItem        feedbackItem    = CreateFeedbackInstanceFromFormInput(currentEntry);
                    ICommentSpamService feedbackService = null;
                    if (Blog.FeedbackSpamServiceEnabled)
                    {
                        feedbackService = new AkismetSpamService(Blog.FeedbackSpamServiceKey, Blog, null, Url);
                    }
                    var commentService = new CommentService(SubtextContext,
                                                            new CommentFilter(SubtextContext, feedbackService));
                    commentService.Create(feedbackItem, true /*runFilters*/);
                    var emailService = new EmailService(EmailProvider.Instance(), new EmbeddedTemplateEngine(),
                                                        SubtextContext);
                    emailService.EmailCommentToBlogAuthor(feedbackItem);

                    if (chkRemember == null || chkRemember.Checked)
                    {
                        SetRememberedUserCookie();
                    }

                    DisplayResultMessage(feedbackItem);
                }
            }
            catch (BaseCommentException exception)
            {
                Message.Text = exception.Message;
            }
        }
Пример #11
0
        /// <summary>
        /// Confirms the feedback as spam and moves it to the trash.
        /// </summary>
        /// <param name="feedback">The feedback.</param>
        /// <param name="spamService"></param>
        public static void ConfirmSpam(FeedbackItem feedback, ICommentSpamService spamService)
        {
            if(feedback == null)
            {
                throw new ArgumentNullException("feedback");
            }

            feedback.SetStatus(FeedbackStatusFlag.Approved, false);
            feedback.SetStatus(FeedbackStatusFlag.ConfirmedSpam, true);

            if(spamService != null)
            {
                spamService.SubmitGoodFeedback(feedback);
            }

            Update(feedback);
        }
Пример #12
0
        /// <summary>
        /// Confirms the feedback as spam and moves it to the trash.
        /// </summary>
        /// <param name="feedback">The feedback.</param>
        /// <param name="spamService"></param>
        public static void ConfirmSpam(this ObjectRepository repository, FeedbackItem feedback, ICommentSpamService spamService)
        {
            if (feedback == null)
            {
                throw new ArgumentNullException("feedback");
            }

            feedback.SetStatus(FeedbackStatusFlag.Approved, false);
            feedback.SetStatus(FeedbackStatusFlag.ConfirmedSpam, true);

            if (spamService != null)
            {
                spamService.SubmitGoodFeedback(feedback);
            }

            repository.Update(feedback);
        }
Пример #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CommentMessageHandler"/> class.
 /// </summary>
 /// <param name="sessions">The sessions.</param>
 /// <param name="spamService">The spam service.</param>
 public CommentMessageHandler(IMomntzSessions sessions, ICommentSpamService spamService)
 {
     _sessions    = sessions;
     _spamService = spamService;
 }