Hallo Community. Seit einigen Wochen lerne ich und erstelle ein Import-Skript für meine Site auf Livestreet CMS neu. Das Schreiben des Skripts habe ich bereits abgeschlossen; es bleibt nur noch, es zu bereinigen und einen Pull Request einzureichen.
Ich habe auch alle Benutzer importiert, mit Ausnahme derer, die sich über Dienste autorisieren. Die Frage lautet: Wie importiert man Benutzer von einer Quellsite zu Discourse, die sich über Facebook oder Google autorisieren? Ich möchte die eleganteste Lösung finden. Das Problem besteht zudem darin, dass einige Facebook-Benutzer keine E-Mail-Adresse haben.
Bonus! Importieren von Likes mit dem Parameter date_added.
Ich habe auch eine weitere Methode gefunden, um Likes mit einem Datum zu importieren, da die alte Methode in anderen Skripten nicht funktioniert.
likes = mysql_query(<<-SQL
SELECT target_id
, user_voter_id
, vote_date
, target_type
FROM #{TABLE_PREFIX}vote
WHERE vote_direction = 1
ORDER BY vote_date
SQL
).to_a
likes.each do |l|
next unless user_id = user_id_from_imported_user_id(l["user_voter_id"])
next unless post_id = post_id_from_imported_post_id("post-#{l["target_id"]}")
next unless user = User.find_by(id: user_id)
next unless post = Post.find_by(id: post_id)
PostActionCreator.create(user, post, PostActionType.types[2], created_at: Time.at(l["vote_date"])); #PostActionType.types[2] ist "Like"
end