Add show management and going-live controls to admin

- admin/shows.php: list shows
- admin/show_edit.php: add, edit and delete shows, with validated
  background image uploads saved under generated names
- admin/index.php: queue the next show, switch the live show, or clear
  the queue
- includes/broadcasts.php: setBroadcastShow() and clearQueuedShow(),
  shared by the dashboard and cli/set_show.php
- includes/admin_layout.php: flash messages and Shows nav link

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Daniel MesserandClaude Opus 5.5 committed 2026-10-29 13:48:14 -05:00
1 parent babb71660c
commit 6e61fc6bda
7 files changed
+297 -12

No files matched your search

+17
View File
@@ -43,6 +43,23 @@ function currentShow(PDO $db): ?array {
return $row ?: null;
}
// Assigns a show to the live broadcast, or queues it for the next one if nothing is live.
// Returns 'live' or 'queued'.
function setBroadcastShow(PDO $db, int $showId): string {
$live = liveBroadcast($db);
if ($live !== null) {
$db->prepare('UPDATE broadcasts SET show_id = ? WHERE id = ?')->execute([$showId, $live['id']]);
return 'live';
}
clearQueuedShow($db);
$db->prepare('INSERT INTO broadcasts (show_id) VALUES (?)')->execute([$showId]);
return 'queued';
}
function clearQueuedShow(PDO $db): void {
$db->exec('DELETE FROM broadcasts WHERE started_at IS NULL');
}
// Tracks from the most recent broadcast that has started, newest first
function recentTracks(PDO $db, int $limit = 100): array {
$stmt = $db->prepare(