Migrer un forum XenForo vers Discourse

Merci Justin, je l’ai rapidement examiné — cela te semble-t-il correct ? (N’hésite pas à l’ajouter à l’importateur officiel si tu le souhaites)

  XENFORO_DB = "xenforo_db_3"
  TABLE_PREFIX = "xf_"
  BATCH_SIZE = 1000
  ATTACHMENT_DIR = '/CHEMIN/COMPLET/VERS/attachments'
  AVATAR_DIR = '/CHEMIN/COMPLET/VERS/avatars'

(Ajout de la dernière ligne^^ — cela signifie que tu devras copier les avatars là-bas)

  def execute
    import_users
    import_categories
    import_posts
    import_avatars
  end

(Ajout de la dernière ligne^^)

  def import_avatars
    if AVATAR_DIR
      users = User.all
      users.each do |u|
        unless u.custom_fields["import_id"].nil?
          import_id = u.custom_fields["import_id"]
          if import_id.to_i < 1000
            dir_num = "0"
          elsif import_id.to_i > 1000
            dir_num = import_id.first
          end
        
          avatar_filename = "#{import_id}.jpg"
          file_path = "#{AVATAR_DIR}/l/#{dir_num}"
          file_path_and_name = "#{file_path}/#{avatar_filename}"

          if File.exists?(file_path_and_name)
            upload = create_upload(u.id, file_path_and_name, avatar_filename)
            if upload.persisted?
              u.import_mode = false
              u.create_user_avatar
              u.import_mode = true
              u.user_avatar.update(custom_upload_id: upload.id)
              u.update(uploaded_avatar_id: upload.id)
            else
              puts "Erreur : Le téléchargement n'a pas été persisté pour #{u.username} #{avatar_filename} !"
            end
          end
        end
      end
    end
  end

Il est très tard ici, donc j’ai peut-être fait des erreurs ou oublié beaucoup de choses, mais cela suppose que tous les avatars sont en .jpg (ce qui semble être le cas pour tous les miens). Je n’étais pas trop sûr des bascules u.import_mode, alors je les ai simplement commentées.

Totalement non testé (il est presque 5 h du matin ici :zzz:)

J’ai effectué un test sur ma machine de développement avec un forum de 100 000 publications, et cela a pris 90 minutes. Celui que je souhaite importer en compte plusieurs millions, donc peut-être 10 fois plus long ?

Super ! Vas-tu le partager avec nous ? As-tu une idée de quand ?

4 « J'aime »