Beispiel #1
0
        public Forum(int forumID)
        {
            umbraco.DataLayer.IRecordsReader dr = Data.SqlHelper.ExecuteReader("SELECT * FROM forumForums WHERE ID = @id", Data.SqlHelper.CreateParameter("@id", forumID));

            if (dr.Read()) {
                Node n = new Node(dr.GetInt("id"));

                    Forum f = new Forum();
                    Id = dr.GetInt("id");
                    Title = n.Name;

                    if(n.GetProperty("forumDescription") != null)
                        Description = n.GetProperty("forumDescription").Value;

                    Exists = true;
                    TotalComments = dr.GetInt("totalComments");
                    TotalTopics = dr.GetInt("totalTopics");

                    //Latest private vals
                    _latestAuthorID = dr.GetInt("latestAuthor");
                    _latestCommentID = dr.GetInt("latestComment");
                    _latestTopicID = dr.GetInt("latestTopic");
                    LatestPostDate = dr.GetDateTime("latestPostDate");

            } else
                Exists = false;

            dr.Close();
            dr.Dispose();
        }
Beispiel #2
0
        protected void bindForum(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                uForum.Businesslogic.Forum f = (uForum.Businesslogic.Forum)e.Item.DataItem;
                Literal _title = (Literal)e.Item.FindControl("lt_titel");
                Literal _desc  = (Literal)e.Item.FindControl("lt_desc");
                Literal _link  = (Literal)e.Item.FindControl("lt_link");

                _title.Text = f.Title;
                _desc.Text  = f.Description;
                _link.Text  = "<a href='?id=" + Request.QueryString["id"] + "&forum=" + f.Id.ToString() + "'>Edit</a>";
            }
        }
Beispiel #3
0
        void Forum_AfterCreate(object sender, CreateEventArgs e)
        {
            //WB added to show these events are firing...
            umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "Forum_AfterCreate in NotificationsWeb.EventHandlers.Forum() class is starting");

            //subscribe project owner to created forum
            uForum.Businesslogic.Forum f = (uForum.Businesslogic.Forum)sender;

            Node n = new Node(f.ParentId);

            if (n.NodeTypeAlias == "Project")
            {
                NotificationsWeb.BusinessLogic.Forum.Subscribe(
                    f.Id, Convert.ToInt32(n.GetProperty("owner").Value));
            }

            //WB added to show these events are firing...
            umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "Forum_AfterCreate in NotificationsWeb.EventHandlers.Forum() class is finishing");
        }
Beispiel #4
0
        public static XPathNodeIterator ForumPager(int forumId, int itemsPerPage, int currentPage, int distance)
        {
            var xd          = new XmlDocument();
            var totalTopics = 0;

            if (forumId == 0)
            {
                totalTopics = Businesslogic.Topic.TotalTopics();
            }
            else
            {
                var f = new uForum.Businesslogic.Forum(forumId);
                totalTopics = f.TotalTopics;
            }

            var pages = xmlHelper.addTextNode(xd, "pages", string.Empty);
            var i     = 0;
            var p     = 0;

            while (i < (totalTopics))
            {
                var distanceFromCurrent = p - currentPage;
                if (distanceFromCurrent > -distance && distanceFromCurrent < distance)
                {
                    var page = xmlHelper.addTextNode(xd, "page", string.Empty);
                    page.Attributes.Append(xmlHelper.addAttribute(xd, "index", p.ToString()));

                    if (p == currentPage)
                    {
                        page.Attributes.Append(xmlHelper.addAttribute(xd, "current", "true"));
                    }

                    pages.AppendChild(page);
                }

                p++;
                i = (i + itemsPerPage);
            }

            return(pages.CreateNavigator().Select("."));
        }
Beispiel #5
0
 public static Forum Create(int forumId, int parentId, int sortOrder)
 {
     Forum f = new Forum();
     f.Id = forumId;
     f.ParentId = parentId;
     f.SortOrder = sortOrder;
     f.Exists = false;
     f.Save();
     return f;
 }
