Add-ons installieren, aktualisieren und aktivieren#
Damit ein Add-on in i-doit installiert, aktualisiert und aktiviert werden kann, ist eine bestimmte Ordnerhierarchie einzuhalten. Innerhalb des Add-on-Ordners werden Dateien, wie z.B. init.php, vorausgesetzt, um einen einheitlichen Programmablauf zu gewährleisten.
Add-on installieren#
Add-ons müssen als ZIP-Archiv vorliegen, um von i-doit installiert werden zu können. Die ZIP-Datei wird über das Admin-Center eingespielt und startet die internen Routinen zum Installieren. Die Verzeichnisstruktur innerhalb des Archivs muss dabei einem vorgegebenem Muster folgen. Hier am Beispiel des "Beispiel"-Add-ons (Identifier "example"):
Im Archiv muss die package.json-Datei auf oberster Ebene (wie auch src) liegen, damit diese von i-doit gefunden wird. Diese beinhaltet diverse wichtige Metadaten, die während der Installation benötigt werden. Weitere Informationen sind im Artikel Metadaten eines Add-ons (package.json) nachzulesen.
Die Datei wird nach erfolgreicher Installation automatisch in das Add-on-Verzeichnis verschoben.
Add-on aktualisieren#
Anders als beim i-doit-Kern gibt es bei Add-ons keinen Unterschied zwischen "installation"- und "update"-Paketen. Die Entscheidung zwischen "Was passiert bei Installation?" und "Was passiert bei Aktualisierung?" wird im Kapitel "Installieren und Deinstallieren" näher erläutert.
System- und Mandanten-Datenbank erweitern#
Häufig erweitert ein Add-on die i-doit-Mandanten-Datenbank um eigene Tabellen und Inhalte. Zu diesem Zweck kann ein Add-on die Dateien update_data.xml und update_sys.xml mitbringen, die im Add-on-Verzeichnis unterhalb des "install"-Ordners liegen müssen. Hier werden unter definierten Bedingungen SQL-Queries ausgeführt, die sowohl zum Installieren als auch Aktualisieren von Datenbank-Tabellen und -Inhalten genutzt werden können. Die Datei update_data.xml wird für die gewählten Mandanten-Datenbanken verwendet, während update_sys.xml ausschließlich auf die System-Datenbank angewendet wird.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
Ein Query-Element muss immer die folgenden Elemente mitliefern:
- id: Ein numerischer Counter, beginnend bei 1
- title: Ein beschreibender Titel, der erläutert, welche Query aktuell ausgeführt wird.
- check: Der notwendige Check + Bedingung
- errmsg: Ein optionaler Text, der im Fehlerfall ausgegeben wird.
- sql: Die auszuführende SQL-Query, unter Berücksichtigung des Check-Ergebnisses
Solche Queries können folgendermaßen aussehen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
Es ist möglich, für jeden Ausgang des Checks (true / false) eine SQL-Query zu hinterlegen.
Folgende Checks und Bedingungen sind möglich:
- C_CREATE_TABLE (inkl. Alias "C_UPDATE", "C_INSERT_INTO", "C_ALTER_TABLE", "C_TABLE_EXISTS" und "C_DROP_TABLE") Bedingung: Tabellen-Name Prüft, ob die angegebene Tabelle existiert.
- C_VALUE_EXISTS Bedingung: SQL-Query Führt die angegebene Query aus und prüft, ob es eine Rückgabe gibt (gefundene Zeilen > 0).
- C_ADD_FIELD Bedingung: Tabelle und Spalte in folgender Form:
, Prüft, ob das genannte Feld in der Tabelle existiert.
Aktivieren und Deaktivieren#
Damit ein Add-on im Admin-Center aktiviert und deaktiviert werden kann, muss die isys_module_example-Klasse das idoit\AddOn\ActivatableInterface-Interface implementieren. Dieses setzt drei Methoden voraus, die bei den entsprechenden Aktionen ausgeführt werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
Werden die Methoden nicht benötigt, kann lediglich true zurückgegeben werden. Üblicherweise werden diese Methoden dazu genutzt, um zum Beispiel Rechte zu setzen oder Dashboard-Widgets zu installieren.
Installieren und Deinstallieren#
Ähnlich wie beim Aktivieren und Deaktivieren eines Add-ons, gibt es auch zum Installieren und Deinstallieren ein entsprechendes Interface: idoit\AddOn\InstallableInterface. Auch dies setzt drei Methoden voraus, die zwingend implementiert werden müssen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
Die install- und uninstall-Methoden können benutzt werden, um komplexe Aufgaben zu erledigen, die über einfache SQL-Queries hinausgehen.
Veraltete Installationslogik
In älteren i-doit-Versionen (< 1.12) wird die "install"-Methode noch nicht unterstützt - hier muss eine separate Logik angewendet werden.