Exemplo n.º 1
0
        public void Save(bool silent, bool dontMarkAsSpam)
        {
            if (Id == 0)
            {
                if (Library.Utills.IsMember(MemberId) && !string.IsNullOrEmpty(Title) && !string.IsNullOrEmpty(Body))
                {
                    var createEventArgs = new CreateEventArgs();
                    FireBeforeCreate(createEventArgs);

                    if (createEventArgs.Cancel)
                    {
                        return;
                    }


                    UrlName = umbraco.cms.helpers.url.FormatUrl(Title);

                    Data.SqlHelper.ExecuteNonQuery("INSERT INTO forumTopics (parentId, memberId, title, urlName, body, latestReplyAuthor, isSpam) VALUES(@parentId, @memberId, @title, @urlname, @body, @latestReplyAuthor, @isSpam)",
                                                   Data.SqlHelper.CreateParameter("@parentId", ParentId),
                                                   Data.SqlHelper.CreateParameter("@memberId", MemberId),
                                                   Data.SqlHelper.CreateParameter("@title", Title),
                                                   Data.SqlHelper.CreateParameter("@urlname", UrlName),
                                                   Data.SqlHelper.CreateParameter("@latestReplyAuthor", LatestReplyAuthor),
                                                   Data.SqlHelper.CreateParameter("@body", Body),
                                                   Data.SqlHelper.CreateParameter("@isSpam", dontMarkAsSpam ? false : Forum.IsSpam(MemberId, string.Format("{0} - {1}", Title, Body), "topic"))
                                                   );

                    Created = DateTime.Now;
                    Updated = DateTime.Now;
                    Id      = Data.SqlHelper.ExecuteScalar <int>("SELECT MAX(id) FROM forumTopics WHERE memberId = @memberId", Data.SqlHelper.CreateParameter("@memberId", MemberId));

                    var forum = new Forum(ParentId);

                    if (forum.Exists)
                    {
                        forum.SetLatestTopic(Id);
                        forum.SetLatestAuthor(MemberId);
                        forum.LatestPostDate = DateTime.Now;
                        forum.Save();
                    }

                    // save tags
                    Tag.AddTagsToTopic(Id, Tags);

                    FireAfterCreate(createEventArgs);
                }
            }
            else
            {
                var updateEventArgs = new UpdateEventArgs();
                FireBeforeUpdate(updateEventArgs);

                if (updateEventArgs.Cancel == false)
                {
                    var totalComments = Data.SqlHelper.ExecuteScalar <int>("SELECT count(id) from forumComments where (forumComments.isSpam IS NULL OR forumComments.isSpam != 1) AND topicId = @id", Data.SqlHelper.CreateParameter("@id", Id));
                    LatestReplyAuthor = Data.SqlHelper.ExecuteScalar <int>("SELECT TOP 1 memberId FROM forumComments WHERE (forumComments.isSpam IS NULL OR forumComments.isSpam != 1) AND (topicId= @id) ORDER BY Created DESC ", Data.SqlHelper.CreateParameter("@id", Id));
                    LatestComment     = Data.SqlHelper.ExecuteScalar <int>("SELECT TOP 1 id FROM forumComments WHERE (forumComments.isSpam IS NULL OR forumComments.isSpam != 1) AND (topicId= @id) ORDER BY Created DESC ", Data.SqlHelper.CreateParameter("@id", Id));

                    UrlName = umbraco.cms.helpers.url.FormatUrl(Title);

                    if (silent == false)
                    {
                        Updated = DateTime.Now;
                    }

                    Data.SqlHelper.ExecuteNonQuery("UPDATE forumTopics SET replies = @replies, parentId = @parentId, memberId = @memberId, title = @title, urlname = @urlname, body = @body, updated = @updated, locked = @locked, latestReplyAuthor = @latestReplyAuthor, latestComment = @latestComment, isSpam = @isSpam WHERE id = @id",
                                                   Data.SqlHelper.CreateParameter("@parentId", ParentId),
                                                   Data.SqlHelper.CreateParameter("@memberId", MemberId),
                                                   Data.SqlHelper.CreateParameter("@title", Title),
                                                   Data.SqlHelper.CreateParameter("@urlname", UrlName),
                                                   Data.SqlHelper.CreateParameter("@body", Body),
                                                   Data.SqlHelper.CreateParameter("@id", Id),
                                                   Data.SqlHelper.CreateParameter("@updated", Updated),
                                                   Data.SqlHelper.CreateParameter("@latestReplyAuthor", LatestReplyAuthor),
                                                   Data.SqlHelper.CreateParameter("@latestComment", LatestComment),
                                                   Data.SqlHelper.CreateParameter("@locked", Locked),
                                                   Data.SqlHelper.CreateParameter("@replies", totalComments),
                                                   Data.SqlHelper.CreateParameter("@isSpam", dontMarkAsSpam ? false : Forum.IsSpam(MemberId, string.Format("{0} - {1}", Title, Body), "topic"))
                                                   );

                    // save tags
                    Tag.AddTagsToTopic(Id, Tags);

                    UpdateCommentsPosition();

                    FireAfterUpdate(updateEventArgs);
                }
            }
        }
