Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Ross 3 posts 73 karma points
    Oct 28, 2015 @ 09:22
    Ross
    0

    Published Event Bottle Neck

    Hi,

    I have a comments type structure where users are able to post replies to an Article. (One article can have many discussion replies). When a user adds a reply, I want the parent articles last updated date to also change so that the article is placed at the top of the list when viewed from the frontend indicating that it has had recent activity. To achieve this, the comment is added through a custom controller and then I have used the ContentService Published event to update the parent though am finding my event to be a bit of a bottle neck and taking up to six seconds to run

    public void OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
        {
            ContentService.Published += ContentServicePublished;
        }
    
    private void ContentServicePublished(IPublishingStrategy sender, PublishEventArgs<IContent> e)
        {
            foreach (var node in e.PublishedEntities)
            {
                //Handle updating the parent nodes last edited date to address ordering
                if (node.ContentType.Alias == "DiscussionReply")
                {
                    var contentService = new Umbraco.Core.Services.ContentService();
                    var parentNode = contentService.GetById(node.ParentId);
                    int intSiblings = parentNode.Children().Count() + 1;
    
                    if(parentNode.HasProperty("siblings"))
                    {
                        parentNode.SetValue("siblings", intSiblings);
                        contentService.SaveAndPublishWithStatus(parentNode, 0, false);
                    }
                }
            }
        }
    

    Is there anything obviously wrong with this code?

    Many thanks,

Please Sign in or register to post replies

Write your reply to:

Draft