Beispiel #6
0
        public static List<Forum> Forums(int parentId)
        {
            List<Forum> lt = new List<Forum>();

            umbraco.DataLayer.IRecordsReader dr;

            if (parentId > 0) {
                dr = Data.SqlHelper.ExecuteReader(
                    "SELECT * FROM forumForums WHERE parentID = @parentId ORDER by sortOrder ASC", Data.SqlHelper.CreateParameter("@parentId", parentId)
                );
            } else {
                dr = Data.SqlHelper.ExecuteReader(
                    "SELECT * FROM forumForums ORDER by sortOrder ASC"
                );
            }

            while (dr.Read()) {
                try {
                    Node n = new Node(dr.GetInt("id"));

                    if (n != null)
                    {
                        Forum f = new Forum();

                        f.Id = dr.GetInt("id");
                        f.ParentId = dr.GetInt("parentId");
                        f.Title = n.Name;

                        if(n.GetProperty("forumDescription") != null)
                            f.Description = n.GetProperty("forumDescription").Value;

                        f.Exists = true;
                        f.SortOrder = dr.GetInt("SortOrder");

                        //Latest private vals
                        f._latestAuthorID = dr.GetInt("latestAuthor");
                        f._latestCommentID = dr.GetInt("latestComment");
                        f._latestTopicID = dr.GetInt("latestTopic");

                        f.LatestPostDate = dr.GetDateTime("latestPostDate");
                        f.TotalComments = dr.GetInt("totalComments");
                        f.TotalTopics = dr.GetInt("totalTopics");

                        lt.Add(f);
                    }
                } catch(Exception ex) {
                    Log.Add(LogTypes.Debug, -1, ex.ToString());
                }
            }
            dr.Close();
            dr.Dispose();

            return lt;
        }
Beispiel #7
0
        public void Delete()
        {
            DeleteEventArgs e = new DeleteEventArgs();
            FireBeforeDelete(e);
            if (!e.Cancel) {
                Topic t = Topic.GetTopic(this.TopicId);
                Forum f = new Forum(t.ParentId);

                Data.SqlHelper.ExecuteNonQuery("DELETE FROM forumComments WHERE id = " + Id.ToString());
                Id = 0;

                t.Save(true);
                f.Save();

                FireAfterDelete(e);
            }
        }
Beispiel #8
0
        public void Save()
        {
            if (Id == 0) {

                if (Library.Utills.IsMember(MemberId) && !string.IsNullOrEmpty(Body)) {
                    CreateEventArgs e = new CreateEventArgs();
                    FireBeforeCreate(e);
                    if (!e.Cancel) {
                        Data.SqlHelper.ExecuteNonQuery("INSERT INTO forumComments (topicId, memberId, body, position) VALUES(@topicId, @memberId, @body, @position)",
                            Data.SqlHelper.CreateParameter("@topicId", TopicId),
                            Data.SqlHelper.CreateParameter("@memberId", MemberId),
                            Data.SqlHelper.CreateParameter("@body", Body),
                            Data.SqlHelper.CreateParameter("@position", Position)
                            );

                        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 WHERE id = @id",
                        Data.SqlHelper.CreateParameter("@topicId", TopicId),
                        Data.SqlHelper.CreateParameter("@memberId", MemberId),
                        Data.SqlHelper.CreateParameter("@body", Body),
                        Data.SqlHelper.CreateParameter("@id", Id)
                        );
                    FireAfterUpdate(e);
                }
            }
        }
