internal bool EditPost(string postId, string userName, string password, MWAPost sentPost, bool publish)
{
var post = Post.GetPost(new Guid(postId));
if (!post.CanUserEdit)
{
throw new MetaWeblogException("11", "User authentication failed");
}
string author = String.IsNullOrEmpty(sentPost.author) ? userName : sentPost.author;
if (!post.IsPublished && publish)
{
if (!post.CanPublish(author))
{
throw new MetaWeblogException("11", "Not authorized to publish this Post.");
}
}
post.Author = author;
post.Title = sentPost.title;
post.Content = sentPost.description;
post.IsPublished = publish;
post.Slug = sentPost.slug;
post.Description = sentPost.excerpt;
if (sentPost.commentPolicy != string.Empty)
{
post.HasCommentsEnabled = sentPost.commentPolicy == "1";
}
post.Categories.Clear();
foreach (var item in sentPost.categories)
{
Category cat;
if (LookupCategoryGuidByName(item, out cat))
{
post.Categories.Add(cat);
}
else
{
// Allowing new categories to be added. (This breaks spec, but is supported via WLW)
using (var newcat = new Category(item, string.Empty))
{
newcat.Save();
post.Categories.Add(newcat);
}
}
}
post.Tags.Clear();
foreach (var item in sentPost.tags.Where(item => item != null && item.Trim() != string.Empty))
{
post.Tags.Add(item);
}
if (sentPost.postDate != new DateTime())
{
post.DateCreated = sentPost.postDate.AddHours(-BlogSettings.Instance.Timezone);
}
post.Save();
return true;
}