[ 'label' => 'Overview', 'url' => $sectionUrls['overview'] ?? ($app_root . '?page=admin'), 'type' => 'core', 'hook' => null, 'position' => 100, ], ]; } $heroPills = [ [ 'label' => 'Maintenance', 'value' => $maintenance_enabled ? 'enabled' : 'off', 'icon' => 'fas fa-power-off', 'tone' => $maintenance_enabled ? 'danger' : 'success', ], [ 'label' => 'Migrations', 'value' => count($pending) . ' pending', 'icon' => 'fas fa-database', 'tone' => empty($pending) ? 'neutral' : 'warning', ], ]; if (!empty($adminOverviewPills) && is_array($adminOverviewPills)) { foreach ($adminOverviewPills as $pill) { if (!is_array($pill)) { continue; } $heroPills[] = [ 'label' => (string)($pill['label'] ?? 'Status'), 'value' => (string)($pill['value'] ?? ''), 'icon' => (string)($pill['icon'] ?? 'fas fa-info-circle'), 'tone' => (string)($pill['tone'] ?? 'info'), ]; } } $statusItems = [ [ 'label' => 'Maintenance mode', 'description' => $maintenance_enabled ? 'Live site shows downtime banner.' : 'Visitors see the normal experience.', 'value' => $maintenance_enabled ? 'ON' : 'OFF', 'tone' => $maintenance_enabled ? 'warning' : 'success', ], [ 'label' => 'Schema migrations', 'description' => empty($pending) ? 'Database matches code.' : 'Pending updates detected.', 'value' => count($pending) . ' pending', 'tone' => empty($pending) ? 'success' : 'warning', ], ]; if (!empty($adminOverviewStatuses) && is_array($adminOverviewStatuses)) { foreach ($adminOverviewStatuses as $status) { if (!is_array($status)) { continue; } $statusItems[] = [ 'label' => (string)($status['label'] ?? 'Status'), 'description' => (string)($status['description'] ?? ''), 'value' => (string)($status['value'] ?? ''), 'tone' => (string)($status['tone'] ?? 'info'), ]; } } ?>

Admin control center

Centralized administration dashboard for system-wide management.

$tabMeta): $isActive = $activeSection === $sectionKey; $tabUrl = $tabMeta['url'] ?? ($sectionUrls[$sectionKey] ?? ($app_root . '?page=admin§ion=' . urlencode($sectionKey))); ?>
$tabMeta): $panelUrl = $tabMeta['url'] ?? ($sectionUrls[$sectionKey] ?? ($app_root . '?page=admin§ion=' . urlencode($sectionKey))); $isActive = $activeSection === $sectionKey; ?>

Current status

High-level signals that require your attention.

Maintenance

Toggle maintenance or update visitor message.

Next migration

Peek at what will run when you apply updates.

Next:

No migrations queued.


Maintenance mode

Let your users know when maintenance is in progress.

Message

Database migrations

Review pending SQL and apply with confidence.

Error:

Test migration tools

Pending migrations

Next:
  • No pending migrations

Applied migrations

  • No applied migrations yet
$sectionKey, 'active_section' => $activeSection, 'app_root' => $app_root, 'section_url' => $panelUrl, 'section_urls' => $sectionUrls ?? [], 'csrf_token' => $csrf_token, 'state' => $sectionState[$sectionKey] ?? [], 'section_state' => $sectionState, 'db' => $db ?? null, ]); ?>

No renderer available for this section.

$content): $modalId = 'migrationModal' . md5($name); $record = $migration_records[$name] ?? null; $appliedAtRaw = $record['applied_at'] ?? null; $appliedAtFormatted = null; if (!empty($appliedAtRaw)) { $timestamp = strtotime($appliedAtRaw); $appliedAtFormatted = $timestamp ? date('M d, Y H:i', $timestamp) : $appliedAtRaw; } $isModalNext = (!empty($next_pending) && $next_pending === $name); $modalResult = (!empty($migration_modal_result) && ($migration_modal_result['name'] ?? '') === $name) ? $migration_modal_result : null; ?>