Wie alten Superuser bei Installation eines QPs überschreiben?

  • Hallo,


    ich versuche mein Problem mal so einfach wie möglich zu schildern:


    Ich habe aus einer Joomla-Installation ein Quickstart-Package (QP) erstellt.

    Dazu nutze ich eine /installation/mysql/sample_data_quickstart.sql, welche die gesamte Datenbank enthält und beim Installieren des QPs gewählt werden muss.


    Bei der Installation des QP werden ja bekanntlich die Daten für den (neuen) Superuser angegeben. Dabei wird eine zufällige User-id generiert.

    Nun habe ich 2 Superuser in der neuen Installation, einmal den alten Superuser aus dem QP, sowie den neuen Superuser. Der alte Superuser soll aber weg.



    Mein erster Gedanke zur Lösung:

    Nun gut, ich bräuchte den alten Superuser gar nicht erst exportieren bzw. könnte die entsprechenden Einträge (INSER INTO...) aus der sample_data_quickstart.sql entfernen. Da aber die user-id des alten Superusers an vielen Stellen in der DB verknüpft ist, würde das zu einigen unschönen Meldungen im Backend führen.

    Ich müsste also gleichzeitig die alte user-id gegen die neue user-id in der gesamten DB ersetzen. Die neue user-id ist mir aber nicht bekannt, da diese erst per Zufallsprinzip generiert wird.

    Von daher sehe ich diese Lösung als schwierig an. Oder lässt sich die neue user-id irgendwie auslesen, um sie noch in einer Anweisung am Ende der sample_data_quickstart.sql zu verwenden?


    Mein zweiter Gedanke:

    Die bei der Installation des QPs angegebenen Daten (username, email, password) für den neuen Superuser müssten einfach nur die Daten des alten Superuser überschreiben anstatt einen neuen Superuser zu erstellen. Dann hätte ich nur den gewünschten neuen Superuser, der aufgrund der alten user-id dann auch gleich korrekt verknüpft ist.

    Nur weiß ich leider nicht genau, an welcher Stelle ich da sinnvollerweise ansetzen muss?


    Möglicherweise denke ich auch einfach nur zu kompliziert und es gibt eine simple Lösung?



    p.s. AkeebaBackup soll nicht verwendet werden!

  • Da aber die user-id des alten Superusers an vielen Stellen in der DB verknüpft ist, würde das zu einigen unschönen Meldungen im Backend führen.

    Vollkommen unfundierte Antwort von mir mit ??? Nur Code in /installation/ überflogen:

    Nachdem die Sample-Datas installiert sind, läuft wohl im Model InstallationModelDatabase die Methode

    Code
    database.php::updateUserIds()

    Soweit ich verstehe, werden hier einige der User-Id-Einträge der Sample-Datas auf die neue User-Id umgeschrieben, damit eben diese "User-Id not found"-Meldungen reduziert werden..

    Vielleicht kannst du da ansetzen? Weitere Verknüpfungen, falls nötig, in $updatesArray? Weitere DB-Queries?

  • Ok! Jetzt habe ich es auch gefunden:



    Das muss ich jetzt mal genauer untersuchen. Vermutlich haben mich die #action-logs irritiert, da dort die ids nicht geändert werden. Aber diese Tabellen-Einträge können oder sollten eh vorher entfernt werden.

  • Die user-ids in den entsprechenden DB-Tabellen (siehe obiger Code) werden sauber ersetzt. Damit verschwindet mein Problem, wenn ich entsprechende user- und action-logs-Tabellen nicht mitexportiere. Die werden eh neu generiert. :)