$task) { $enabled = !empty($_POST['enabled'][$id]) ? '1' : '0'; $interval = max(1, intv($_POST['interval_hours'][$id] ?? $task['default_interval_hours'])); setting_set('scheduler:' . $id . ':enabled', $enabled); setting_set('scheduler:' . $id . ':interval_hours', (string) $interval); if ($id === 'purge_admin_log') { $keepDays = max(1, intv($_POST['keep_days'] ?? 90)); setting_set('scheduler:purge_admin_log:keep_days', (string) $keepDays); } } acp_log('scheduler.settings_save'); acp_flash_success(t_default('acp.sched.saved', 'Scheduler settings saved.')); acp_redirect('scheduler'); } if ($do === 'run_now') { $taskId = (string) ($_POST['task'] ?? ''); if (!isset($tasks[$taskId])) { acp_flash_error(t_default('acp.sched.unknown_task', 'Unknown task.')); acp_redirect('scheduler'); } try { $summary = (string) call_user_func($tasks[$taskId]['run']); } catch (Throwable $e) { $summary = 'error: ' . $e->getMessage(); } scheduler_mark_run($taskId, $summary); acp_log('scheduler.' . $taskId, '', array('summary' => $summary, 'manual' => true)); acp_flash_success(t_default('acp.sched.run_done', '{task} ran: {summary}', ['task' => $tasks[$taskId]['label'], 'summary' => $summary])); acp_redirect('scheduler'); } } ?>

$task): ?>
> 0 ? h(getClock($lastRun, true)) : t_default('acp.sched.never', 'Never') ?> -
$task): ?>