| Anforderung | Wert | Hinweise |
|---|---|---|
| osTicket | 1.18.x | Die Plugin-Klasse prüft auf osTicket 1.18.0 oder neuer und auf die Spalte ticket_pid in ost_ticket |
| PHP | 7.4 oder neuer | Laut composer.json; die CI prüft 7.4 bis 8.3 |
| Datenbank | MySQL oder MariaDB | Die README nennt MariaDB 10.3+ oder MySQL 5.7+ |
| Tabellenpräfix | ost_ |
Alle SQL-Abfragen des Plugins verwenden den festen Präfix ost_; ein anderer Präfix wird nicht unterstützt |
| Dateirechte | Schreibzugriff auf scp/ |
Das Plugin kopiert beim Aktivieren drei Dateien dorthin |
| Composer | nur beim Git-Weg | Das Plugin hat keine Laufzeit-Abhängigkeiten, braucht aber den von Composer erzeugten Autoloader |
include/plugins/ auf deinen osTicket-Server hoch.Die Paketliste des Repositorys (
.releaseinclude) enthältvendor/autoload.phpundvendor/composer/. Genau diese Dateien braucht das Plugin zum Laden seiner Klassen aussrc/.
cd /pfad/zu/osticket/include/plugins
git clone https://github.com/markus-michalski/osticket-subticket-manager.git subticket-manager
cd subticket-manager
composer install --no-dev
Ein reiner
git clonereicht nicht. Das Plugin lädt seine Klassen untersrc/ausschließlich übervendor/autoload.php, undvendor/gehört nicht zum Repository. Ohnecomposer installbricht das Plugin mit einem PHP-Fehler (Klasse nicht gefunden) ab.
Der Name des Plugin-Ordners ist frei wählbar. Der AJAX-Handler sucht die Plugin-Klasse über include/plugins/*/class.SubticketPlugin.php. Liegt das Plugin mehrfach unter include/plugins/ (zum Beispiel eine alte Kopie mit anderem Ordnernamen), antwortet der Handler mit HTTP 500 und der Meldung Multiple SubticketPlugin installations detected. Entferne dann die überzählige Kopie.
Beim Aktivieren (enable()) passiert Folgendes:
enable() automatisch eine aktive Instanz mit dem Namen des Plugins an.scp/ kopieren: subtickets.php, ajax-subticket.php und apps.php aus dem Ordner scp-files/ des Plugins werden nach scp/ kopiert. Bestehende Dateien mit demselben Namen werden überschrieben.scp/ nicht beschreibbar oder fehlt eine Quelldatei, liefert enable() Meldungen wie Target directory not writable: ... oder Failed to deploy file to scp/<Datei>.Die Datenbank-Änderungen legt das Plugin nicht in enable() an, sondern beim ersten Seitenaufruf nach der Aktivierung (siehe Technische Details).
apps.phpwird nachscp/apps.phpkopiert. Existiert dort schon eine Datei mit diesem Namen (zum Beispiel aus osTicket selbst), wird sie überschrieben, und beim Deinstallieren des Plugins wirdscp/apps.phpgelöscht. Sichere die Datei vor der Aktivierung.
git pull und composer install --no-dev).plugin.php mit der Datei scp/.subticket-deployed-version und kopiert die drei Dateien nach scp/ neu, sobald die Versionen abweichen.Ist scp/ für den Webserver nicht beschreibbar, kopierst du die Dateien von Hand:
cd /pfad/zu/osticket
cp include/plugins/subticket-manager/scp-files/subtickets.php scp/subtickets.php
cp include/plugins/subticket-manager/scp-files/ajax-subticket.php scp/ajax-subticket.php
cp include/plugins/subticket-manager/scp-files/apps.php scp/apps.php
Das Plugin überschreibt disable() nicht. Beim Deaktivieren bleiben die drei Dateien in scp/ und alle Datenbank-Änderungen bestehen. Die Panels, der Queue-Indikator und die Auto-Verknüpfung sind dann nicht aktiv, weil das Plugin nicht mehr startet.
Beim Löschen des Plugins im Admin Panel läuft uninstall():
scp/subtickets.php, scp/ajax-subticket.php, scp/apps.php und scp/.subticket-deployed-version werden entfernt.version und die beiden Indizes (Details unter Konfiguration).ticket_pid stehen.