wp25.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:6k
源码类别:

Ajax

开发平台:

Others

  1. require 'converters/wp25/option'
  2. require 'converters/wp25/post'
  3. require 'converters/wp25/comment'
  4. require 'converters/wp25/term'
  5. require 'converters/wp25/term_relationship'
  6. require 'converters/wp25/term_taxonomy'
  7. require 'converters/wp25/user'
  8. class Wp25Converter < BaseConverter
  9.   def self.convert(options = {})
  10.     converter = new(options)
  11.     
  12.     unless (options[:prefix].nil?)
  13.       WP25::Option.prefix = options[:prefix]
  14.       WP25::Post.prefix = options[:prefix]
  15.       WP25::Comment.prefix = options[:prefix]
  16.       WP25::User.prefix = options[:prefix]
  17.       WP25::Term.prefix = options[:prefix]
  18.       WP25::TermRelationship.prefix = options[:prefix]
  19.       WP25::TermTaxonomy.prefix = options[:prefix]
  20.     end
  21.     Blog.default.update_attributes(
  22.       :blog_name => WP25::Option.find_by_option_name('blogname').option_value,
  23.       :blog_subtitle => WP25::Option.find_by_option_name('blogdescription').option_value
  24.     )
  25.     converter.import_users do |wp_user|
  26.       ::User.new 
  27.         :name => wp_user.display_name,
  28.         :email => wp_user.user_email || "#{wp_user.user_login}@notfound.com",
  29.         :login => wp_user.user_login,
  30.         :password => new_user_password,
  31.         :password_confirmation => new_user_password
  32.     end
  33.     converter.import_articles do |wp_article|
  34.       unless wp_article.post_content.blank? || wp_article.post_title.blank?
  35.         user = wp_article.post_author.nil? ? nil : converter.users[WP25::User.find(wp_article.post_author.to_i).user_login]
  36.         
  37.         excerpt, body = !wp_article.post_excerpt.blank? ?
  38.           [wp_article.post_excerpt, wp_article.post_content] :
  39.           [nil, wp_article.post_content]
  40.         
  41.         a = ::Article.new 
  42.           :title        => CGI::unescapeHTML(wp_article.post_title),
  43.           :body_and_extended => body,
  44.           :created_at   => wp_article.post_date,
  45.           :published_at => wp_article.post_date,
  46.           :updated_at   => wp_article.post_modified,
  47.           :user         => user,
  48.           :author       => user.login,
  49.           :tags         => converter.find_or_create_tags(wp_article.tags)
  50.         [a, converter.find_or_create_categories(wp_article)]
  51.       end
  52.     end
  53.     
  54.     converter.import_pages do |wp_page|
  55.       unless wp_page.post_content.blank? || wp_page.post_title.blank?
  56.         user = wp_page.post_author.nil? ? nil : converter.users[WP25::User.find(wp_page.post_author.to_i).user_login]
  57.         
  58.         excerpt, body = !wp_page.post_excerpt.blank? ?
  59.           [wp_page.post_excerpt, wp_page.post_content] :
  60.           [nil, wp_page.post_content]
  61.         
  62.         ::Page.new 
  63.           :title        => CGI::unescapeHTML(wp_page.post_title),
  64.           :name         => wp_page.post_name,
  65.           :body         => body,
  66.           :created_at   => wp_page.post_date,
  67.           :published_at => wp_page.post_date,
  68.           :updated_at   => wp_page.post_modified,
  69.           :user         => user,
  70.           :author       => user.login
  71.       end
  72.     end
  73.     converter.import_comments do |wp_comment|
  74.       user = wp_comment.user.nil? ? nil : converter.users[wp_comment.user.user_login]
  75.       ::Comment.new 
  76.         :body         => wp_comment.comment_content,
  77.         :created_at   => wp_comment.comment_date,
  78.         :updated_at   => wp_comment.comment_date,
  79.         :published_at => wp_comment.comment_date,
  80.         :user         => user,
  81.         :author       => wp_comment.comment_author,
  82.         :url          => wp_comment.comment_author_url,
  83.         :email        => wp_comment.comment_author_email,
  84.         :state        => converter.comment_state(wp_comment.comment_approved),
  85.         :ip           => wp_comment.comment_author_IP
  86.     end
  87.   end
  88.   def old_articles
  89.     if @options.has_key?(:categories)
  90.       #TODO: understand the categories configuration
  91.       @old_article ||= WP25::Post.find(:all, 
  92.                                            :include => :categorie, 
  93.                                            :conditions => ["post_pub = ? AND cat_libelle IN (?)", true, @options[:categories]])
  94.     else
  95.       @old_article ||= WP25::Post.find :all,
  96.         :conditions => { :post_status => 'publish', :post_type => 'post' }
  97.     end
  98.     @old_article
  99.   end
  100.   def old_pages
  101.     if @options.has_key?(:categories)
  102.       #TODO: understand the categories configuration
  103.       @old_page ||= WP25::Post.find(:all, 
  104.                                            :include => :categorie, 
  105.                                            :conditions => ["post_pub = ? AND cat_libelle IN (?)", true, @options[:categories]])
  106.     else
  107.       @old_page ||= WP25::Post.find :all,
  108.         :conditions => { :post_status => 'publish', :post_type => 'page' }
  109.     end
  110.     @old_page
  111.   end
  112.   def old_users
  113.     @old_users ||= WP25::User.find(:all).index_by &:ID
  114.   end
  115.   def get_login(wp_user)
  116.     wp_user.user_login
  117.   end
  118.   def handle_bad_user_email(wp_user, email)
  119.     wp_user.user_email = email
  120.   end
  121.   def handle_bad_comment_author_email(wp_comment, email)
  122.     wp_comment.comment_author_email = email
  123.   end
  124.   
  125.   def handle_bad_comment_author_url(wp_comment, url)
  126.     wp_comment.comment_author_url = url
  127.   end
  128.   
  129.   def handle_bad_comment_author(wp_comment, author)
  130.     wp_comment.comment_author = author
  131.   end
  132.   
  133.   def handle_bad_comment_content(wp_comment, content)
  134.     wp_comment.comment_content = content
  135.   end
  136.  
  137.   def create_sections(libelle)
  138.     @sections[libelle] = site.sections.create!(:name => libelle, :path => libelle)
  139.     @sections[libelle]
  140.   end
  141.   def find_or_create_categories(wp_article)
  142.     wp_categories = wp_article.categories
  143.     categories_post = []
  144.     wp_categories.each { |wp_categorie|
  145.       create_categories(wp_categorie) if categories[wp_categorie].nil?
  146.       categories_post << categories[wp_categorie]
  147.     }
  148.     categories_post
  149.   end
  150.   # with the tags'libelle in params search or
  151.   # create the Tag objet in Typo
  152.   def find_or_create_tags(wp_tags)
  153.     tags_post = []
  154.     wp_tags.each { |tag|
  155.       create_tag(tag) if tags[tag].nil?
  156.       tags_post << tags[tag]
  157.     }
  158.     tags_post
  159.   end
  160.   
  161.   def comment_state(wp_approved)
  162.     case wp_approved
  163.     when 'spam': :spam
  164.     when '1': :ham
  165.     else :unclassified
  166.     end
  167.   end
  168. end