Exemplo n.º 2
0
        public void Save(bool dontMarkAsSpam)
        {
            if (Id == 0)
            {
                if (Library.Utills.IsMember(MemberId) && !string.IsNullOrEmpty(Body))
                {
                    CreateEventArgs e = new CreateEventArgs();
                    FireBeforeCreate(e);
                    if (e.Cancel)
                    {
                        return;
                    }

                    Data.SqlHelper.ExecuteNonQuery("INSERT INTO forumComments (topicId, memberId, body, position, isSpam) VALUES(@topicId, @memberId, @body, @position, @isSpam)",
                                                   Data.SqlHelper.CreateParameter("@topicId", TopicId),
                                                   Data.SqlHelper.CreateParameter("@memberId", MemberId),
                                                   Data.SqlHelper.CreateParameter("@body", Body),
                                                   Data.SqlHelper.CreateParameter("@position", Position),
                                                   Data.SqlHelper.CreateParameter("@isSpam", dontMarkAsSpam ? false : Forum.IsSpam(MemberId, Body, "comment"))
                                                   );

                    Created = DateTime.Now;
                    Id      = Data.SqlHelper.ExecuteScalar <int>("SELECT MAX(id) FROM forumComments WHERE memberId = @memberId",
                                                                 Data.SqlHelper.CreateParameter("@memberId", MemberId));

                    Topic t = Topic.GetTopic(TopicId);
                    if (t.Exists)
                    {
                        t.Save();
                    }

                    Forum f = new Forum(t.ParentId);
                    if (f.Exists)
                    {
                        f.SetLatestComment(Id);
                        f.SetLatestTopic(t.Id);
                        f.SetLatestAuthor(MemberId);
                        f.LatestPostDate = DateTime.Now;
                        f.Save();
                    }


                    FireAfterCreate(e);
                }
            }
            else
            {
                UpdateEventArgs e = new UpdateEventArgs();
                FireBeforeUpdate(e);

                if (!e.Cancel)
                {
                    Data.SqlHelper.ExecuteNonQuery("UPDATE forumComments SET topicId = @topicId, memberId = @memberId, body = @body, isSpam = @isSpam WHERE id = @id",
                                                   Data.SqlHelper.CreateParameter("@topicId", TopicId),
                                                   Data.SqlHelper.CreateParameter("@memberId", MemberId),
                                                   Data.SqlHelper.CreateParameter("@body", Body),
                                                   Data.SqlHelper.CreateParameter("@id", Id),
                                                   Data.SqlHelper.CreateParameter("@isSpam", dontMarkAsSpam ? false : Forum.IsSpam(MemberId, Body, "comment"))
                                                   );
                    FireAfterUpdate(e);
                }
            }
        }