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