Beispiel #9
0
        public void MarkAsSpam()
        {
            var e = new MarkAsSpamEventArgs();

            FireBeforeMarkAsSpam(e);

            if (e.Cancel)
                return;

            var topic = Topic.GetTopic(TopicId);
            var forum = new Forum(topic.ParentId);

            var member = new Member(MemberId);
            var akismetApi = Forum.GetAkismetApi();
            var akismetComment = Forum.ConstructAkismetComment(member, "comment", Body);
            akismetApi.SubmitSpam(akismetComment);

            Data.SqlHelper.ExecuteNonQuery("UPDATE forumComments SET isSpam = 1 WHERE id = " + Id);
            Id = 0;

            topic.Save(true);
            forum.Save();

            FireAfterMarkAsSpam(e);
        }
Beispiel #10
0
        public static XPathNodeIterator ForumPager(int forumId, int itemsPerPage, int currentPage, int distance)
        {
            var xd = new XmlDocument();
            var totalTopics = 0;

            if (forumId == 0)
                totalTopics = Businesslogic.Topic.TotalTopics();
            else
            {
                var f = new uForum.Businesslogic.Forum(forumId);
                totalTopics = f.TotalTopics;
            }

            var pages = xmlHelper.addTextNode(xd, "pages", string.Empty);
            var i = 0;
            var p = 0;

            while (i < (totalTopics))
            {
                var distanceFromCurrent = p - currentPage;
                if (distanceFromCurrent > -distance && distanceFromCurrent < distance)
                {
                    var page = xmlHelper.addTextNode(xd, "page", string.Empty);
                    page.Attributes.Append(xmlHelper.addAttribute(xd, "index", p.ToString()));

                    if (p == currentPage)
                    {
                        page.Attributes.Append(xmlHelper.addAttribute(xd, "current", "true"));
                    }

                    pages.AppendChild(page);
                }

                p++;
                i = (i + itemsPerPage);
            }

            return pages.CreateNavigator().Select(".");
        }
Beispiel #11
0
        public void MarkAsSpam()
        {
            var markAsSpamEventArgs = new MarkAsSpamEventArgs();
            FireBeforeMarkAsSpam(markAsSpamEventArgs);

            if (markAsSpamEventArgs.Cancel)
                return;

            var forum = new Forum(ParentId);

            var topic = GetTopic(Id);
            var member = new Member(topic.MemberId);
            member.getProperty("blocked").Value = true;
            member.Save();

            Data.SqlHelper.ExecuteNonQuery("UPDATE forumTopics SET isSpam = 1 WHERE id = @id", Data.SqlHelper.CreateParameter("@id", Id.ToString(CultureInfo.InvariantCulture)));

            Id = 0;

            forum.Save();

            Forum.SendSpamMail(Body, Id, "topic", member.Id, true);

            FireAfterMarkAsSpam(markAsSpamEventArgs);
        }
Beispiel #12
0
        protected void modifyForum(object sender, CommandEventArgs e)
        {
            int pId = 0;

            if (!string.IsNullOrEmpty(Request.QueryString["id"]) && int.TryParse(Request.QueryString["id"], out pId) && umbraco.library.IsLoggedOn())
            {
                Member   m     = Member.GetCurrentMember();
                Document d     = new Document(pId);
                Document fnode = null;

                if (e.CommandName == "edit")
                {
                    int fId = int.Parse(e.CommandArgument.ToString());
                    fnode = new Document(fId);
                }
                else if (e.CommandName == "create")
                {
                    fnode = Document.MakeNew(tb_name.Text, DocumentType.GetByAlias("Forum"), new umbraco.BusinessLogic.User(0), d.Id);
                }
                else if (e.CommandName == "delete")
                {
                    int fId = int.Parse(e.CommandArgument.ToString());

                    if (Document.IsDocument(fId))
                    {
                        fnode = new Document(fId);
                    }



                    if (fnode != null)
                    {
                        if ((int)d.getProperty("owner").Value == m.Id && fnode.ParentId == d.Id)
                        {
                            fnode.delete();

                            //if still not dead it's because it's in the trashcan and should be deleted once more.
                            if (fnode.ParentId == -20)
                            {
                                fnode.delete();
                            }
                        }

                        if (fnode.ParentId == -20)
                        {
                            fnode.delete();
                        }

                        fnode = null;
                    }

                    var forum = new uForum.Businesslogic.Forum(fId);
                    if (forum.Exists)
                    {
                        forum.Delete();
                    }
                }

                if (fnode != null && (int)d.getProperty("owner").Value == m.Id && fnode.ParentId == d.Id)
                {
                    fnode.Text = tb_name.Text;
                    fnode.getProperty("forumDescription").Value    = tb_desc.Text;
                    fnode.getProperty("forumAllowNewTopics").Value = true;
                    fnode.Publish(new umbraco.BusinessLogic.User(0));
                    fnode.Save();
                    umbraco.library.UpdateDocumentCache(fnode.Id);
                }


                Response.Redirect(Node.GetCurrent().NiceUrl + "?id=" + pId.ToString());
            }
        }
