Beispiel #1
0
        public Changes GetChanges(string date)
        {
            Changes changes = new Changes() ;
            DateTime latest = Convert.ToDateTime(date) ;

            // Check if we have pages publised after the given date. If so return the sitemap
            if (Models.Page.GetScalar("SELECT COUNT(page_id) FROM page WHERE page_published > @0", latest) > 0)
                changes.Sitemap = new SitemapServices().Get() ;

            // Get all pages last published after the given date.
            Models.Page.GetFields("page_id", "page_last_published > @0 AND page_is_hidden = 0 AND page_draft = 0", latest).ForEach(p =>
                changes.Pages.Add(new PageService().Get(p.Id.ToString()))) ;

            // Get all categories updated after the given date.
            new CategoryService().Get().Where(c => Convert.ToDateTime(c.Updated) > latest).
                Each((i, c) => changes.Categories.Add(c)) ;

            // Get all content updated after the given date.
            Models.Content.GetFields("content_id", "content_updated > @0 AND content_folder = 0", latest).ForEach(c =>
                changes.Content.Add(new ContentService().Get(c.Id.ToString()))) ;

            // Get all deleted content
            string query = "syslog_parent_type = @0 AND syslog_action = @1 AND syslog_created > @2" ;
            changes.Deleted.Pages = Piranha.Models.SysLog.Get(query, "PAGE", "DEPUBLISH", latest).
                Select(l => new DeletedItem() { Id = l.Id, Deleted = l.Created.ToShortDateString() }).ToList() ;
            changes.Deleted.Content = Piranha.Models.SysLog.Get(query, "CONTENT", "DELETE", latest).
                Select(l => new DeletedItem() { Id = l.Id, Deleted = l.Created.ToShortDateString() }).ToList() ;
            changes.Deleted.Categories = Piranha.Models.SysLog.Get(query, "CATEGORY", "DELETE", latest).
                Select(l => new DeletedItem() { Id = l.Id, Deleted = l.Created.ToShortDateString() }).ToList() ;
            return changes ;
        }
Beispiel #2
0
        internal Changes GetChangesInternal(string internalid, string date)
        {
            Changes changes = new Changes() ;
            DateTime latest = Convert.ToDateTime(date) ;

            // Check if we have pages publised after the given date. If so return the sitemap
            if (Models.Page.GetScalar("SELECT COUNT(page_id) FROM page JOIN sitetree ON page_sitetree_id = sitetree_id WHERE page_last_published > @0 AND sitetree_internal_id = @1", latest, internalid) > 0)
                changes.Sitemap = new SitemapServices().Get(internalid) ;

            // Get all pages last published after the given date.
            Models.Page.GetFields("page_id", "page_last_modified > @0 AND page_draft = 0 AND sitetree_internal_id = @1", latest, internalid).ForEach(p =>
                changes.Pages.Add(new PageService().GetInternal(p.Id.ToString()))) ;

            // Get all posts last published after the given date.
            Models.Post.GetFields("post_id", "post_last_modified > @0 AND post_draft = 0", latest).ForEach(p =>
                changes.Posts.Add(new PostService().GetInternal(p.Id.ToString()))) ;

            // Get all categories updated after the given date.
            new CategoryService().Get().Where(c => Convert.ToDateTime(c.Updated) > latest).
                Each((i, c) => changes.Categories.Add(c)) ;

            // Get all content updated after the given date.
            Models.Content.GetFields("content_id", "content_last_published > @0 AND content_draft = 0 AND content_folder = 0", latest).ForEach(c =>
                changes.Content.Add(new ContentService().Get(c.Id.ToString()))) ;

            // Get all page templates updated after the given date.
            Models.PageTemplate.GetFields("pagetemplate_id", "pagetemplate_updated > @0", latest, new Params() { OrderBy = "pagetemplate_name" }).ForEach(pt =>
                changes.PageTemplates.Add(new PageTemplateService().Get(pt.Id.ToString()))) ;

            // Get all post templates updated after the given date.
            Models.PostTemplate.GetFields("posttemplate_id", "posttemplate_updated > @0", latest, new Params() { OrderBy = "posttemplate_name" }).ForEach(pt =>
                changes.PostTemplates.Add(new PostTemplateService().Get(pt.Id.ToString()))) ;

            // Get all deleted content
            string query = "syslog_parent_type = @0 AND syslog_action = @1 AND syslog_created > @2" ;
            changes.Deleted.Pages = Piranha.Models.SysLog.Get(query, "PAGE", "DEPUBLISH", latest).
                Select(l => new DeletedItem() { Id = l.ParentId, Deleted = l.Created.ToString() }).ToList() ;
            changes.Deleted.Posts = Piranha.Models.SysLog.Get(query, "POST", "DEPUBLISH", latest).
                Select(l => new DeletedItem() { Id = l.ParentId, Deleted = l.Created.ToString() }).ToList() ;
            changes.Deleted.Content = Piranha.Models.SysLog.Get(query, "CONTENT", "DELETE", latest).
                Select(l => new DeletedItem() { Id = l.ParentId, Deleted = l.Created.ToString() }).ToList() ;
            changes.Deleted.Categories = Piranha.Models.SysLog.Get(query, "CATEGORY", "DELETE", latest).
                Select(l => new DeletedItem() { Id = l.ParentId, Deleted = l.Created.ToString() }).ToList() ;
            changes.Deleted.PageTemplates = Piranha.Models.SysLog.Get(query, "PAGETEMPLATE", "DELETE", latest).
                Select(l => new DeletedItem() { Id = l.ParentId, Deleted = l.Created.ToString() }).ToList() ;
            changes.Deleted.PostTemplates = Piranha.Models.SysLog.Get(query, "POSTTEMPLATE", "DELETE", latest).
                Select(l => new DeletedItem() { Id = l.ParentId, Deleted = l.Created.ToString() }).ToList() ;

            // Set the timespage
            changes.Timestamp = DateTime.Now.ToString() ;

            return changes ;
        }