2011-06-02 12:41:31 +00:00
|
|
|
module Refinery
|
|
|
|
module WordPress
|
|
|
|
class Post < Page
|
|
|
|
def tags
|
2011-06-02 14:43:14 +00:00
|
|
|
# xml dump has "post_tag" for wordpress 3.1 and "tag" for 3.0
|
|
|
|
path = if node.xpath("category[@domain='post_tag']").count > 0
|
|
|
|
"category[@domain='post_tag']"
|
|
|
|
else
|
|
|
|
"category[@domain='tag']"
|
|
|
|
end
|
|
|
|
|
|
|
|
node.xpath(path).collect do |tag_node|
|
2011-06-02 12:41:31 +00:00
|
|
|
Tag.new(tag_node.text)
|
|
|
|
end
|
2011-06-01 19:11:57 +00:00
|
|
|
end
|
|
|
|
|
2011-06-02 12:41:31 +00:00
|
|
|
def tag_list
|
|
|
|
tags.collect(&:name).join(',')
|
2011-06-01 19:11:57 +00:00
|
|
|
end
|
|
|
|
|
2011-06-02 12:41:31 +00:00
|
|
|
def categories
|
|
|
|
node.xpath("category[@domain='category']").collect do |cat|
|
|
|
|
Category.new(cat.text)
|
|
|
|
end
|
2011-06-01 19:11:57 +00:00
|
|
|
end
|
|
|
|
|
2011-06-02 12:41:31 +00:00
|
|
|
def comments
|
|
|
|
node.xpath("wp:comment").collect do |comment_node|
|
|
|
|
Comment.new(comment_node)
|
|
|
|
end
|
|
|
|
end
|
2011-06-01 19:11:57 +00:00
|
|
|
|
2011-06-02 12:41:31 +00:00
|
|
|
def to_refinery
|
2011-06-02 14:43:14 +00:00
|
|
|
user = ::User.find_by_username(creator) || ::User.first
|
2011-06-02 12:41:31 +00:00
|
|
|
raise "Referenced User doesn't exist! Make sure the authors are imported first." \
|
|
|
|
unless user
|
2011-06-02 21:26:18 +00:00
|
|
|
|
|
|
|
begin
|
2011-06-02 23:05:16 +00:00
|
|
|
is_draft = draft? ? "true" : "false"
|
|
|
|
if !draft?
|
|
|
|
p "creating post " + title + " Draft status: " + is_draft
|
|
|
|
post = ::BlogPost.create! :title => title,
|
|
|
|
:body => content_formatted,
|
|
|
|
:draft => draft?,
|
|
|
|
:published_at => post_date,
|
|
|
|
:created_at => post_date,
|
|
|
|
:author => user,
|
|
|
|
:tag_list => tag_list
|
|
|
|
::BlogPost.transaction do
|
|
|
|
categories.each do |category|
|
|
|
|
post.categories << category.to_refinery
|
|
|
|
end
|
|
|
|
|
|
|
|
comments.each do |comment|
|
|
|
|
comment = comment.to_refinery
|
|
|
|
comment.post = post
|
|
|
|
comment.save
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
else
|
|
|
|
p "Skipping draft post"
|
|
|
|
end
|
2011-06-02 21:26:18 +00:00
|
|
|
rescue Exception => e
|
2011-06-02 23:05:16 +00:00
|
|
|
# TODO if it's not an activerecord validation error about duplicate title then raise e
|
2011-06-02 21:26:18 +00:00
|
|
|
p e
|
|
|
|
end
|
2011-06-01 19:11:57 +00:00
|
|
|
|
2011-06-02 12:41:31 +00:00
|
|
|
post
|
|
|
|
end
|
2011-06-01 19:11:57 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|