Grazie Justin, ci ho dato un’occhiata veloce: ti sembra ok? (Sentiti libero di aggiungerlo all’importatore ufficiale se vuoi)
XENFORO_DB = "xenforo_db_3"
TABLE_PREFIX = "xf_"
BATCH_SIZE = 1000
ATTACHMENT_DIR = '/FULL/PATH/TO/attachments'
AVATAR_DIR = '/FULL/PATH/TO/avatars'
(Aggiunta l’ultima riga^^ - significa che dovrai copiare gli avatar lì)
def execute
import_users
import_categories
import_posts
import_avatars
end
(Aggiunta l’ultima riga^^)
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 "Errore: Caricamento non salvato per #{u.username} #{avatar_filename}!"
end
end
end
end
end
end
È molto tardi qui, quindi potrei aver commesso degli errori o aver saltato un sacco di cose, ma questo presuppone che tutti gli avatar siano in formato .jpg (che sembra essere il caso per tutti i miei). Non ero troppo sicuro dei switch u.import_mode, quindi li ho solo commentati.
Completamente non testato (sono quasi le 5 del mattino qui
)
Ho fatto un test sulla mia macchina di sviluppo su un forum con 100K post e ci sono voluti 90 minuti. Quello su cui voglio fare l’importazione ha qualche milione di post, quindi forse 10 volte di più?
Bellissimo! Lo condividerai con noi? Hai un’idea di quando?