Plugin-Updates

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.10 von xt:Commerce enthalten ist.

Workflow eines Updates:

Der normale Workflow eines Updates teilt sich in vier Bereiche:

  1. Update Starten (Ein Backup der alten Plugindateien - nicht Datenbank od. Shop)
  2. Datei Update
  3. Datenbank Update
  4. 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

Zunächst wird geprüft ob die derzeit installierte Pluginversion ein automatisches Update erlaubt. Für Pluginversionen die höher als die Option "minimumupdateversion" wird das Updatescript gestartet. Bei niedrigeren Versionen erscheint ein Hinweis, dass die aktuelle Version dieses noch nicht unterstützt.

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.