63 lines
1.8 KiB
PHP
63 lines
1.8 KiB
PHP
<?php
|
|
|
|
require_once '/var/www/src/Config.php';
|
|
require_once '/var/www/src/XmlTv.php';
|
|
require_once '/var/www/src/View.php';
|
|
|
|
$config = new Config(
|
|
'/var/www/config/config.json',
|
|
'/var/www/config/channels.json'
|
|
);
|
|
|
|
$xmltv = new XmlTv(
|
|
'/var/www/epg/guide.xml',
|
|
$config->get('timezone', 'Europe/Vienna')
|
|
);
|
|
|
|
$xmltv->synchronizeChannels($config);
|
|
|
|
$view = $_GET['view'] ?? $config->get('default_view', 'today');
|
|
|
|
if ($view === 'channels' && $_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$savedChannels = $config->getChannels();
|
|
|
|
foreach ($savedChannels as $id => &$channel) {
|
|
$channel['enabled'] = isset($_POST['enabled'][$id]);
|
|
$channel['favorite'] = isset($_POST['favorite'][$id]);
|
|
$channel['number'] = (int)($_POST['number'][$id] ?? $channel['number'] ?? 999999);
|
|
$channel['group'] = trim($_POST['group'][$id] ?? $channel['group'] ?? 'Unknown');
|
|
}
|
|
|
|
unset($channel);
|
|
|
|
uasort($savedChannels, function ($a, $b) {
|
|
return ((int)($a['number'] ?? 999999)) <=> ((int)($b['number'] ?? 999999));
|
|
});
|
|
|
|
$config->saveChannels($savedChannels);
|
|
|
|
header('Location: /?view=channels&saved=1');
|
|
exit;
|
|
}
|
|
|
|
[$channels, $programmes] = $xmltv->load($config);
|
|
|
|
$currentProgrammes = $xmltv->getCurrentProgrammes($config);
|
|
|
|
$contentTemplate = match ($view) {
|
|
'channels' => '/var/www/templates/channels.php',
|
|
'now' => '/var/www/templates/now.php',
|
|
default => '/var/www/templates/home.php',
|
|
};
|
|
|
|
View::render('layout', [
|
|
'title' => $config->get('title', 'TVGuide'),
|
|
'channels' => $channels,
|
|
'programmes' => $programmes,
|
|
'contentTemplate' => $contentTemplate,
|
|
'view' => $view,
|
|
'channelConfig' => $config->getChannels(),
|
|
'saved' => isset($_GET['saved']),
|
|
'currentProgrammes' => $currentProgrammes,
|
|
]);
|