36 lines
1.6 KiB
PHP
36 lines
1.6 KiB
PHP
<?php
|
|
// Beispiel-Plugin: protokolliert Ticket-Ereignisse in einer eigenen Tabelle.
|
|
// Wird beim Aktivieren geladen; hier werden nur Erweiterungen registriert.
|
|
|
|
plugin_add_hook('ticket.created', function (array $e) {
|
|
$pdo = get_db();
|
|
$pdo->prepare('INSERT INTO plugin_beispiel_log (ticket_id, event, created_at) VALUES (?,?,?)')->execute([$e['ticketId'], 'created', db_now()]);
|
|
});
|
|
plugin_add_hook('ticket.status_changed', function (array $e) {
|
|
$pdo = get_db();
|
|
$pdo->prepare('INSERT INTO plugin_beispiel_log (ticket_id, event, created_at) VALUES (?,?,?)')->execute([$e['ticketId'], 'status_changed', db_now()]);
|
|
});
|
|
|
|
// Baustein in der Ticketansicht (Plugins liefern fertiges HTML und müssen Ausgaben selbst escapen)
|
|
plugin_add_filter('ticket.view.sidebar', function (string $html, array $ctx) {
|
|
$stmt = get_db()->prepare('SELECT COUNT(*) FROM plugin_beispiel_log WHERE ticket_id = ?');
|
|
$stmt->execute([$ctx['ticketId']]);
|
|
return $html . '<div class="card" style="margin-top:16px;padding:14px 16px"><strong>Protokoll-Plugin</strong><br>'
|
|
. (int) $stmt->fetchColumn() . ' Ereignis(se) zu diesem Ticket</div>';
|
|
});
|
|
|
|
plugin_register_menu('Ticket-Protokoll', 'log');
|
|
|
|
plugin_register_api('count', function (array $staff, array $request): array {
|
|
return ['count' => (int) get_db()->query('SELECT COUNT(*) FROM plugin_beispiel_log')->fetchColumn()];
|
|
});
|
|
|
|
plugin_add_hook('cron.run', function () {
|
|
plugin_set_setting('beispiel', 'last_cron', db_now());
|
|
});
|
|
|
|
// Aufräumen beim Entfernen mit "Daten löschen"
|
|
plugin_add_hook('plugin.uninstall.beispiel', function () {
|
|
get_db()->exec('DROP TABLE IF EXISTS plugin_beispiel_log');
|
|
});
|