Beispiel #13
0
        public void MarkAsSpam()
        {
            var e = new MarkAsSpamEventArgs();

            FireBeforeMarkAsSpam(e);

            if (e.Cancel)
                return;

            var topic = Topic.GetTopic(TopicId);
            var forum = new Forum(topic.ParentId);

            Member member = null;
            try { member = new Member(topic.MemberId); }
            catch (Exception) { }

            if (member != null)
            {
                member.getProperty("blocked").Value = true;
                member.Save();
            }

            Data.SqlHelper.ExecuteNonQuery("UPDATE forumComments SET isSpam = 1 WHERE id = " + Id);
            Id = 0;

            topic.Save(true, true);
            forum.Save();

            member.getProperty("blocked").Value = true;
            member.Save();

            Forum.SendSpamMail(Body, TopicId, "comment", member == null ? 0 : member.Id, true);

            FireAfterMarkAsSpam(e);
        }
Beispiel #14
0
        public void Move(int newForumId)
        {
            var moveEventArgs = new MoveEventArgs();
            FireBeforeMove(moveEventArgs);

            if (moveEventArgs.Cancel)
                return;

            var newF = new Forum(newForumId);
            var oldF = new Forum(ParentId);

            if (newF.Exists == false)
                return;

            ParentId = newForumId;
            Save(true);

            newF.Save();
            oldF.Save();

            FireAfterMove(moveEventArgs);
        }
