50 lines
1.5 KiB
PHP
50 lines
1.5 KiB
PHP
<?php
|
|
|
|
class ChannelService
|
|
{
|
|
public function synchronizeChannels(array $cachedChannels, Config $config): void
|
|
{
|
|
// Alt-Methode bleibt absichtlich harmlos.
|
|
// Neue Sender werden jetzt vom SenderSyncService im XmlTvCacheService ergänzt.
|
|
}
|
|
|
|
public function saveChannelsFromPost(Config $config, array $post): void
|
|
{
|
|
$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);
|
|
|
|
$config->saveChannels($this->sortChannels($savedChannels));
|
|
|
|
@unlink('/var/www/cache/guide.json');
|
|
@unlink('/var/www/cache/guide.version');
|
|
}
|
|
|
|
public function getSortedChannels(Config $config): array
|
|
{
|
|
return $this->sortChannels($config->getChannels());
|
|
}
|
|
|
|
private function sortChannels(array $channels): array
|
|
{
|
|
uasort($channels, function ($a, $b) {
|
|
return [
|
|
(int)($a['number'] ?? 999999),
|
|
strtolower($a['name'] ?? '')
|
|
] <=> [
|
|
(int)($b['number'] ?? 999999),
|
|
strtolower($b['name'] ?? '')
|
|
];
|
|
});
|
|
|
|
return $channels;
|
|
}
|
|
}
|