Files
XC_VM/src/core/Init/LegacyInitializer.php
T

159 lines
5.6 KiB
PHP
Raw Normal View History

<?php
class LegacyInitializer {
public static function initCore($rUseCache = false) {
if (!empty($_GET)) {
2026-03-07 21:53:45 +03:00
InputValidator::cleanGlobals($_GET);
}
if (!empty($_POST)) {
2026-03-07 21:53:45 +03:00
InputValidator::cleanGlobals($_POST);
}
if (!empty($_SESSION)) {
2026-03-07 21:53:45 +03:00
InputValidator::cleanGlobals($_SESSION);
}
if (!empty($_COOKIE)) {
2026-03-07 21:53:45 +03:00
InputValidator::cleanGlobals($_COOKIE);
}
2026-03-07 21:53:45 +03:00
$rInput = @InputValidator::parseIncomingRecursively($_GET, array());
RequestManager::set(@InputValidator::parseIncomingRecursively($_POST, $rInput));
if (!defined('SERVER_ID')) {
2026-03-07 21:53:45 +03:00
define('SERVER_ID', intval(ConfigReader::get('server_id')));
}
if ($rUseCache) {
2026-03-07 21:53:45 +03:00
SettingsManager::set(FileCache::getCache('settings') ?: array());
} else {
2026-03-07 21:53:45 +03:00
SettingsManager::set(SettingsRepository::getAll());
}
2026-03-07 21:53:45 +03:00
if (!empty(SettingsManager::get('default_timezone'))) {
date_default_timezone_set(SettingsManager::get('default_timezone'));
}
2026-03-07 21:53:45 +03:00
if (SettingsManager::get('on_demand_wait_time') == 0) {
SettingsManager::update('on_demand_wait_time', 15);
}
2026-03-07 21:53:45 +03:00
FfmpegPaths::resolve(SettingsManager::get('ffmpeg_cpu'));
2026-03-07 21:53:45 +03:00
if (!$rUseCache) {
ServerRepository::getAll();
CronGenerator::generate();
}
self::exportGlobals();
self::syncCoreContainer();
}
public static function initStreaming() {
if (!empty($_GET)) {
2026-03-03 20:00:34 +03:00
Request::cleanGlobals($_GET);
}
if (!empty($_POST)) {
2026-03-03 20:00:34 +03:00
Request::cleanGlobals($_POST);
}
if (!empty($_SESSION)) {
2026-03-03 20:00:34 +03:00
Request::cleanGlobals($_SESSION);
}
if (!empty($_COOKIE)) {
2026-03-03 20:00:34 +03:00
Request::cleanGlobals($_COOKIE);
}
2026-03-03 20:00:34 +03:00
$rInput = @Request::parseIncomingRecursively($_GET, array());
$GLOBALS['rRequest'] = @Request::parseIncomingRecursively($_POST, $rInput);
$GLOBALS['rConfig'] = parse_ini_file(CONFIG_PATH . 'config.ini');
if (!defined('SERVER_ID')) {
2026-03-03 20:00:34 +03:00
define('SERVER_ID', intval($GLOBALS['rConfig']['server_id']));
}
2026-03-03 20:00:34 +03:00
if (!$GLOBALS['rSettings']) {
$GLOBALS['rSettings'] = CacheReader::get('settings');
}
2026-03-03 20:00:34 +03:00
if (!empty($GLOBALS['rSettings']['default_timezone'])) {
date_default_timezone_set($GLOBALS['rSettings']['default_timezone']);
}
2026-03-03 20:00:34 +03:00
if ($GLOBALS['rSettings']['on_demand_wait_time'] == 0) {
$GLOBALS['rSettings']['on_demand_wait_time'] = 15;
}
2026-03-07 21:53:45 +03:00
FfmpegPaths::resolve($GLOBALS['rSettings']['ffmpeg_cpu']);
2026-03-03 20:00:34 +03:00
$GLOBALS['rCached'] = CacheReader::isReady($GLOBALS['rSettings']);
$GLOBALS['rServers'] = CacheReader::get('servers');
$GLOBALS['rBlockedUA'] = CacheReader::get('blocked_ua');
$GLOBALS['rBlockedISP'] = CacheReader::get('blocked_isp');
$GLOBALS['rBlockedIPs'] = CacheReader::get('blocked_ips');
$GLOBALS['rBlockedServers'] = CacheReader::get('blocked_servers');
$GLOBALS['rAllowedIPs'] = CacheReader::get('allowed_ips');
$GLOBALS['rProxies'] = CacheReader::get('proxy_servers');
2026-03-07 21:53:45 +03:00
$GLOBALS['rBouquets'] = CacheReader::get('bouquets') ?: array();
2026-03-03 20:00:34 +03:00
$GLOBALS['rSegmentSettings'] = array(
'seg_time' => intval($GLOBALS['rSettings']['seg_time']),
'seg_list_size' => intval($GLOBALS['rSettings']['seg_list_size'])
);
2026-03-03 20:00:34 +03:00
DatabaseFactory::connect();
2026-03-07 21:53:45 +03:00
// Синхронизация singleton-менеджеров для классов, мигрированных с CU
SettingsManager::set($GLOBALS['rSettings']);
RequestManager::set($GLOBALS['rRequest']);
// FFmpeg paths — export to globals (streaming context)
$GLOBALS['rFFPROBE'] = FfmpegPaths::probe();
$GLOBALS['rFFMPEG_CPU'] = FfmpegPaths::cpu();
$GLOBALS['rFFMPEG_GPU'] = FfmpegPaths::gpu();
self::syncStreamingContainer();
}
/**
* Экспортирует данные singleton-менеджеров в глобальные переменные.
*
* Позволяет использовать `global $rSettings;` внутри функций
* вместо повторного вызова SettingsManager::getAll().
*
* Вызывается один раз в конце initCore() / initStreaming().
* Глобалы — read-only snapshot. Для мутаций использовать Manager.
*
* Экспортируемые переменные:
* $rSettings — настройки панели (SettingsManager)
* $rRequest — параметры HTTP-запроса (RequestManager)
* $rConfig — config.ini данные (ConfigReader)
* $rServers — все серверы (ServerRepository)
* $rFFPROBE — путь к ffprobe (FfmpegPaths)
* $rFFMPEG_CPU — путь к ffmpeg CPU (FfmpegPaths)
* $rFFMPEG_GPU — путь к ffmpeg GPU (FfmpegPaths)
*/
public static function exportGlobals(): void {
$GLOBALS['rSettings'] = SettingsManager::getAll();
$GLOBALS['rRequest'] = RequestManager::getAll();
$GLOBALS['rConfig'] = ConfigReader::getAll();
$GLOBALS['rServers'] = ServerRepository::getAll();
$GLOBALS['rFFPROBE'] = FfmpegPaths::probe();
$GLOBALS['rFFMPEG_CPU'] = FfmpegPaths::cpu();
$GLOBALS['rFFMPEG_GPU'] = FfmpegPaths::gpu();
}
private static function syncCoreContainer() {
$rContainer = ServiceContainer::getInstance();
2026-03-07 21:53:45 +03:00
$rContainer->set('core.request', RequestManager::getAll());
$rContainer->set('core.config', ConfigReader::getAll());
$rContainer->set('core.settings', SettingsManager::getAll());
$rContainer->set('core.servers', ServerRepository::getAll());
$rContainer->set('core.bouquets', BouquetService::getAll());
$rContainer->set('core.categories', CategoryService::getFromDatabase());
}
private static function syncStreamingContainer() {
$rContainer = ServiceContainer::getInstance();
2026-03-03 20:00:34 +03:00
$rContainer->set('streaming.request', $GLOBALS['rRequest']);
$rContainer->set('streaming.config', $GLOBALS['rConfig']);
$rContainer->set('streaming.settings', $GLOBALS['rSettings']);
$rContainer->set('streaming.servers', $GLOBALS['rServers']);
}
}