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
)
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 ?