Gracias, Justin. He echado un vistazo rápido; ¿te parece bien esto? (Si quieres, siéntete libre de añadirlo al importador oficial)
XENFORO_DB = "xenforo_db_3"
TABLE_PREFIX = "xf_"
BATCH_SIZE = 1000
ATTACHMENT_DIR = '/FULL/PATH/TO/attachments'
AVATAR_DIR = '/FULL/PATH/TO/avatars'
(Añadí la última línea^^ - significa que tendrás que copiar los avatares allí)
def execute
import_users
import_categories
import_posts
import_avatars
end
(Añadí la última línea^^)
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 "Error: Upload did not persist for #{u.username} #{avatar_filename}!"
end
end
end
end
end
end
Es muy tarde aquí, así que es posible que haya cometido algunos errores o que haya omitido mucho, pero esto asume que todos los avatares son .jpg (lo cual parece ser el caso de todos los míos). No estaba muy seguro de los cambios de u.import_mode, así que simplemente los comenté.
Totalmente sin probar (son casi las 5 a.m. aquí
)
Hice una prueba en mi máquina de desarrollo con un foro de 100 mil publicaciones y tardó 90 minutos. El que quiero importar tiene varios millones de publicaciones, ¿quizás 10 veces más?
¡Genial! ¿Lo compartirán con nosotros? ¿Tienen alguna idea de cuándo?