From 4e3905fcb92ec4da47239edead9286a6fc3cfdfb Mon Sep 17 00:00:00 2001 From: Marc Remolt Date: Thu, 2 Jun 2011 16:43:14 +0200 Subject: [PATCH] Compatibility with Wordpress 3.0 * Tags are now imported from a 3.0 dump * Authors are not imported from 3.0, as they are not part of the dump * simple_format now doesn't sanitize the content anymore --- lib/wordpress/page.rb | 6 +++--- lib/wordpress/post.rb | 14 +++++++++----- spec/lib/wordpress/dump_spec.rb | 4 ++-- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/wordpress/page.rb b/lib/wordpress/page.rb index e4ff4d9..a1898fb 100644 --- a/lib/wordpress/page.rb +++ b/lib/wordpress/page.rb @@ -24,10 +24,10 @@ module Refinery def content_formatted # WordPress doesn't export

-Tags, so let's run a simple_format over - # the content - formatted = simple_format(content) + # the content. As we trust ourselves, no sanatize. + formatted = simple_format(content, {}, { :sanitize => false }) - # Support for SyntaxHighlighter: + # Support for SyntaxHighlighter (http://alexgorbatchev.com/SyntaxHighlighter/): # In WordPress you can (via a plugin) enclose code in [lang][/lang] # blocks, which are converted to a

-tag with a class corresponding
         # to the language.
diff --git a/lib/wordpress/post.rb b/lib/wordpress/post.rb
index f21b7a2..51d5bef 100644
--- a/lib/wordpress/post.rb
+++ b/lib/wordpress/post.rb
@@ -2,7 +2,14 @@ module Refinery
   module WordPress
     class Post < Page
       def tags
-        node.xpath("category[@domain='post_tag']").collect do |tag_node| 
+        # 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| 
           Tag.new(tag_node.text)
         end
       end
@@ -24,13 +31,10 @@ module Refinery
       end
 
       def to_refinery
-        user = ::User.find_by_username creator
+        user = ::User.find_by_username(creator) || ::User.first
         raise "Referenced User doesn't exist! Make sure the authors are imported first." \
           unless user
 
-        post = BlogPost.new
-        
-
         post = ::BlogPost.create! :title => title, :body => content_formatted, :draft => draft?, 
           :published_at => post_date, :created_at => post_date, :author => user,
           :tag_list => tag_list
diff --git a/spec/lib/wordpress/dump_spec.rb b/spec/lib/wordpress/dump_spec.rb
index 371b4e9..3c11766 100644
--- a/spec/lib/wordpress/dump_spec.rb
+++ b/spec/lib/wordpress/dump_spec.rb
@@ -235,9 +235,9 @@ describe Refinery::WordPress::Dump, :type => :model do
 
         it { BlogPost.should have(1).record } 
 
-        it "should copy the attributes from Refinery::WordPress::Page" do
+        it "should copy the attributes from Refinery::WordPress::Post" do
           @post.title.should == post.title
-          @post.body.should == post.content
+          @post.body.should == post.content_formatted
           @post.draft.should == post.draft?
           @post.published_at.should == post.post_date
           @post.created_at.should == post.post_date