[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Addon Update - welche update.php wird ausgeführt?
Seite 1 von 1

Addon Update - welche update.php wird ausgeführt?

Verfasst: 22. Dez 2016, 09:55
von Tobias Krais
Hi zusammen,

kann mir jemand sagen, welche update.php beim Addon Update per Installer Addon ausgeführt werden sollte? Die vom neu heruntergeladenen Package oder die noch installierte aus dem vorhandenen Package?

Warum stelle ich diese Frage? Mein neues Addon d2u_helper sollte beim Update des Addons aktualisierte Module automatisch aktualisieren. In der alten update.php Version wurde eine entsprechende Meldung per rex_view ausgegeben, in der neuen nicht mehr. Beim Update auf mehreren Seiten wird beim installieren der neuen Version nun die Meldung ausgegeben. Ist das richtig so?

Außerdem würde ich beim Ausführen der Datei update.php gerne gerne auf die Dateien des neu heruntergeladenen Addons zugreifen und diese in die Datenbank einspielen. Aber: auch hier werden nur die alten Dateien in die DB eingespielt?!

Liebe Grüße,

Tobi

Re: Addon Update - welche update.php wird ausgeführt?

Verfasst: 22. Dez 2016, 11:56
von Gregor.Harlan
Es wird die neue ausgeführt, die alte würde ja keinen Sinn ergeben.
Mit der rex_view-Meldung klingt kurios.

Mit den alten Dateien kann ich hingegen eventuell erklären.
Denn wichtig zu wissen ist, dass während der Auführung der update.php, das neue Addon noch in einem temporären Ordner liegt. Die rex_path-Funktionen etc. zeigen somit noch auf das alte Addon.
In der update.php sollte man daher mit __DIR__ arbeiten, wenn man auf die neuen Dateien zugreifen will.

Erst wenn die update.php erfolgreich durchlaufen wurde, wird das alte Addon gelöscht, und der Ordner des neuen umbenannt.
Vorher liegt das Addon in redaxo/src/addons/.new.foo, wenn das Addon "foo" heißt.

Re: Addon Update - welche update.php wird ausgeführt?

Verfasst: 22. Dez 2016, 12:05
von Tobias Krais
Hi Gregor,

das hilft mir schon mal sehr. Danke für die schnelle Antwort. Wenn ich in der neuen update.php per Autoloader eine Klasse aus dem neuen Package aufrufen möchte, geht das überhaupt? Oder wird dann die alte Klasse aufgerufen?

Liebe Grüße,

Tobi

Re: Addon Update - welche update.php wird ausgeführt?

Verfasst: 22. Dez 2016, 13:23
von Gregor.Harlan
Die alte. Vor allem kann es ja auch sein, dass sie sowieso schon geladen wurde.
Aber auch allgemein berücksichtigt der Autoloader nicht den lib-Ordner im temporären Addon-Pfad.

Übrigens wird die update.php auch ausgeführt, wenn das Addon installiert, aber nicht aktiviert ist. Dann werden die Klassen sowieso nicht geladen.

Somit sollte man vermeiden, die Addon-Klassen in der update.php zu verwenden.

[GELÖST] Re: Addon Update - welche update.php wird ausgeführ

Verfasst: 23. Dez 2016, 00:06
von Tobias Krais
Lieber Gregor,

danke für deine Tipps. Die Updategeschichte konnte ich mit dem ".new." Verzeichnis lösen. Die rex_view Nachrichten wurden aus den Dateien des alten Addon Verzeichnisses aufgerufen. Es wurde und wird die korrekte update.php aufgerufen.

Danke für die Hintergrundinfos!

Liebe Grüße,

Tobi