Markus Michalski FAQ

Subticket Manager: Erweitern und Integration

Subticket Manager aus eigenem PHP-Code nutzen: öffentliche Methoden der Plugin-Klasse, verwendete osTicket-Signale, Queue-Dekoration und das Zusammenspiel mit dem Plugin API Endpoints.

English Version

Zurück zur Übersicht

Subticket Manager: Erweitern und Integration

Öffentliche Methoden der Plugin-Klasse

Die Klasse SubticketPlugin stellt fünf Methoden bereit, die anderer PHP-Code (etwa ein weiteres osTicket-Plugin) nutzen kann. Die Klasse steht zur Verfügung, sobald osTicket das aktive Plugin geladen hat.

Methode Rückgabe Beschreibung
getChildren($parentId) Liste von Arrays mit id, number, subject, status, created Children eines Tickets, nach Erstellungsdatum aufsteigend
getParent($childId) Array mit ticket_id, number, subject, status oder null Parent eines Tickets
linkTicket($childId, $parentId) bool Verknüpft per interner Ticket-ID
linkTicketByNumber($childId, $parentNumber) bool Verknüpft per Ticketnummer des Parents
unlinkTicket($childId) bool Setzt ticket_pid des Childs auf NULL
if (class_exists('SubticketPlugin')) {
    $plugin = new SubticketPlugin();
    $children = $plugin->getChildren($ticket->getId());
}

Beim Verknüpfen prüft das Plugin positive IDs, Selbst-Verknüpfung, Existenz beider Tickets und Schleifen (bis zehn Ebenen). Die Methoden prüfen keine Abteilungsrechte und keine Ticket-Zustände. Das ist Aufgabe des aufrufenden Codes. Bei Fehlern liefern sie false und schreiben eine Zeile mit dem Präfix [SUBTICKET-PLUGIN] ins PHP-Error-Log.

Zusammenspiel mit dem Plugin API Endpoints

Das Plugin API Endpoints bringt Subticket-Endpunkte für die REST-API mit (tickets-subtickets-parent.php, tickets-subtickets-list.php, tickets-subtickets-create.php, tickets-subtickets-unlink.php), die über die Berechtigung can_manage_subtickets je API-Key freigeschaltet werden.

Eine Verknüpfung über die REST-API erscheint sofort im Panel und im Queue-Indikator, weil beide dieselbe Spalte ticket_pid lesen.

Verwendete osTicket-Signale

Signal Handler Wirkung
object.view onTicketView() Rendert das Panel, wenn ein Ticket im Staff-Bereich angezeigt wird. Registriert nur im Staff-Bereich
model.created onTicketCreated() Setzt bei einem neuen Ticket ticket_pid auf die in der Session gemerkte Parent-ID
model.updated onTicketStatusChanged() Registriert, hat aber keine Funktion: Die Methode ist leer

Queue-Dekoration

Die Datei queue-decoration.php definiert die Klasse ParentTicketDecoration als Unterklasse von QueueColumnAnnotation. Sie wird früh geladen, damit osTicket sie über die deklarierten Klassen findet. Sie ergänzt die Abfrage um eine Unterabfrage, die die Children je Ticket zählt (Feld _child_count), und rendert Icon icon-code-fork mit Zähler und dem Tooltip „%d sub-ticket(s)“.

Grenzen