Ein Kunena 3 Forum zu Discourse migrieren

It might make sense to import them as likes. A few importers do that and can serve as examples.

If you have a budget and need help, please see my contact information is in my profile.

2 „Gefällt mir“

FYI based on this howto I wrote this one:

1 „Gefällt mir“

Hi Jay. I am working on the Import now, I have successfully done my first import with the Kunena3 script (with a Kunena4 database).

I got users, categories and posts converted, but now I want to fine-tune the process and get more information. Can you please point me to which conversion scripts you think are more complete (with the Likes or any other extras)? Thanks!

What I do is grep the import script directory for what I’m looking for.

I’ve not imported likes before. I’m unclear whether setting the like count in the post model is all that is required or whether that field gets updated some other way.

You can also look in app/models to see what’s there.

2 „Gefällt mir“

Thanks! My database has info about which user liked which post. I’ll have to see how that fits into Discourse (if possible), but it’s not just a count, it’s a list of user names related to individual posts.

You’ll need to look into the rails models to see how those are updated.

Probably this part of app/models/post_action.rb to update counts:

    when :like
      # 'like_score' is weighted higher for staff accounts
      score = PostAction.joins(:user)
        .where(post_id: post_id)
        .sum("CASE WHEN users.moderator OR users.admin THEN #{SiteSetting.staff_like_weight} ELSE 1 END")
      Post.where(id: post_id).update_all ["like_count = :count, like_score = :score", count: count, score: score]

and maybe I’ll try using this to actually do the “like” which is a kind of PostAction:

This is my first time even looking at Ruby code… this will be fun…

3 „Gefällt mir“

You can use the following method, if you don’t want to do everything with SQL like the Lithium importer does:

PostAction.act(user, post, PostActionType.types[:like])
1 „Gefällt mir“

Thanks. It might be just my Ruby/Discourse newbieness tricking me, but it seems the Lithium importer is doing more stuff, I wonder if it is necessary? It seems to add rows both in UserActions and PostActions. And it has some extra logic to add only “missing” actions, why is that?

And if I use the method you suggest, do I still need to update Like counts, or does it take care of that? Thanks!

Calling PostAction.act should take care of all necessary stuff. The same method gets called when you like a post in the UI.

2 „Gefällt mir“

I wrote a couple importers before I knew ruby. My Programming Languages professor told us in 1986 that if a job requirement was to know some language, we didn’t need to worry. He was right.

I recommend doing things the rails way rather than mucking with the database directly.

6 „Gefällt mir“

Es gibt zwei verschiedene Kunena-Importskripte. Eines ist kunena.rb, das andere kunena3.rb. Kunena selbst ist bis Version 6.x. Welches Skript sollte für neuere Versionen von Kunena verwendet werden?

Ich würde zuerst versuchen, kunena.rb zu verwenden.

1 „Gefällt mir“

@JetForMe

Ich habe gerade meine endgültigen Skripte als Gist veröffentlicht. Ich erinnere mich ehrlich gesagt nicht mehr genau, was ich dort gemacht habe oder wie spezifisch das für meine Community ist. Aber vielleicht kannst du diese Skripte mit den Originalen vergleichen und einige Probleme sehen, die ich gelöst habe, und Dinge, die ich hinzugefügt habe. Ich habe versucht, den Import vollständiger zu gestalten, ich hasse es, Informationen bei Migrationen zu verlieren.

–> importing-from-kunena-3-to-discourse · GitHub
und
–> importing-from-kunena-3-to-discourse-2 · GitHub

Ich hoffe, das hilft.

EDIT: Ich erinnere mich gerade, dass ich eine Mischung aus Ruby-Skripten und SQL-Befehlen verwendet habe (ich empfehle DBWeaver für eine praktische SQL-Konsole während der Migrationen). Ich kann SQL-Fragmente posten, falls Interesse besteht.

2 „Gefällt mir“

Ich konnte mariadb-server und default-mysql-client installieren (libmysqlclient-dev existiert nicht mehr).
Aber jetzt habe ich folgenden Fehler:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)

Wie kann ich also die MySQL-Instanz starten? mysql.server start funktioniert nicht.