Nueva tabla turnero_tv_media (tipo, url, orden, duracion_segundos) para soportar múltiples videos/imágenes reproducidos en secuencia y en bucle. El video que ya estaba cargado se migró como primer ítem de la playlist. - save_tv_media.php / delete_tv_media.php / reorder_tv_media.php reemplazan a save_tv_video.php (eliminado). - configuracion.php (tab TV): subida múltiple, lista reordenable por arrastre, duración editable por imagen. - display_global.php: el <video> único se reemplaza por un reproductor JS que recorre la playlist — video hasta 'ended', imagen por su duración configurada, y vuelve a empezar al terminar. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
38 lines
1.0 KiB
PHP
38 lines
1.0 KiB
PHP
<?php
|
|
/**
|
|
* modules/turnero/api/reorder_tv_media.php
|
|
* Guarda el orden y la duración (para imágenes) de la playlist de la Pantalla TV.
|
|
* POST JSON: { items: [{ id, orden, duracion_segundos }, ...] }
|
|
*/
|
|
|
|
require_once __DIR__ . '/../../../config/config.php';
|
|
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
|
|
if (!isUserLoggedIn()) {
|
|
http_response_code(401);
|
|
echo json_encode(['ok' => false, 'error' => 'No autenticado']);
|
|
exit;
|
|
}
|
|
|
|
$pdo = Database::getInstance()->getConnection();
|
|
$body = json_decode(file_get_contents('php://input'), true) ?? [];
|
|
$items = is_array($body['items'] ?? null) ? $body['items'] : [];
|
|
|
|
if (!$items) {
|
|
echo json_encode(['ok' => false, 'error' => 'items requerido']);
|
|
exit;
|
|
}
|
|
|
|
$stmt = $pdo->prepare(
|
|
"UPDATE turnero_tv_media SET orden = ?, duracion_segundos = ? WHERE id = ?"
|
|
);
|
|
foreach ($items as $i => $it) {
|
|
$id = (int)($it['id'] ?? 0);
|
|
if (!$id) continue;
|
|
$dur = max(1, (int)($it['duracion_segundos'] ?? 8));
|
|
$stmt->execute([$i, $dur, $id]);
|
|
}
|
|
|
|
echo json_encode(['ok' => true]);
|