Beispiel #15
0
        public void MarkAsHam()
        {
            var e = new MarkAsHamEventArgs();

            FireBeforeMarkAsHam(e);

            if (e.Cancel)
                return;

            var topic = Topic.GetTopic(TopicId);
            var forum = new Forum(topic.ParentId);

            var member = new Member(MemberId);

            Data.SqlHelper.ExecuteNonQuery("UPDATE forumComments SET isSpam = 0 WHERE id = " + Id);
            Id = 0;

            topic.Save(true);
            forum.Save();

            // Set reputation to at least 50 so their next posts won't be automatically marked as spam
            int reputation;
            int.TryParse(member.getProperty("reputationTotal").Value.ToString(), out reputation);
            if (reputation < 50)
                member.getProperty("reputationTotal").Value = 50;

            int.TryParse(member.getProperty("reputationCurrent").Value.ToString(), out reputation);
            if (reputation < 50)
                member.getProperty("reputationCurrent").Value = 50;

            member.getProperty("blocked").Value = false;
            member.Save();

            FireAfterMarkAsHam(e);
        }
        protected void modifyForum(object sender, CommandEventArgs e)
        {
            int pId = 0;
            if (!string.IsNullOrEmpty(Request.QueryString["id"]) && int.TryParse(Request.QueryString["id"], out pId) && umbraco.library.IsLoggedOn()) {

                Member m = Member.GetCurrentMember();
                Document d = new Document(pId);
                Document fnode = null;

                if (e.CommandName == "edit") {
                    int fId = int.Parse(e.CommandArgument.ToString());
                    fnode = new Document(fId);

                } else if(e.CommandName == "create") {

                    fnode = Document.MakeNew(tb_name.Text, DocumentType.GetByAlias("Forum"), new umbraco.BusinessLogic.User(0), d.Id);

                } else if(e.CommandName == "delete"){

                    int fId = int.Parse(e.CommandArgument.ToString());

                    if (Document.IsDocument(fId))
                    {
                        fnode = new Document(fId);
                    }

                    if (fnode != null)
                    {
                        if ((int)d.getProperty("owner").Value == m.Id && fnode.ParentId == d.Id)
                        {
                            fnode.delete();

                            //if still not dead it's because it's in the trashcan and should be deleted once more.
                            if (fnode.ParentId == -20)
                                fnode.delete();

                        }

                        if (fnode.ParentId == -20)
                            fnode.delete();

                        fnode = null;

                    }

                    var forum = new uForum.Businesslogic.Forum(fId);
                    if (forum.Exists)
                    {
                        forum.Delete();
                    }

                }

                if (fnode != null && (int)d.getProperty("owner").Value == m.Id && fnode.ParentId == d.Id) {
                    fnode.Text = tb_name.Text;
                    fnode.getProperty("forumDescription").Value = tb_desc.Text;
                    fnode.getProperty("forumAllowNewTopics").Value = true;
                    fnode.Publish(new umbraco.BusinessLogic.User(0));
                    fnode.Save();
                    umbraco.library.UpdateDocumentCache(fnode.Id);
                }

                Response.Redirect(Node.GetCurrent().NiceUrl + "?id=" + pId.ToString());

            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack) {

                int pId = 0;

                if (!string.IsNullOrEmpty(Request.QueryString["id"]) && int.TryParse(Request.QueryString["id"], out pId) && umbraco.library.IsLoggedOn()) {

                    Member m = Member.GetCurrentMember();
                    Document d = new Document(pId);

                    if ((int)d.getProperty("owner").Value == m.Id) {
                        holder.Visible = true;

                        rp_forums.DataSource = uForum.Businesslogic.Forum.Forums(pId);
                        rp_forums.DataBind();

                        int fId = 0;

                        if (!string.IsNullOrEmpty(Request.QueryString["forum"]) && int.TryParse(Request.QueryString["forum"], out fId)) {

                            uForum.Businesslogic.Forum f = new Forum(fId);
                            tb_desc.Text = f.Description;
                            tb_name.Text = f.Title;

                            bt_submit.CommandArgument = f.Id.ToString();
                            bt_delete.CommandArgument = f.Id.ToString();

                            bt_submit.CommandName = "edit";

                            ph_add.Visible = true;
                            ph_edit.Visible = true;

                        } else if (!string.IsNullOrEmpty(Request.QueryString["add"])) {
                            ph_add.Visible = true;
                            ph_edit.Visible = false;
                        }
                    }
                }

            }
        }
Beispiel #18
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);
                }
            }
        }
Beispiel #19
0
        public void MarkAsSpam()
        {
            var markAsSpamEventArgs = new MarkAsSpamEventArgs();
            FireBeforeMarkAsSpam(markAsSpamEventArgs);

            if (markAsSpamEventArgs.Cancel)
                return;

            var forum = new Forum(ParentId);

            var topic = GetTopic(Id);
            var member = new Member(topic.MemberId);
            var akismetApi = Forum.GetAkismetApi();
            var akismetComment = Forum.ConstructAkismetComment(member, "topic", string.Format("{0} - {1}", Title, Body));
            akismetApi.SubmitSpam(akismetComment);

            Data.SqlHelper.ExecuteNonQuery("UPDATE forumTopics SET isSpam = 1 WHERE id = @id", Data.SqlHelper.CreateParameter("@id", Id.ToString(CultureInfo.InvariantCulture)));

            Id = 0;

            forum.Save();

            FireAfterMarkAsSpam(markAsSpamEventArgs);
        }
