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

Ajax

开发平台:

Others

  1. require 'converters/dotclear/post'
  2. require 'converters/dotclear/comment'
  3. require 'converters/dotclear/category'
  4. require 'converters/dotclear/user'
  5. class DotclearConverter < BaseConverter
  6.   def self.convert(options = {})
  7.     converter = new(options)
  8.     converter.import_users do |dc_user|
  9.       ::User.new 
  10.         :email => dc_user.user_email || "#{dc_user.user_id}@notfound.com",
  11.         :login => dc_user.user_id,
  12.         :password => new_user_password,
  13.         :password_confirmation => new_user_password
  14.     end
  15.     converter.import_articles do |dc_article|
  16.       unless dc_article.post_content.blank? && dc_article.post_chapo.blank? || dc_article.post_titre.blank?
  17.         user = dc_article.user_id.nil? ? nil : converter.users[Dotclear::User.find(dc_article.user_id.to_i).user_id]
  18.         
  19.         body = !dc_article.post_chapo.blank? ?
  20.           dc_article.post_chapo + '<br /> ' + dc_article.post_content :
  21.           dc_article.post_content
  22.         
  23.         a = ::Article.new 
  24.           :title        => CGI::unescapeHTML(dc_article.post_titre),
  25.           :body         => body,
  26.           :created_at   => dc_article.post_creadt,
  27.           :published_at => dc_article.post_creadt,
  28.           :updated_at   => dc_article.post_upddt,
  29.           :author       => user
  30.         [a, converter.find_or_create_categories(dc_article)]
  31.       end
  32.     end
  33.     
  34.     converter.import_comments do |dc_comment|
  35.       ::Comment.new 
  36.         :body         => dc_comment.comment_content,
  37.         :created_at   => dc_comment.comment_dt,
  38.         :updated_at   => dc_comment.comment_upddt,
  39.         :published_at => dc_comment.comment_dt,
  40.         :author       => dc_comment.comment_auteur,
  41.         :url          => dc_comment.comment_site,
  42.         :email        => dc_comment.comment_email,
  43.         :ip           => dc_comment.comment_ip
  44.     end
  45.   end
  46.   def old_articles
  47.     if @options.has_key?(:categories)
  48.       @old_article ||= Dotclear::Post.find(:all, 
  49.                                            :include => :categorie, 
  50.                                            :conditions => ["post_pub = 1 AND cat_libelle IN (?)", @options[:categories]])
  51.     else
  52.       @old_article ||= Dotclear::Post.find_all_by_post_pub true
  53.     end
  54.     @old_article
  55.   end
  56.   def old_users
  57.     @old_users ||= Dotclear::User.find(:all).index_by &:user_id
  58.   end
  59.   def get_login(dc_user)
  60.     dc_user.user_id
  61.   end
  62.   def handle_bad_user_email(dc_user, email)
  63.     dc_user.user_email = email
  64.   end
  65.   def handle_bad_comment_author_email(dc_comment, email)
  66.     dc_comment.comment_email = email
  67.   end
  68.   
  69.   def handle_bad_comment_author_url(dc_comment, url)
  70.     dc_comment.comment_site = url
  71.   end
  72.   
  73.   def handle_bad_comment_author(dc_comment, author)
  74.     dc_comment.comment_auteur = author
  75.   end
  76.   
  77.   def handle_bad_comment_content(dc_comment, content)
  78.     dc_comment.comment_content = content
  79.   end
  80.  
  81.   def create_sections(libelle)
  82.     @sections[libelle] = site.sections.create!(:name => libelle, :path => libelle)
  83.     @sections[libelle]
  84.   end
  85.   def find_or_create_categories(dc_article)
  86.     cat = dc_article.categorie
  87.     create_categories(cat.cat_libelle) if categories[cat.cat_libelle].nil?
  88.     categories[cat.cat_libelle]
  89.   end
  90. end