Die Pluginupdate Funktion wurde von uns recht flexibel gehalten, d.h. wenn sich das Datenbank-Layout Ihres Plugins nicht grundlegend ändert können Sie recht einfach die Hookpunkte aktualisieren. Bitte beachten Sie, dass diese Funktion erst ab Version 4.1.01 von xt:Commerce enthalten ist.
Workflow eines Updates:
Der normale Workflow eines Updates teilt sich in vier Bereiche:
- Update Starten (Ein Backup der alten Plugindateien - nicht Datenbank od. Shop)
- Datei Update
- Datenbank Update
- Konfiguration prüfen
1. Update Starten
Das Update wird einfach über den Knopf "Plugin update" im Plugin Manager gestartet. Daraufhin öffnet sich ein Popup, welches Sie über das Backup der Plugin-Dateien informiert.
Die finden das Backup im Ordner /plugin_cache/backup/plugin-name/ .
Das Popup führt Sie außerdem zum Schritt 2 mit der Meldung "Sie können nun über ihren FTP-Client das Plugin in das Verzeichnis /var/www/xtc4/plugins/plugin-name hochladen "
2. Datei Update
Nun müssen Sie die Dateien des Plugins mit den Dateien der neuen Version des Plugins überschreiben und danach im Popup-Dialog den Knopf "Plugin updaten" betätigen.
3. Datenbank Update
Das Datenbank-Update beginnt, nachdem Sie den Knopf "Plugin updaten" betätigt haben. ( Siehe auch Datenbank Update Schema )
4. Konfiguration prüfen
Nachdem das Update ausgeführt wurde, sollten Sie alle Konfigurationen des Plugins ausführlich prüfen.
Datenbank Update Schema
Das Datenbank Update ließt die Installer.xml-Datei neu ein und aktualisiert Hookpunkte, Plugin-Optionen und Sprachschlüssel nach folgendem Schema:
Hookpunkte:
- Existierte ein Hookpunkt bereits, wird der Code in diesem Hook aktualisiert
- Existierte der Hookpunkt noch nicht, wird dieser Hook in die Datenbank geschrieben
- Ist ein Hookpunkt in der neuen Pluginversion nicht mehr vorhanden, wird der Hook aus der Datenbank entfernt
Plugin-Optionen:
- Wenn eine Option bereits vorhanden ist:
- und sich die Parameter "url" und "type" nicht geändert haben bleibt die Option unverändert
- und sich die Parameter "url" und "type" geändert haben wird die Option aktualisiert
- Wenn eine Option noch nicht vorhanden war, wird diese erstellt
- Wurde eine Option entfernt, wird diese ebenfalls in der Datenbank entfernt
Sprachschlüssel:
- Existierte ein Sprachschlüssel bereits, wird der Sprachschlüssel nicht aktualisiert
- Existierte der Sprachschlüssel noch nicht, wird dieser in die Datenbank geschrieben
- Ist ein Sprachschlüssel in der neuen Pluginversion nicht mehr vorhanden, wird der Sprachschlüssel aus der Datenbank entfernt
D.h. sollten Sie einen Text anpassen, muss:
- entweder ein neuer Schlüssel erstellt und der alte entfernt werden oder
- die Anpassung des Schlüssels muss über den klassischen Weg im Backend (manuell) vorgenommen werden.
db_install / db_uninstall:
Wird ein Update ausgeführt werden die Anweisungen in db_install bzw. db_uninstall nicht ausgeführt, stattdessen wird der Code in db_update ausgeführt
db_update - Syntax:
Beispiel:
<xtcommerceplugin> ... <db_install>...</db_install> <db_uninstall>...</db_uninstall> .. <minimumupdateversion>1.0.3</minimumupdateversion> <db_update> <update> <version>1.0.3</version> <to_version>1.0.4</to_version> <code><![CDATA[ // some code or file include here ]]> </code> </update> <update> <version>1.0.4</version> <to_version>1.0.5</to_version> <code><![CDATA[ // some code or file include here ]]> </code> </update> </db_update> ... </xtcommerceplugin>
Der Code wird auf Basis der aktuellen Pluginversion ausgeführt, es wird immer bei der niedrigsten angefangen.
Elemente:
"Version": Wird genutzt um auf die derzeitige Version zu prüfen.
"to_version": Wird genutzt um die Version nach ausführen des "Code" zu setzen
"Code": Dieser Code wird ausgeführt
Beispiel:
Das Plugin "my_demo_plg" soll von Version 1.0.3 auf die Version 1.0.5 aktualisiert werden. Zunächst würde folgender Block ausgeführt:
<update> <version>1.0.3</version> <to_version>1.0.4</to_version> <code><![CDATA[ // some code or file include here ]]> </code> </update>
( Installierte Pluginversion entspricht "1.0.3" (<version>), daher wird <Code> ausgeführt und danach die installierte Pluginversion auf "1.0.4" ( <to_version> ) angehoben )
Nach Ausführung dieses Blocks, wird die Installierte Pluginversion intern auf "1.0.4" (<to_version>) angehoben. Nun wird der zweite Block ausgeführt:
<update> <version>1.0.4</version> <to_version>1.0.5</to_version> <code><![CDATA[ // some code or file include here ]]> </code> </update>
( Installierte Pluginversion entspricht "1.0.4" (<version>), daher wird <Code> ausgeführt und danach die installierte Pluginversion auf "1.0.5" ( <to_version> ) angehoben )
Bitte beachten Sie, dass die Änderungen "to_version" lediglich temporär sind. Nach ausführen des Update-Scripts wird die Pluginversion wie bei der Installation durch das <version>-Tag des Plugins gesetzt.
Der "db_update" Block ist zudem optional, d.h. viele (die meisten) Plugins benötigen diese Scripte nicht unbedingt, da Optionen und Hooks ohnehin neu eingelesen werden.(Siehe "Datenbank Update Schema" oben)
Wichtig: Beachten Sie, dass viele Hostings eine limitierte Script-Laufzeit / RAM haben. Sollten Sie Code ausführen wollen, welcher kleinere Hostings an seine Grenzen bringen könnte, empfehlen wir ein Standalone Updatescript.