Beispiel #20
0
        public void Delete()
        {
            var deleteEventArgs = new DeleteEventArgs();
            FireBeforeDelete(deleteEventArgs);

            if (deleteEventArgs.Cancel)
                return;

            var forum = new Forum(ParentId);

            Data.SqlHelper.ExecuteNonQuery("DELETE FROM forumTopics WHERE id = @id", Data.SqlHelper.CreateParameter("@id", Id.ToString(CultureInfo.InvariantCulture)));
            Id = 0;

            forum.Save();

            FireAfterDelete(deleteEventArgs);
        }
Beispiel #21
0
        public void Move(int newForumId)
        {
            MoveEventArgs e = new MoveEventArgs();
            FireBeforeMove(e);

            if (!e.Cancel) {
                Forum newF = new Forum(newForumId);
                Forum oldF = new Forum(ParentId);

                if (newF.Exists) {
                    ParentId = newForumId;
                    Save(true);

                    newF.Save();
                    oldF.Save();

                    FireAfterMove(e);
                }
            }
        }
Beispiel #22
0
        public void Save(bool silent)
        {
            if (Id == 0)
            {

                if (Library.Utills.IsMember(MemberId) && !string.IsNullOrEmpty(Title) && !string.IsNullOrEmpty(Body))
                {

                    var createEventArgs = new CreateEventArgs();
                    FireBeforeCreate(createEventArgs);

                    if (createEventArgs.Cancel == false)
                    {
                        UrlName = umbraco.cms.helpers.url.FormatUrl(Title);

                        Data.SqlHelper.ExecuteNonQuery("INSERT INTO forumTopics (parentId, memberId, title, urlName, body, latestReplyAuthor) VALUES(@parentId, @memberId, @title, @urlname, @body, @latestReplyAuthor)",
                            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)
                        );

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

                        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 topicId = @id", Data.SqlHelper.CreateParameter("@id", Id));
                    LatestReplyAuthor = Data.SqlHelper.ExecuteScalar<int>("SELECT TOP 1 memberId FROM forumComments WHERE (topicId= @id) ORDER BY Created DESC ", Data.SqlHelper.CreateParameter("@id", Id));
                    LatestComment = Data.SqlHelper.ExecuteScalar<int>("SELECT TOP 1 id FROM forumComments WHERE (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 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)
                    );

                    UpdateCommentsPosition();

                    FireAfterUpdate(updateEventArgs);
                }
            }
        }
Beispiel #23
0
        public void MarkAsHam()
        {
            var markAsHamEventArgs = new MarkAsHamEventArgs();
            FireBeforeMarkAsHam(markAsHamEventArgs);

            if (markAsHamEventArgs.Cancel)
                return;

            var forum = new Forum(ParentId);

            var topic = GetTopic(Id);
            var member = new Member(topic.MemberId);
            var akismetApi = Forum.GetAkismetApi();
            var akismetComment = Forum.ConstructAkismetComment(member, "topic", string.Format("{0} - {1}", Title, Body));
            akismetApi.SubmitHam(akismetComment);

            Data.SqlHelper.ExecuteNonQuery("UPDATE forumTopics SET isSpam = 0 WHERE id = @id", Data.SqlHelper.CreateParameter("@id", Id.ToString(CultureInfo.InvariantCulture)));

            Id = 0;

            forum.Save();

            // Set reputation to at least 50 so their next posts won't be automatically marked as spam
            int reputation;
            int.TryParse(member.getProperty("reputationTotal").Value.ToString(), out reputation);
            if (reputation < 50)
                member.getProperty("reputationTotal").Value = 50;

            int.TryParse(member.getProperty("reputationCurrent").Value.ToString(), out reputation);
            if (reputation < 50)
                member.getProperty("reputationCurrent").Value = 50;

            member.Save();

            FireAfterMarkAsHam(markAsHamEventArgs);
        }