isAuthenticated()) { header('Location: /auth/keycloak', true, 302); exit; } $currentUser = is_array($_SESSION['desktop_auth']['user'] ?? null) ? $_SESSION['desktop_auth']['user'] : []; $currentGroups = array_map( static fn (string $group): string => strtolower(trim($group, '/')), array_values(array_map('strval', (array) ($currentUser['groups'] ?? []))) ); $isPartial = !empty($_GET['partial']); if (!in_array('administrators', $currentGroups, true)) { http_response_code(403); $forbidden = '

Kein Zugriff auf Cron Tool.

'; if ($isPartial) { echo $forbidden; return; } ?> Cron Tool saveGlobal([ 'base_url' => (string) ($_POST['base_url'] ?? ''), 'default_timezone' => (string) ($_POST['default_timezone'] ?? ''), ], $baseUrlFallback); $messages[] = 'Globale Cron-Einstellungen gespeichert.'; } elseif ($action === 'regenerate-token') { $service->regenerateToken($baseUrlFallback); $messages[] = 'Cron-Token wurde neu erzeugt.'; } elseif ($action === 'run-due') { $results = $service->runDue($baseUrlFallback); if ($results === []) { $messages[] = 'Aktuell war kein Cron-Job faellig.'; } else { foreach ($results as $result) { $messages[] = sprintf( '%s: %s', (string) ($result['job_key'] ?? 'Cron-Job'), (string) ($result['message'] ?? '') ); } } } elseif ($action === 'save-job') { $jobKey = (string) ($_POST['job_key'] ?? ''); $service->saveJob($jobKey, [ 'enabled' => !empty($_POST['enabled']), 'cron_expression' => (string) ($_POST['cron_expression'] ?? ''), 'timezone' => (string) ($_POST['timezone'] ?? ''), ], $baseUrlFallback); $messages[] = 'Cron-Job gespeichert: ' . $jobKey; } elseif ($action === 'run-now') { $jobKey = (string) ($_POST['job_key'] ?? ''); $result = $service->runNow($jobKey, $baseUrlFallback); if (!empty($result['ok'])) { $messages[] = (string) ($result['message'] ?? 'Cron-Job ausgefuehrt.'); } else { $errors[] = (string) ($result['message'] ?? 'Cron-Job fehlgeschlagen.'); } } } catch (\Throwable $exception) { $errors[] = $exception->getMessage(); } } } $bootstrap = $service->bootstrap($baseUrlFallback); $settings = is_array($bootstrap['settings'] ?? null) ? $bootstrap['settings'] : []; $jobs = is_array($bootstrap['jobs'] ?? null) ? $bootstrap['jobs'] : []; $h = static fn (?string $value): string => htmlspecialchars($value ?? '', ENT_QUOTES); ob_start(); ?>

Cron Registry

Globale Scheduler-Verwaltung

Module hinterlegen ihre Cron-Endpunkte in der Manifest-Datei. Dieses Systemtool sammelt sie automatisch und verwaltet Zeitplaene zentral.

Base URL: Token aktiv Admin only
Ergebnis
Bitte pruefen

Global

Runner-Einstellungen

Cron-Token

Der Token wird fuer interne Cron-Aufrufe per `X-Desktop-Cron-Token` genutzt.

Jobs

Erkannte Modul-Crons

Status
Naechster Lauf
Letzter Erfolg
Endpoint

Cron-Fehler:

Aktuell wurden noch keine Cron-Jobs aus Modulen registriert.
Cron Tool