First shot at attachment import
* only images for now * only blog posts for now * thumbnailed images are not yet replaced in blog posts body
This commit is contained in:
@@ -19,6 +19,7 @@ namespace :wordpress do
|
||||
dump = Refinery::WordPress::Dump.new(params[:file_name])
|
||||
|
||||
dump.authors.each(&:to_refinery)
|
||||
attachments = dump.attachments.each(&:to_refinery)
|
||||
|
||||
only_published = ENV['ONLY_PUBLISHED'] == 'true' ? true : false
|
||||
dump.posts(only_published).each(&:to_refinery)
|
||||
@@ -28,6 +29,12 @@ namespace :wordpress do
|
||||
ENV["MODEL"] = 'BlogPost'
|
||||
Rake::Task["friendly_id:redo_slugs"].invoke
|
||||
ENV.delete("MODEL")
|
||||
|
||||
# parse all created BlogPosts bodys and replace the old wordpress image uls
|
||||
# with the newly created ones
|
||||
attachments.each do |attachment|
|
||||
attachment.replace_image_url_in_blog_posts
|
||||
end
|
||||
end
|
||||
|
||||
desc "reset blog tables and then import blog data from a Refinery::WordPress XML dump"
|
||||
|
||||
@@ -2,6 +2,7 @@ module Refinery
|
||||
module WordPress
|
||||
class Attachment
|
||||
attr_reader :node
|
||||
attr_reader :refinery_image
|
||||
|
||||
def initialize(node)
|
||||
@node = node
|
||||
@@ -15,6 +16,10 @@ module Refinery
|
||||
node.xpath("description").text
|
||||
end
|
||||
|
||||
def file_name
|
||||
url.split('/').last
|
||||
end
|
||||
|
||||
def post_date
|
||||
DateTime.parse node.xpath("wp:post_date").text
|
||||
end
|
||||
@@ -22,6 +27,44 @@ module Refinery
|
||||
def url
|
||||
node.xpath("wp:attachment_url").text
|
||||
end
|
||||
|
||||
def image?
|
||||
url.match /\.(png|jpg|jpeg|gif)$/
|
||||
end
|
||||
|
||||
def to_refinery
|
||||
if image?
|
||||
to_image
|
||||
else
|
||||
to_file
|
||||
end
|
||||
end
|
||||
|
||||
def replace_image_url_in_blog_posts
|
||||
::BlogPost.all.each do |post|
|
||||
if post.body.include? url
|
||||
post.body = post.body.gsub(url, refinery_image.image.url)
|
||||
post.save!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def to_image
|
||||
image = ::Image.new
|
||||
image.created_at = post_date
|
||||
image.image_url = url
|
||||
image.save!
|
||||
|
||||
@refinery_image = image
|
||||
image
|
||||
end
|
||||
|
||||
def to_file
|
||||
raise "to_file is not implemented yet, sorry!"
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user