private List <GenericBlogPost> GetPostsFromXML(XDocument xml) { var xmlPosts = xml.Descendants("item") .Where(t => t.Element(wp + "post_type").Value == "post") .Where(t => t.Element(wp + "status").Value == "publish"); var posts = new List <GenericBlogPost>(); foreach (XElement p in xmlPosts) { GenericBlogPost post = new GenericBlogPost(); post.Creator = p.Element(dc + "creator").Value; post.Title = p.Element("title").Value; post.AttachmentUrl = (string)p.Element(wp + "attachment_url") ?? String.Empty; post.PostName = p.Element(wp + "post_name").Value; post.Link = p.Element("link").Value; post.PublicationDate = DateTime.Parse(p.Element("pubDate").Value); post.Content = p.Element(content + "encoded").Value; post.AllowComments = (p.Element(wp + "comment_status").Value == "open") ? true : false; post.Tags = p.Elements("category").Where(b => (string)b.Attribute("domain") == "post_tag").Select(c => c.Value).ToList(); post.Categories = p.Elements("category").Where(b => (string)b.Attribute("domain") == "category").Select(c => c.Value).ToList(); //post.Meta = p.Elements(wp + "postmeta").Count() > 0 ? // p.Elements(wp + "postmeta") // .Where(x => x.Element(wp + "meta_key").Value != "enclosure") // .ToDictionary( // m => m.Element(wp + "meta_key").Value, // m => m.Element(wp + "meta_value").Value // ) : null; post.Meta = null; post.Comments = (p.Elements(wp + "comment").Count() > 0 ? p.Elements(wp + "comment") .Select(c => new GenericPostComment { Author = c.Element(wp + "comment_author").Value, AuthorEmail = c.Element(wp + "comment_author_email").Value, AuthorIP = c.Element(wp + "comment_author_IP").Value, AuthorURL = c.Element(wp + "comment_author_url").Value, CommentDate = DateTime.Parse(c.Element(wp + "comment_date").Value), CommentDateGMT = DateTime.Parse(c.Element(wp + "comment_date_gmt").Value), Content = c.Element(wp + "comment_content").Value, Status = (c.Element(wp + "comment_approved").Value == "1") ? StatusConstants.Published : StatusConstants.WaitingForApproval, Type = c.Element(wp + "comment_type").Value, Parent = int.Parse(c.Element(wp + "comment_parent").Value), UserId = int.Parse(c.Element(wp + "comment_user_id").Value) }).ToArray() : null); posts.Add(post); } return(posts); }
private void ImportPost(Guid blogId, GenericBlogPost post) { Guid masterBlogPostId = Guid.NewGuid(); BlogPost blogPost = SFBlogsManager.CreateBlogPost(masterBlogPostId); Blog blog = SFBlogsManager.GetBlogs().Where(b => b.Id == blogId).SingleOrDefault(); blogPost.Parent = blog; masterBlogPostId = blogPost.Id; blogPost.Title = post.Title; blogPost.DateCreated = post.DateCreated; blogPost.PublicationDate = post.PublicationDate; blogPost.LastModified = post.PublicationDate; string content = ParseContent(post.Content); content = ImportAndLinkContentImages(content, post.Title, blog.Title); blogPost.Content = content; blogPost.Summary = post.Summary; blogPost.AllowComments = post.AllowComments; blogPost.UrlName = post.PostName ?? Regex.Replace(post.Title.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-"); blogPost.Owner = Guid.Empty; PostAuthor author = _authors.Where(a => a.Username == post.Creator).FirstOrDefault(); if (author != null) { User user = SFUserManager.GetUserByEmail(author.Email); if (user != null) { blogPost.Owner = user.Id; } } if (ddlCategoriesImportMode.SelectedIndex > 0) { if (post.Categories != null && post.Categories.Count > 0) { foreach (string category in post.Categories) { HierarchicalTaxon taxon; taxon = SFTaxonomyManager.GetTaxa<HierarchicalTaxon>().Where(t => t.Name == category).FirstOrDefault(); if (taxon == null && ddlCategoriesImportMode.SelectedIndex > 1) { taxon = CreateCategory(category); } if (taxon != null) { blogPost.Organizer.AddTaxa("Category", taxon.Id); } } } } if (ddlTagsImportMode.SelectedIndex > 0) { if (post.Tags != null && post.Tags.Count > 0) { foreach (string tag in post.Tags) { FlatTaxon taxon; taxon = SFTaxonomyManager.GetTaxa<FlatTaxon>().Where(t => t.Name == tag).FirstOrDefault(); if (taxon == null && ddlTagsImportMode.SelectedIndex > 1) { taxon = CreateTag(tag); } if (taxon != null) { blogPost.Organizer.AddTaxa("Tags", taxon.Id); } } } } if (post.AttachmentUrl != String.Empty) { string imageSrc = post.AttachmentUrl; string imgFile = Path.GetFileName(imageSrc); var sfImages = App.WorkWith().Images().Where(i => i.Status == ContentLifecycleStatus.Master).Get().ToList(); var sfImg = sfImages.Where(i => Path.GetFileName(i.FilePath) == imgFile.ToLower()).FirstOrDefault(); if (sfImg != null) { blogPost.CreateRelation(sfImg, "Thumbnail"); } else { if (ImportImage(imageSrc, post.Title, blog.Title)) { sfImg = App.WorkWith().Images().Where(i => i.Status == ContentLifecycleStatus.Master).Get().ToList().Where(i => Path.GetFileName(i.FilePath) == imgFile.ToLower()).FirstOrDefault(); blogPost.CreateRelation(sfImg, "Thumbnail"); } } } if (post.Meta != null) { if (post.Meta.ContainsKey("_yoast_wpseo_title")) { blogPost.SetValue("SEOTitle", post.Meta["_yoast_wpseo_title"]); } if (post.Meta.ContainsKey("_yoast_wpseo_metadesc")) { blogPost.SetValue("SEOMetaDescription", post.Meta["_yoast_wpseo_metadesc"]); } if (post.Meta.ContainsKey("_yoast_wpseo_focuskw")) { blogPost.SetValue("SEOMetaKeywords", post.Meta["_yoast_wpseo_focuskw"]); } } SFBlogsManager.RecompileItemUrls(blogPost); SFBlogsManager.Lifecycle.PublishWithSpecificDate(blogPost, post.PublicationDate); SFBlogsManager.SaveChanges(); var bag = new Dictionary<string, string>(); bag.Add("ContentType", typeof(BlogPost).FullName); WorkflowManager.MessageWorkflow(masterBlogPostId, typeof(BlogPost), null, "Publish", false, bag); if (chkImportComments.Checked) { if (post.Comments != null && post.Comments.Count() > 0) { foreach (var comment in post.Comments) { CreateBlogPostComment(masterBlogPostId, comment); } } } var dbg = _importLog; }
private List<GenericBlogPost> GetPostsFromXML(XDocument xml) { var xmlPosts = xml.Descendants("item") .Where(t => t.Element(wp + "post_type").Value == "post") .Where(t => t.Element(wp + "status").Value == "publish"); var posts = new List<GenericBlogPost>(); foreach (XElement p in xmlPosts) { GenericBlogPost post = new GenericBlogPost(); post.Creator = p.Element(dc + "creator").Value; post.Title = p.Element("title").Value; post.AttachmentUrl = (string)p.Element(wp + "attachment_url") ?? String.Empty; post.PostName = p.Element(wp + "post_name").Value; post.Link = p.Element("link").Value; post.PublicationDate = DateTime.Parse(p.Element("pubDate").Value); post.Content = p.Element(content + "encoded").Value; post.AllowComments = (p.Element(wp + "comment_status").Value == "open") ? true : false; post.Tags = p.Elements("category").Where(b => (string)b.Attribute("domain") == "post_tag").Select(c => c.Value).ToList(); post.Categories = p.Elements("category").Where(b => (string)b.Attribute("domain") == "category").Select(c => c.Value).ToList(); post.Meta = p.Elements(wp + "postmeta").Count() > 0 ? p.Elements(wp + "postmeta") .Where(x => x.Element(wp + "meta_key").Value != "enclosure") .ToDictionary( m => m.Element(wp + "meta_key").Value, m => m.Element(wp + "meta_value").Value ) : null; post.Comments = (p.Elements(wp + "comment").Count() > 0 ? p.Elements(wp + "comment") .Select(c => new GenericPostComment { Author = c.Element(wp + "comment_author").Value, AuthorEmail = c.Element(wp + "comment_author_email").Value, AuthorIP = c.Element(wp + "comment_author_IP").Value, AuthorURL = c.Element(wp + "comment_author_url").Value, CommentDate = DateTime.Parse(c.Element(wp + "comment_date").Value), CommentDateGMT = DateTime.Parse(c.Element(wp + "comment_date_gmt").Value), Content = c.Element(wp + "comment_content").Value, Status = (c.Element(wp + "comment_approved").Value == "1") ? StatusConstants.Published : StatusConstants.WaitingForApproval, Type = c.Element(wp + "comment_type").Value, Parent = int.Parse(c.Element(wp + "comment_parent").Value), UserId = int.Parse(c.Element(wp + "comment_user_id").Value) }).ToArray() : null); posts.Add(post); } return posts; }
private void ImportPost(Guid blogId, GenericBlogPost post) { Guid masterBlogPostId = Guid.NewGuid(); BlogPost blogPost = SFBlogsManager.CreateBlogPost(masterBlogPostId); Blog blog = SFBlogsManager.GetBlogs().Where(b => b.Id == blogId).SingleOrDefault(); blogPost.Parent = blog; masterBlogPostId = blogPost.Id; blogPost.Title = post.Title; blogPost.DateCreated = post.DateCreated; blogPost.PublicationDate = post.PublicationDate; blogPost.LastModified = post.PublicationDate; string content = ParseContent(post.Content); content = ImportAndLinkContentImages(content, post.Title, blog.Title); blogPost.Content = content; blogPost.Summary = post.Summary; blogPost.AllowComments = post.AllowComments; blogPost.UrlName = post.PostName ?? Regex.Replace(post.Title.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-"); blogPost.Owner = Guid.Empty; PostAuthor author = _authors.Where(a => a.Username == post.Creator).FirstOrDefault(); if (author != null) { User user = SFUserManager.GetUserByEmail(author.Email); if (user != null) { blogPost.Owner = user.Id; } } if (ddlCategoriesImportMode.SelectedIndex > 0) { if (post.Categories != null && post.Categories.Count > 0) { foreach (string category in post.Categories) { HierarchicalTaxon taxon; taxon = SFTaxonomyManager.GetTaxa <HierarchicalTaxon>().Where(t => t.Name == category).FirstOrDefault(); if (taxon == null && ddlCategoriesImportMode.SelectedIndex > 1) { taxon = CreateCategory(category); } if (taxon != null) { blogPost.Organizer.AddTaxa("Category", taxon.Id); } } } } if (ddlTagsImportMode.SelectedIndex > 0) { if (post.Tags != null && post.Tags.Count > 0) { foreach (string tag in post.Tags) { FlatTaxon taxon; taxon = SFTaxonomyManager.GetTaxa <FlatTaxon>().Where(t => t.Name == tag).FirstOrDefault(); if (taxon == null && ddlTagsImportMode.SelectedIndex > 1) { taxon = CreateTag(tag); } if (taxon != null) { blogPost.Organizer.AddTaxa("Tags", taxon.Id); } } } } if (post.AttachmentUrl != String.Empty) { string imageSrc = post.AttachmentUrl; string imgFile = Path.GetFileName(imageSrc); var sfImages = App.WorkWith().Images().Where(i => i.Status == ContentLifecycleStatus.Master).Get().ToList(); var sfImg = sfImages.Where(i => Path.GetFileName(i.FilePath) == imgFile.ToLower()).FirstOrDefault(); if (sfImg != null) { blogPost.CreateRelation(sfImg, "Thumbnail"); } else { if (ImportImage(imageSrc, post.Title, blog.Title)) { sfImg = App.WorkWith().Images().Where(i => i.Status == ContentLifecycleStatus.Master).Get().ToList().Where(i => Path.GetFileName(i.FilePath) == imgFile.ToLower()).FirstOrDefault(); blogPost.CreateRelation(sfImg, "Thumbnail"); } } } if (post.Meta != null) { if (post.Meta.ContainsKey("_yoast_wpseo_title")) { blogPost.SetValue("SEOTitle", post.Meta["_yoast_wpseo_title"]); } if (post.Meta.ContainsKey("_yoast_wpseo_metadesc")) { blogPost.SetValue("SEOMetaDescription", post.Meta["_yoast_wpseo_metadesc"]); } if (post.Meta.ContainsKey("_yoast_wpseo_focuskw")) { blogPost.SetValue("SEOMetaKeywords", post.Meta["_yoast_wpseo_focuskw"]); } } SFBlogsManager.RecompileItemUrls(blogPost); SFBlogsManager.Lifecycle.PublishWithSpecificDate(blogPost, post.PublicationDate); SFBlogsManager.SaveChanges(); var bag = new Dictionary <string, string>(); bag.Add("ContentType", typeof(BlogPost).FullName); WorkflowManager.MessageWorkflow(masterBlogPostId, typeof(BlogPost), null, "Publish", false, bag); if (chkImportComments.Checked) { if (post.Comments != null && post.Comments.Count() > 0) { foreach (var comment in post.Comments) { CreateBlogPostComment(masterBlogPostId, comment); } } } var dbg = _importLog; }