public static int Create(FeedbackItem feedback, CommentFilter filter)
{
if (HttpContext.Current != null && HttpContext.Current.Request != null)
{
feedback.UserAgent = HttpContext.Current.Request.UserAgent;
feedback.IpAddress = HttpHelper.GetUserIpAddress(HttpContext.Current);
}
feedback.FlaggedAsSpam = true; //We're going to start with this assumption.
feedback.Author = HtmlHelper.SafeFormat(feedback.Author);
feedback.Body = HtmlHelper.ConvertUrlsToHyperLinks(HtmlHelper.ConvertToAllowedHtml(feedback.Body));
feedback.Title = HtmlHelper.SafeFormat(feedback.Title);
// If we are creating this feedback item as part of an import, we want to
// be sure to use the item's datetime, and not set it to the current time.
if (NullValue.NullDateTime.Equals(feedback.DateCreated))
{
feedback.DateCreated = Config.CurrentBlog.TimeZone.Now;
feedback.DateModified = feedback.DateCreated;
}
else if (NullValue.NullDateTime.Equals(feedback.DateModified))
{
feedback.DateModified = feedback.DateCreated;
}
if(filter != null)
filter.FilterBeforePersist(feedback);
feedback.Id = ObjectProvider.Instance().Create(feedback);
if(filter != null)
filter.FilterAfterPersist(feedback);
// if it's not the administrator commenting and it's not a trackback.
if (!SecurityHelper.IsAdmin && !String.IsNullOrEmpty(Config.CurrentBlog.Email) && feedback.FeedbackType != Extensibility.FeedbackType.PingTrack)
{
//In order to make this async, we need to pass the HttpContext.Current
//several layers deep. Instead, we should create our own context.
EmailCommentToAdmin(feedback, Config.CurrentBlog);
}
return feedback.Id;
}