Plugin ausführen nach Joomla Update

  • Was möchtest du denn realisieren?

    Ein Plugin, welches mir die Core-Dateien, welche bearbeitet/verändert wurden nach einem update wieder herstellt. D.h die originalen Core-Dateien wieder durch die bearbeiteten ersetzt.
    Sodass veränderungen im Core auch nach einem update wieder vorhanden sind...

    Könnte es mit dem Trigger "onExtensionAfterUpdate" gemacht werden? Springt der auch an, wenn eine Core-Extension (wie z.B com_media oder com_content) aktualisiert wird?

  • Wenn durch das Plugin die alten Core-Dateien mit der Änderung wieder eingespielt werden, wie verhält es sich, wenn diese Dateien durch das Update selber eine Aktualisierung erhalten haben. Dann hast du zwar deine Änderungen wieder drin, aber die Core-Dateien sind nicht mehr korrekt, was zwangsläufig zu Fehlern führen wird.

    Ich selber mach das grundsätzlich manuell durch direkten Vergleich und erneutem Einfügen. Zugegeben, es ist etwas mühselig, aber zumindest bin ich auf der sicheren Seite.


    Vermutlich unterscheiden sich Joomla-Updates und Erweiterungsupdates bzgl. einer Triggerung. Hier im Forum gibt es ja einige, die sich da sehr viel besser auskennen. Hat jemand wertvolle Tipps?

  • Dann hast du zwar deine Änderungen wieder drin, aber die Core-Dateien sind nicht mehr korrekt, was zwangsläufig zu Fehlern führen wird.

    Noch dazu in "turbulenten" Zeiten wie diesen. Der Joomla-Core wird an elementaren Stellen umgebaut, als Vorbereitung auf Joomla 4. Dateien verschoben; ist nicht das Einzige.

    Hat jemand wertvolle Tipps?

    Der Tipp von Lui_brempt ist schon nicht falsch.


    Es wird geprüft


    if (($component == 'com_joomlaupdate') && ($task == 'update.install') && !$backedup)


    Da muss man sich halt selbst einen "Trigger" einbauen wie dieses $backedup. Ob das NACH erfolgtem Update ebenfalls funktioniert, keine Ahnung.


    Oder: Reine Theorie, da ich nicht weiß zu welchem Zeitpunkt die neue Version ins System "amtlich" eingetragen wird:

    Ganz unabhängig von com_joomlaupdate. Ein Plugin checkt immer im Backend, ob Änderungen schon gemacht, wenn nicht werden sie gemacht. Reicht ja eine kleine, einzeilige Textdatei, die lediglich die Zuletzt-erledigt-Joomla-Version festhält. Reicht ein file_get_contents um unmittelbar den Wert zu bekommen.


    Das Plugin gleicht dann diese Version mit Joomla-Konstante JVERSION ab.


    Da das eigene Systemplugin auch unmittelbar nach Update durchlaufen wird, spätestens nach neu laden...

    Könnte es mit dem Trigger "onExtensionAfterUpdate" gemacht werden

    Musst halt ausprobieren ;-) Glaub aber nicht.

    Springt der auch an, wenn eine Core-Extension (wie z.B com_media oder com_content) aktualisiert wird?

    Frage ist halt, ob die überhaupt geupdatet werden bei einem Joomla-Update und ob dabei irgendeine Installer-Klasse verwendet wird, die das Plugin-Event auslöst.

  • Ein Plugin, welches mir die Core-Dateien, welche bearbeitet/verändert wurden nach einem update wieder herstellt. D.h die originalen Core-Dateien wieder durch die bearbeiteten ersetzt.
    Sodass veränderungen im Core auch nach einem update wieder vorhanden sind...

    Die Frage nach dem warum würde mich sehr interessieren. Core Hacks fliegen dir immer wieder um die Ohren sei es bei einem Update oder bei einer Erweiterung.


    Vielleicht möchtest du uns sagen was du geändert hast ggf. kann man das mit der bestehenden API anders lösen oder den Fehler in Joomla selber fixen (falls es ein Fehler ist?)


    Als workaround (kommt auch drauf an welche Datei geändert wurde) könnte man auch mit dem kleinen Upgrade Paket updaten. Beispiel: https://downloads.joomla.org/cms/joomla3/3-8-11

    • Joomla! 3.8.10 to 3.8.11 Patch Package (.zip) oder
    • Joomla! 3.8.x to 3.8.11 Patch Package (.zip)


    Da sind teilweise sehr viel weniger Dateien drin als im Standard Stable Upgrade Paket.


    Zitat

    Springt der auch an, wenn eine Core-Extension (wie z.B com_media oder com_content) aktualisiert wird?


    Core Extensions werden code seitig nicht außerhalb von Joomla Core Update angepasst daher nein. Da diese nicht einzeln aktualisiert werden.


    Zitat


    Könnte es mit dem Trigger "onExtensionAfterUpdate" gemacht werden


    Nein der wird nur im "Installer" getriggert und nicht beim Joomla Core Update welches über com_joomlaupdate läuft.


  • Ich wollte dem Medien-Manager (com-media) einen userspezifischen base-folder spendieren.
    Dazu habe ich Benutzer-Felder erstellt und das media.php (administrator/components/com_media/media.php) angepasst.


    original:

    Code
    1. if (substr(strtolower($view), 0, 6) == 'images' || $popup_upload == 1)
    2. {
    3. $path = 'image_path';
    4. }
    5. define('COM_MEDIA_BASE', JPATH_ROOT . '/' . $params->get($path, 'images'));
    6. define('COM_MEDIA_BASEURL', JUri::root() . $params->get($path, 'images'));

    ersetzt durch:

    ..wird diese Datei in einem Update überschreiben, sind die Neuerungen fort. Ich hoffte, man könne diese grundsätzliche Problematik mit einem Plugin beheben. Aber die genannten Gründe, warum man das nicht machen sollte sind einleuchtend.


    Danke trotzdem!