diff --git a/src/Public/Controllers/Admin/AdminLogoutController.php b/src/Public/Controllers/Admin/AdminLogoutController.php index d8decbab..4ade6322 100644 --- a/src/Public/Controllers/Admin/AdminLogoutController.php +++ b/src/Public/Controllers/Admin/AdminLogoutController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/AdminPlexController.php b/src/Public/Controllers/Admin/AdminPlexController.php index 6cfb5290..78457118 100644 --- a/src/Public/Controllers/Admin/AdminPlexController.php +++ b/src/Public/Controllers/Admin/AdminPlexController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/AdminResizeController.php b/src/Public/Controllers/Admin/AdminResizeController.php index a508de15..360d09b0 100644 --- a/src/Public/Controllers/Admin/AdminResizeController.php +++ b/src/Public/Controllers/Admin/AdminResizeController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/AdminWatchController.php b/src/Public/Controllers/Admin/AdminWatchController.php index 79106c9e..90f570f2 100644 --- a/src/Public/Controllers/Admin/AdminWatchController.php +++ b/src/Public/Controllers/Admin/AdminWatchController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/AjaxController.php b/src/Public/Controllers/Admin/AjaxController.php index 96f32d29..49c047ae 100644 --- a/src/Public/Controllers/Admin/AjaxController.php +++ b/src/Public/Controllers/Admin/AjaxController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ArchiveController.php b/src/Public/Controllers/Admin/ArchiveController.php index e8a64c28..1b95fda4 100644 --- a/src/Public/Controllers/Admin/ArchiveController.php +++ b/src/Public/Controllers/Admin/ArchiveController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/AsnsController.php b/src/Public/Controllers/Admin/AsnsController.php index 47dfd6f8..10376c5d 100644 --- a/src/Public/Controllers/Admin/AsnsController.php +++ b/src/Public/Controllers/Admin/AsnsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/BackupsController.php b/src/Public/Controllers/Admin/BackupsController.php index 5bc87d30..0d92b0f8 100644 --- a/src/Public/Controllers/Admin/BackupsController.php +++ b/src/Public/Controllers/Admin/BackupsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/BaseAdminController.php b/src/Public/Controllers/Admin/BaseAdminController.php index dbf57dfd..9d8a3cc0 100644 --- a/src/Public/Controllers/Admin/BaseAdminController.php +++ b/src/Public/Controllers/Admin/BaseAdminController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/BouquetController.php b/src/Public/Controllers/Admin/BouquetController.php index 318aaa72..1866cc7b 100644 --- a/src/Public/Controllers/Admin/BouquetController.php +++ b/src/Public/Controllers/Admin/BouquetController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/BouquetListController.php b/src/Public/Controllers/Admin/BouquetListController.php index 799b59a7..86e2c1f5 100644 --- a/src/Public/Controllers/Admin/BouquetListController.php +++ b/src/Public/Controllers/Admin/BouquetListController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/BouquetOrderController.php b/src/Public/Controllers/Admin/BouquetOrderController.php index dfa327be..ca1036a1 100644 --- a/src/Public/Controllers/Admin/BouquetOrderController.php +++ b/src/Public/Controllers/Admin/BouquetOrderController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/BouquetSortController.php b/src/Public/Controllers/Admin/BouquetSortController.php index 9785514f..ba2e3329 100644 --- a/src/Public/Controllers/Admin/BouquetSortController.php +++ b/src/Public/Controllers/Admin/BouquetSortController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/CacheController.php b/src/Public/Controllers/Admin/CacheController.php index a070d74d..0d94289b 100644 --- a/src/Public/Controllers/Admin/CacheController.php +++ b/src/Public/Controllers/Admin/CacheController.php @@ -1,16 +1,18 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ @@ -21,7 +23,7 @@ class CacheController extends BaseAdminController { SettingsManager::set(SettingsRepository::getAll(true)); $GLOBALS['rSettings'] = SettingsManager::getAll(); - $this->setTitle('Cache & Redis Settings'); + $this->setTitle('Cache & \Redis Settings'); $this->render('cache'); } } diff --git a/src/Public/Controllers/Admin/ChannelOrderController.php b/src/Public/Controllers/Admin/ChannelOrderController.php index e41f6f0a..f845cd6b 100644 --- a/src/Public/Controllers/Admin/ChannelOrderController.php +++ b/src/Public/Controllers/Admin/ChannelOrderController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ClientLogController.php b/src/Public/Controllers/Admin/ClientLogController.php index 88a92421..b742af93 100644 --- a/src/Public/Controllers/Admin/ClientLogController.php +++ b/src/Public/Controllers/Admin/ClientLogController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/CodeController.php b/src/Public/Controllers/Admin/CodeController.php index 5832eb78..590ce221 100644 --- a/src/Public/Controllers/Admin/CodeController.php +++ b/src/Public/Controllers/Admin/CodeController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/CodeEditController.php b/src/Public/Controllers/Admin/CodeEditController.php index 27180da1..eee15b4e 100644 --- a/src/Public/Controllers/Admin/CodeEditController.php +++ b/src/Public/Controllers/Admin/CodeEditController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/CreatedChannelController.php b/src/Public/Controllers/Admin/CreatedChannelController.php index 3fd6faef..92a4b361 100644 --- a/src/Public/Controllers/Admin/CreatedChannelController.php +++ b/src/Public/Controllers/Admin/CreatedChannelController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/CreatedChannelListController.php b/src/Public/Controllers/Admin/CreatedChannelListController.php index 3e33c274..0c18d9fc 100644 --- a/src/Public/Controllers/Admin/CreatedChannelListController.php +++ b/src/Public/Controllers/Admin/CreatedChannelListController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/CreatedChannelMassController.php b/src/Public/Controllers/Admin/CreatedChannelMassController.php index e867bf3b..784867c4 100644 --- a/src/Public/Controllers/Admin/CreatedChannelMassController.php +++ b/src/Public/Controllers/Admin/CreatedChannelMassController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/CreditLogsController.php b/src/Public/Controllers/Admin/CreditLogsController.php index b59189cf..9b644519 100644 --- a/src/Public/Controllers/Admin/CreditLogsController.php +++ b/src/Public/Controllers/Admin/CreditLogsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/DashboardController.php b/src/Public/Controllers/Admin/DashboardController.php index 5b4af6d1..e2e3277a 100644 --- a/src/Public/Controllers/Admin/DashboardController.php +++ b/src/Public/Controllers/Admin/DashboardController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/EditProfileController.php b/src/Public/Controllers/Admin/EditProfileController.php index 8f9aaa9b..816590fc 100644 --- a/src/Public/Controllers/Admin/EditProfileController.php +++ b/src/Public/Controllers/Admin/EditProfileController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/EnigmaController.php b/src/Public/Controllers/Admin/EnigmaController.php index 9d31b85d..febc41bc 100644 --- a/src/Public/Controllers/Admin/EnigmaController.php +++ b/src/Public/Controllers/Admin/EnigmaController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/EnigmaMassController.php b/src/Public/Controllers/Admin/EnigmaMassController.php index 089bb805..5313b3fe 100644 --- a/src/Public/Controllers/Admin/EnigmaMassController.php +++ b/src/Public/Controllers/Admin/EnigmaMassController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/EnigmasController.php b/src/Public/Controllers/Admin/EnigmasController.php index 5951f0ef..f5290c06 100644 --- a/src/Public/Controllers/Admin/EnigmasController.php +++ b/src/Public/Controllers/Admin/EnigmasController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/EpgController.php b/src/Public/Controllers/Admin/EpgController.php index 3193d5a6..3f916ed5 100644 --- a/src/Public/Controllers/Admin/EpgController.php +++ b/src/Public/Controllers/Admin/EpgController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/EpgListController.php b/src/Public/Controllers/Admin/EpgListController.php index 53ab65ac..28fcea6b 100644 --- a/src/Public/Controllers/Admin/EpgListController.php +++ b/src/Public/Controllers/Admin/EpgListController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/EpgViewController.php b/src/Public/Controllers/Admin/EpgViewController.php index bc4d4de7..2c3c5704 100644 --- a/src/Public/Controllers/Admin/EpgViewController.php +++ b/src/Public/Controllers/Admin/EpgViewController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/EpisodeController.php b/src/Public/Controllers/Admin/EpisodeController.php index fc5aaa2e..565e5120 100644 --- a/src/Public/Controllers/Admin/EpisodeController.php +++ b/src/Public/Controllers/Admin/EpisodeController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/EpisodeListController.php b/src/Public/Controllers/Admin/EpisodeListController.php index a6656224..ac3e0b4a 100644 --- a/src/Public/Controllers/Admin/EpisodeListController.php +++ b/src/Public/Controllers/Admin/EpisodeListController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/EpisodeMassController.php b/src/Public/Controllers/Admin/EpisodeMassController.php index 87dcb922..70f63e28 100644 --- a/src/Public/Controllers/Admin/EpisodeMassController.php +++ b/src/Public/Controllers/Admin/EpisodeMassController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/FingerprintController.php b/src/Public/Controllers/Admin/FingerprintController.php index 69dcf244..e3ba4aad 100644 --- a/src/Public/Controllers/Admin/FingerprintController.php +++ b/src/Public/Controllers/Admin/FingerprintController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/GroupController.php b/src/Public/Controllers/Admin/GroupController.php index 5e07ec7d..80226c68 100644 --- a/src/Public/Controllers/Admin/GroupController.php +++ b/src/Public/Controllers/Admin/GroupController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/GroupEditController.php b/src/Public/Controllers/Admin/GroupEditController.php index a72d7eb7..4468b8a7 100644 --- a/src/Public/Controllers/Admin/GroupEditController.php +++ b/src/Public/Controllers/Admin/GroupEditController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/HmacController.php b/src/Public/Controllers/Admin/HmacController.php index 9492ea2d..9d0a426c 100644 --- a/src/Public/Controllers/Admin/HmacController.php +++ b/src/Public/Controllers/Admin/HmacController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/HmacEditController.php b/src/Public/Controllers/Admin/HmacEditController.php index f784e116..310f8e71 100644 --- a/src/Public/Controllers/Admin/HmacEditController.php +++ b/src/Public/Controllers/Admin/HmacEditController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/IpController.php b/src/Public/Controllers/Admin/IpController.php index 2754521e..22e17cbd 100644 --- a/src/Public/Controllers/Admin/IpController.php +++ b/src/Public/Controllers/Admin/IpController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/IpEditController.php b/src/Public/Controllers/Admin/IpEditController.php index a02d208e..68b26456 100644 --- a/src/Public/Controllers/Admin/IpEditController.php +++ b/src/Public/Controllers/Admin/IpEditController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/IspController.php b/src/Public/Controllers/Admin/IspController.php index 3113ae1e..1be1da34 100644 --- a/src/Public/Controllers/Admin/IspController.php +++ b/src/Public/Controllers/Admin/IspController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/IspEditController.php b/src/Public/Controllers/Admin/IspEditController.php index 5004694a..10181c82 100644 --- a/src/Public/Controllers/Admin/IspEditController.php +++ b/src/Public/Controllers/Admin/IspEditController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/LineActivityController.php b/src/Public/Controllers/Admin/LineActivityController.php index fb10682d..b11e21a4 100644 --- a/src/Public/Controllers/Admin/LineActivityController.php +++ b/src/Public/Controllers/Admin/LineActivityController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/LineController.php b/src/Public/Controllers/Admin/LineController.php index 548288c0..14dc251c 100644 --- a/src/Public/Controllers/Admin/LineController.php +++ b/src/Public/Controllers/Admin/LineController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/LineIpsController.php b/src/Public/Controllers/Admin/LineIpsController.php index 6e29928b..3a20def2 100644 --- a/src/Public/Controllers/Admin/LineIpsController.php +++ b/src/Public/Controllers/Admin/LineIpsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/LineListController.php b/src/Public/Controllers/Admin/LineListController.php index 053bfbd2..3f7813ac 100644 --- a/src/Public/Controllers/Admin/LineListController.php +++ b/src/Public/Controllers/Admin/LineListController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/LineMassController.php b/src/Public/Controllers/Admin/LineMassController.php index 9fa48a90..08fecfc5 100644 --- a/src/Public/Controllers/Admin/LineMassController.php +++ b/src/Public/Controllers/Admin/LineMassController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/LiveConnectionsController.php b/src/Public/Controllers/Admin/LiveConnectionsController.php index 5cbc71bb..80d274ba 100644 --- a/src/Public/Controllers/Admin/LiveConnectionsController.php +++ b/src/Public/Controllers/Admin/LiveConnectionsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/LoginController.php b/src/Public/Controllers/Admin/LoginController.php index f1714445..413aeba4 100644 --- a/src/Public/Controllers/Admin/LoginController.php +++ b/src/Public/Controllers/Admin/LoginController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/LoginLogController.php b/src/Public/Controllers/Admin/LoginLogController.php index 76526638..59c56de6 100644 --- a/src/Public/Controllers/Admin/LoginLogController.php +++ b/src/Public/Controllers/Admin/LoginLogController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/MagController.php b/src/Public/Controllers/Admin/MagController.php index 0bb836ee..4a3f035c 100644 --- a/src/Public/Controllers/Admin/MagController.php +++ b/src/Public/Controllers/Admin/MagController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/MagEventController.php b/src/Public/Controllers/Admin/MagEventController.php index f8f3b13d..fd0d9c3c 100644 --- a/src/Public/Controllers/Admin/MagEventController.php +++ b/src/Public/Controllers/Admin/MagEventController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/MagMassController.php b/src/Public/Controllers/Admin/MagMassController.php index 68e4cdc5..5dd154d1 100644 --- a/src/Public/Controllers/Admin/MagMassController.php +++ b/src/Public/Controllers/Admin/MagMassController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/MagsController.php b/src/Public/Controllers/Admin/MagsController.php index b4a3487e..b1eb0176 100644 --- a/src/Public/Controllers/Admin/MagsController.php +++ b/src/Public/Controllers/Admin/MagsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/MagscanSettingsController.php b/src/Public/Controllers/Admin/MagscanSettingsController.php index 848a939b..f37a8747 100644 --- a/src/Public/Controllers/Admin/MagscanSettingsController.php +++ b/src/Public/Controllers/Admin/MagscanSettingsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/MassDeleteController.php b/src/Public/Controllers/Admin/MassDeleteController.php index 120e3c31..8d96d715 100644 --- a/src/Public/Controllers/Admin/MassDeleteController.php +++ b/src/Public/Controllers/Admin/MassDeleteController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ModulesController.php b/src/Public/Controllers/Admin/ModulesController.php index 7de2440a..fffbccf9 100644 --- a/src/Public/Controllers/Admin/ModulesController.php +++ b/src/Public/Controllers/Admin/ModulesController.php @@ -1,5 +1,7 @@ rollbackFromPlatform($name, $key); $flash = ['type' => 'success', 'message' => 'Module rolled back to previous version: ' . $name]; @@ -80,7 +82,7 @@ class ModulesController extends BaseAdminController { case 'renew_license': $key = (string) (SettingsManager::getAll()['platform_api_key'] ?? ''); if ($key === '') { - throw new RuntimeException('Set the platform API key before renewing the license.'); + throw new \RuntimeException('Set the platform API key before renewing the license.'); } if ($manager->renewModuleLicense($name, $key)) { $flash = ['type' => 'success', 'message' => 'License renewed for: ' . $name]; @@ -91,23 +93,23 @@ class ModulesController extends BaseAdminController { case 'upload_install': if (!isset($_FILES['module_zip']) || !is_array($_FILES['module_zip'])) { - throw new RuntimeException('Zip file was not uploaded.'); + throw new \RuntimeException('Zip file was not uploaded.'); } if ((int) ($_FILES['module_zip']['error'] ?? UPLOAD_ERR_NO_FILE) !== UPLOAD_ERR_OK) { - throw new RuntimeException('Upload failed.'); + throw new \RuntimeException('Upload failed.'); } $tmp = (string) ($_FILES['module_zip']['tmp_name'] ?? ''); if ($tmp === '' || !is_uploaded_file($tmp)) { - throw new RuntimeException('Uploaded file is invalid.'); + throw new \RuntimeException('Uploaded file is invalid.'); } $installedName = $manager->uploadAndInstall($tmp); $flash = ['type' => 'success', 'message' => 'Module uploaded and installed: ' . $installedName]; break; } - } catch (Throwable $e) { + } catch (\Throwable $e) { $flash = ['type' => 'danger', 'message' => $e->getMessage()]; } diff --git a/src/Public/Controllers/Admin/MovieController.php b/src/Public/Controllers/Admin/MovieController.php index 154518f8..114c43d4 100644 --- a/src/Public/Controllers/Admin/MovieController.php +++ b/src/Public/Controllers/Admin/MovieController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/MovieListController.php b/src/Public/Controllers/Admin/MovieListController.php index 7bbb9ec3..205f0901 100644 --- a/src/Public/Controllers/Admin/MovieListController.php +++ b/src/Public/Controllers/Admin/MovieListController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/MovieMassController.php b/src/Public/Controllers/Admin/MovieMassController.php index ccd70a93..02b4b06a 100644 --- a/src/Public/Controllers/Admin/MovieMassController.php +++ b/src/Public/Controllers/Admin/MovieMassController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/MysqlSyslogController.php b/src/Public/Controllers/Admin/MysqlSyslogController.php index 3aea96a9..fe0ef761 100644 --- a/src/Public/Controllers/Admin/MysqlSyslogController.php +++ b/src/Public/Controllers/Admin/MysqlSyslogController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/OndemandController.php b/src/Public/Controllers/Admin/OndemandController.php index 435c5620..b1d6e7ba 100644 --- a/src/Public/Controllers/Admin/OndemandController.php +++ b/src/Public/Controllers/Admin/OndemandController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/PackageController.php b/src/Public/Controllers/Admin/PackageController.php index 58fcfbff..1648977f 100644 --- a/src/Public/Controllers/Admin/PackageController.php +++ b/src/Public/Controllers/Admin/PackageController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/PackageEditController.php b/src/Public/Controllers/Admin/PackageEditController.php index 1d6ba420..c30e62dd 100644 --- a/src/Public/Controllers/Admin/PackageEditController.php +++ b/src/Public/Controllers/Admin/PackageEditController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/PanelLogController.php b/src/Public/Controllers/Admin/PanelLogController.php index 78350136..31354efd 100644 --- a/src/Public/Controllers/Admin/PanelLogController.php +++ b/src/Public/Controllers/Admin/PanelLogController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/PlayerEmbedController.php b/src/Public/Controllers/Admin/PlayerEmbedController.php index 0efd84b7..88229bf2 100644 --- a/src/Public/Controllers/Admin/PlayerEmbedController.php +++ b/src/Public/Controllers/Admin/PlayerEmbedController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/PlexAddController.php b/src/Public/Controllers/Admin/PlexAddController.php index 3b6f268b..b3326aae 100644 --- a/src/Public/Controllers/Admin/PlexAddController.php +++ b/src/Public/Controllers/Admin/PlexAddController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/PostController.php b/src/Public/Controllers/Admin/PostController.php index b3c1e380..f05f2238 100644 --- a/src/Public/Controllers/Admin/PostController.php +++ b/src/Public/Controllers/Admin/PostController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ProcessMonitorController.php b/src/Public/Controllers/Admin/ProcessMonitorController.php index 9cf62baf..c057e918 100644 --- a/src/Public/Controllers/Admin/ProcessMonitorController.php +++ b/src/Public/Controllers/Admin/ProcessMonitorController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ProfileController.php b/src/Public/Controllers/Admin/ProfileController.php index 92703f93..b616fa25 100644 --- a/src/Public/Controllers/Admin/ProfileController.php +++ b/src/Public/Controllers/Admin/ProfileController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ProfileEditController.php b/src/Public/Controllers/Admin/ProfileEditController.php index 34e5c39f..18be8d75 100644 --- a/src/Public/Controllers/Admin/ProfileEditController.php +++ b/src/Public/Controllers/Admin/ProfileEditController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ProviderController.php b/src/Public/Controllers/Admin/ProviderController.php index f127a01d..66ff750d 100644 --- a/src/Public/Controllers/Admin/ProviderController.php +++ b/src/Public/Controllers/Admin/ProviderController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ProviderEditController.php b/src/Public/Controllers/Admin/ProviderEditController.php index ccbebc7c..21237b34 100644 --- a/src/Public/Controllers/Admin/ProviderEditController.php +++ b/src/Public/Controllers/Admin/ProviderEditController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ProxiesController.php b/src/Public/Controllers/Admin/ProxiesController.php index 5af35881..a896963e 100644 --- a/src/Public/Controllers/Admin/ProxiesController.php +++ b/src/Public/Controllers/Admin/ProxiesController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ProxyController.php b/src/Public/Controllers/Admin/ProxyController.php index 669a3a59..ed97b292 100644 --- a/src/Public/Controllers/Admin/ProxyController.php +++ b/src/Public/Controllers/Admin/ProxyController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/QueueController.php b/src/Public/Controllers/Admin/QueueController.php index f37a7447..7abcf69a 100644 --- a/src/Public/Controllers/Admin/QueueController.php +++ b/src/Public/Controllers/Admin/QueueController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/QuickToolsController.php b/src/Public/Controllers/Admin/QuickToolsController.php index e82b0c16..e3590783 100644 --- a/src/Public/Controllers/Admin/QuickToolsController.php +++ b/src/Public/Controllers/Admin/QuickToolsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/RadioController.php b/src/Public/Controllers/Admin/RadioController.php index ad5862f0..fe40b76f 100644 --- a/src/Public/Controllers/Admin/RadioController.php +++ b/src/Public/Controllers/Admin/RadioController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/RadioListController.php b/src/Public/Controllers/Admin/RadioListController.php index a7d10cce..d0682e27 100644 --- a/src/Public/Controllers/Admin/RadioListController.php +++ b/src/Public/Controllers/Admin/RadioListController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/RadioMassController.php b/src/Public/Controllers/Admin/RadioMassController.php index dfc8ea4a..1970d225 100644 --- a/src/Public/Controllers/Admin/RadioMassController.php +++ b/src/Public/Controllers/Admin/RadioMassController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/RecordController.php b/src/Public/Controllers/Admin/RecordController.php index 0fb4ceb6..4559858a 100644 --- a/src/Public/Controllers/Admin/RecordController.php +++ b/src/Public/Controllers/Admin/RecordController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/RestreamLogController.php b/src/Public/Controllers/Admin/RestreamLogController.php index 2e28fcf1..dd29ac20 100644 --- a/src/Public/Controllers/Admin/RestreamLogController.php +++ b/src/Public/Controllers/Admin/RestreamLogController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ReviewController.php b/src/Public/Controllers/Admin/ReviewController.php index 2368fbee..27bdf35c 100644 --- a/src/Public/Controllers/Admin/ReviewController.php +++ b/src/Public/Controllers/Admin/ReviewController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/RtmpIpController.php b/src/Public/Controllers/Admin/RtmpIpController.php index a690bccb..c839e3d7 100644 --- a/src/Public/Controllers/Admin/RtmpIpController.php +++ b/src/Public/Controllers/Admin/RtmpIpController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/RtmpIpEditController.php b/src/Public/Controllers/Admin/RtmpIpEditController.php index fb73470b..ef5ade5f 100644 --- a/src/Public/Controllers/Admin/RtmpIpEditController.php +++ b/src/Public/Controllers/Admin/RtmpIpEditController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/RtmpMonitorController.php b/src/Public/Controllers/Admin/RtmpMonitorController.php index a2820835..c9d613fe 100644 --- a/src/Public/Controllers/Admin/RtmpMonitorController.php +++ b/src/Public/Controllers/Admin/RtmpMonitorController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/SerieController.php b/src/Public/Controllers/Admin/SerieController.php index ebc790df..8bc39cba 100644 --- a/src/Public/Controllers/Admin/SerieController.php +++ b/src/Public/Controllers/Admin/SerieController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/SeriesListController.php b/src/Public/Controllers/Admin/SeriesListController.php index 803b4c6f..6686fb17 100644 --- a/src/Public/Controllers/Admin/SeriesListController.php +++ b/src/Public/Controllers/Admin/SeriesListController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/SeriesMassController.php b/src/Public/Controllers/Admin/SeriesMassController.php index a7a12104..380b1c21 100644 --- a/src/Public/Controllers/Admin/SeriesMassController.php +++ b/src/Public/Controllers/Admin/SeriesMassController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ServerController.php b/src/Public/Controllers/Admin/ServerController.php index a1336abe..088dcc5c 100644 --- a/src/Public/Controllers/Admin/ServerController.php +++ b/src/Public/Controllers/Admin/ServerController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ServerInstallController.php b/src/Public/Controllers/Admin/ServerInstallController.php index e4f414b4..e244240d 100644 --- a/src/Public/Controllers/Admin/ServerInstallController.php +++ b/src/Public/Controllers/Admin/ServerInstallController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ServerListController.php b/src/Public/Controllers/Admin/ServerListController.php index 4d7c4816..4705635e 100644 --- a/src/Public/Controllers/Admin/ServerListController.php +++ b/src/Public/Controllers/Admin/ServerListController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ServerOrderController.php b/src/Public/Controllers/Admin/ServerOrderController.php index 95b09438..7d2e403b 100644 --- a/src/Public/Controllers/Admin/ServerOrderController.php +++ b/src/Public/Controllers/Admin/ServerOrderController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/ServerViewController.php b/src/Public/Controllers/Admin/ServerViewController.php index 9d9b8b42..3ffdadc8 100644 --- a/src/Public/Controllers/Admin/ServerViewController.php +++ b/src/Public/Controllers/Admin/ServerViewController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/SessionController.php b/src/Public/Controllers/Admin/SessionController.php index a019fb76..365ed9c6 100644 --- a/src/Public/Controllers/Admin/SessionController.php +++ b/src/Public/Controllers/Admin/SessionController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/SettingsPlexController.php b/src/Public/Controllers/Admin/SettingsPlexController.php index eb858036..90bfbe34 100644 --- a/src/Public/Controllers/Admin/SettingsPlexController.php +++ b/src/Public/Controllers/Admin/SettingsPlexController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/SettingsWatchController.php b/src/Public/Controllers/Admin/SettingsWatchController.php index c3a9207a..3a29b42f 100644 --- a/src/Public/Controllers/Admin/SettingsWatchController.php +++ b/src/Public/Controllers/Admin/SettingsWatchController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/SetupController.php b/src/Public/Controllers/Admin/SetupController.php index 360b8cfb..c8395f45 100644 --- a/src/Public/Controllers/Admin/SetupController.php +++ b/src/Public/Controllers/Admin/SetupController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/StreamCategoriesController.php b/src/Public/Controllers/Admin/StreamCategoriesController.php index c382b2db..65e257b2 100644 --- a/src/Public/Controllers/Admin/StreamCategoriesController.php +++ b/src/Public/Controllers/Admin/StreamCategoriesController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/StreamCategoryController.php b/src/Public/Controllers/Admin/StreamCategoryController.php index 8ef174a7..9f4951e6 100644 --- a/src/Public/Controllers/Admin/StreamCategoryController.php +++ b/src/Public/Controllers/Admin/StreamCategoryController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/StreamController.php b/src/Public/Controllers/Admin/StreamController.php index 917ded18..53540b31 100644 --- a/src/Public/Controllers/Admin/StreamController.php +++ b/src/Public/Controllers/Admin/StreamController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/StreamErrorsController.php b/src/Public/Controllers/Admin/StreamErrorsController.php index 15e73c84..de39e046 100644 --- a/src/Public/Controllers/Admin/StreamErrorsController.php +++ b/src/Public/Controllers/Admin/StreamErrorsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/StreamListController.php b/src/Public/Controllers/Admin/StreamListController.php index b82e4fd4..3f21cb2b 100644 --- a/src/Public/Controllers/Admin/StreamListController.php +++ b/src/Public/Controllers/Admin/StreamListController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/StreamMassController.php b/src/Public/Controllers/Admin/StreamMassController.php index 18f9d6b0..1ddea80d 100644 --- a/src/Public/Controllers/Admin/StreamMassController.php +++ b/src/Public/Controllers/Admin/StreamMassController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/StreamRankController.php b/src/Public/Controllers/Admin/StreamRankController.php index 684f0391..5642b8d5 100644 --- a/src/Public/Controllers/Admin/StreamRankController.php +++ b/src/Public/Controllers/Admin/StreamRankController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/StreamReviewController.php b/src/Public/Controllers/Admin/StreamReviewController.php index dc55a491..b93c85d1 100644 --- a/src/Public/Controllers/Admin/StreamReviewController.php +++ b/src/Public/Controllers/Admin/StreamReviewController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/StreamToolsController.php b/src/Public/Controllers/Admin/StreamToolsController.php index 41635daa..582eee1e 100644 --- a/src/Public/Controllers/Admin/StreamToolsController.php +++ b/src/Public/Controllers/Admin/StreamToolsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/StreamViewController.php b/src/Public/Controllers/Admin/StreamViewController.php index a62cd9b6..6e3dcdf1 100644 --- a/src/Public/Controllers/Admin/StreamViewController.php +++ b/src/Public/Controllers/Admin/StreamViewController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/TableController.php b/src/Public/Controllers/Admin/TableController.php index 8577590a..3223d064 100644 --- a/src/Public/Controllers/Admin/TableController.php +++ b/src/Public/Controllers/Admin/TableController.php @@ -1,5 +1,7 @@ get_row()["id"]; $rIsAPI = true; require_once MAIN_HOME . "bootstrap.php"; - XC_Bootstrap::boot(XC_Bootstrap::CONTEXT_ADMIN); + \XC_Bootstrap::boot(\XC_Bootstrap::CONTEXT_ADMIN); $rUserInfo = UserRepository::getRegisteredUserById($rUserID); $rPermissions = AuthRepository::getPermissions($rUserInfo["member_group_id"]); $rPermissions["advanced"] = json_decode($rPermissions["allowed_pages"], true); @@ -66,7 +68,7 @@ class TableController extends BaseAdminController { } elseif ($_SERVER["REMOTE_ADDR"] == "127.0.0.1" && isset(RequestManager::getAll()["api_user_id"])) { $rIsAPI = true; require_once MAIN_HOME . "bootstrap.php"; - XC_Bootstrap::boot(XC_Bootstrap::CONTEXT_ADMIN); + \XC_Bootstrap::boot(\XC_Bootstrap::CONTEXT_ADMIN); $rUserInfo = UserRepository::getRegisteredUserById(RequestManager::getAll()["api_user_id"]); $rPermissions = AuthRepository::getPermissions($rUserInfo["member_group_id"]); $rPermissions["advanced"] = json_decode($rPermissions["allowed_pages"], true); diff --git a/src/Public/Controllers/Admin/TheftDetectionController.php b/src/Public/Controllers/Admin/TheftDetectionController.php index 54c0f1fa..6cef843f 100644 --- a/src/Public/Controllers/Admin/TheftDetectionController.php +++ b/src/Public/Controllers/Admin/TheftDetectionController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/TicketController.php b/src/Public/Controllers/Admin/TicketController.php index dbaf68cb..0dba0595 100644 --- a/src/Public/Controllers/Admin/TicketController.php +++ b/src/Public/Controllers/Admin/TicketController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/TicketViewController.php b/src/Public/Controllers/Admin/TicketViewController.php index 2729dce8..309268a0 100644 --- a/src/Public/Controllers/Admin/TicketViewController.php +++ b/src/Public/Controllers/Admin/TicketViewController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/TicketsController.php b/src/Public/Controllers/Admin/TicketsController.php index 3136579b..12fd8d9d 100644 --- a/src/Public/Controllers/Admin/TicketsController.php +++ b/src/Public/Controllers/Admin/TicketsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/UserController.php b/src/Public/Controllers/Admin/UserController.php index 0c0e8ec1..93e645df 100644 --- a/src/Public/Controllers/Admin/UserController.php +++ b/src/Public/Controllers/Admin/UserController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/UserLogsController.php b/src/Public/Controllers/Admin/UserLogsController.php index 42ae153c..95edf34a 100644 --- a/src/Public/Controllers/Admin/UserLogsController.php +++ b/src/Public/Controllers/Admin/UserLogsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/UserMassController.php b/src/Public/Controllers/Admin/UserMassController.php index f680a759..c4cff170 100644 --- a/src/Public/Controllers/Admin/UserMassController.php +++ b/src/Public/Controllers/Admin/UserMassController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/UseragentController.php b/src/Public/Controllers/Admin/UseragentController.php index 1ff2c2b4..5f12b42a 100644 --- a/src/Public/Controllers/Admin/UseragentController.php +++ b/src/Public/Controllers/Admin/UseragentController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/UseragentsController.php b/src/Public/Controllers/Admin/UseragentsController.php index 96ec4405..31be9436 100644 --- a/src/Public/Controllers/Admin/UseragentsController.php +++ b/src/Public/Controllers/Admin/UseragentsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/UsersController.php b/src/Public/Controllers/Admin/UsersController.php index c031a878..58410a32 100644 --- a/src/Public/Controllers/Admin/UsersController.php +++ b/src/Public/Controllers/Admin/UsersController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/WatchAddController.php b/src/Public/Controllers/Admin/WatchAddController.php index b70210f3..c1948879 100644 --- a/src/Public/Controllers/Admin/WatchAddController.php +++ b/src/Public/Controllers/Admin/WatchAddController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Admin/WatchOutputController.php b/src/Public/Controllers/Admin/WatchOutputController.php index c9121e44..bcc42624 100644 --- a/src/Public/Controllers/Admin/WatchOutputController.php +++ b/src/Public/Controllers/Admin/WatchOutputController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Api/AdminAPIWrapper.php b/src/Public/Controllers/Api/AdminAPIWrapper.php new file mode 100644 index 00000000..793a7c20 --- /dev/null +++ b/src/Public/Controllers/Api/AdminAPIWrapper.php @@ -0,0 +1,1482 @@ +query('SELECT * FROM `users` LEFT JOIN `users_groups` ON `users_groups`.`group_id` = `users`.`member_group_id` WHERE `api_key` = ? AND LENGTH(`api_key`) > 0 AND `is_admin` = 1 AND `status` = 1;', self::$rKey); + if (0 >= self::$db->num_rows()) { + return false; + } + $rUserID = self::$db->get_row()['id']; + $GLOBALS['rAdminUserInfo'] = UserRepository::getRegisteredUserById($rUserID); + unset($GLOBALS['rAdminUserInfo']['password']); + $rUserInfo = $GLOBALS['rAdminUserInfo']; + $rPermissions = AuthRepository::getPermissions($rUserInfo['member_group_id']); + $rPermissions['advanced'] = array(); + if (0 >= strlen($rUserInfo['timezone'])) { + } else { + date_default_timezone_set($rUserInfo['timezone']); + } + return true; + } + public static function getUserInfo() { + global $rUserInfo; + global $rPermissions; + return array('status' => 'STATUS_SUCCESS', 'data' => $rUserInfo, 'permissions' => $rPermissions); + } + public static function getLine($rID) { + if (!($rLine = UserRepository::getLineById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rLine); + } + public static function createLine($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(LineService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getLine($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editLine($rID, $rData) { + if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + if (!isset($rData['isp_clear'])) { + } else { + $rData['isp_clear'] = ''; + } + $rReturn = parseerror(LineService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getLine($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteLine($rID) { + if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { + } else { + if (!LineService::deleteLineById($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function disableLine($rID) { + if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function enableLine($rID) { + if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function banLine($rID) { + if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `admin_enabled` = 0 WHERE `id` = ?;', $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function unbanLine($rID) { + if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `admin_enabled` = 1 WHERE `id` = ?;', $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function getUser($rID) { + if (!($rUser = UserRepository::getRegisteredUserById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rUser); + } + public static function createUser($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(UserService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getUser($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editUser($rID, $rData) { + if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(UserService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getUser($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteUser($rID) { + if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { + } else { + if (!UserService::deleteRegisteredUser($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function disableUser($rID) { + if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `users` SET `status` = 0 WHERE `id` = ?;', $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function enableUser($rID) { + if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `users` SET `status` = 1 WHERE `id` = ?;', $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function getMAG($rID) { + if (!($rDevice = MagService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rDevice); + } + public static function createMAG($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(MagService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editMAG($rID, $rData) { + if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + if (!isset($rData['isp_clear'])) { + } else { + $rData['isp_clear'] = ''; + } + $rReturn = parseerror(MagService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteMAG($rID) { + if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { + } else { + if (!MagService::deleteDevice($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function disableMAG($rID) { + if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function enableMAG($rID) { + if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function banMAG($rID) { + if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `admin_enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function unbanMAG($rID) { + if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `admin_enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function convertMAG($rID) { + if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + MagService::deleteDevice($rID, false, false, true); + return array('status' => 'STATUS_SUCCESS', 'data' => self::getLine($rDevice['user_id'])); + } + public static function getEnigma($rID) { + if (!($rDevice = EnigmaService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rDevice); + } + public static function createEnigma($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(EnigmaService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editEnigma($rID, $rData) { + if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + if (!isset($rData['isp_clear'])) { + } else { + $rData['isp_clear'] = ''; + } + $rReturn = parseerror(EnigmaService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteEnigma($rID) { + if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { + } else { + if (!EnigmaService::deleteDevice($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function disableEnigma($rID) { + if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function enableEnigma($rID) { + if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function banEnigma($rID) { + if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `admin_enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function unbanEnigma($rID) { + if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `admin_enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function convertEnigma($rID) { + if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + EnigmaService::deleteDevice($rID, false, false, true); + return array('status' => 'STATUS_SUCCESS', 'data' => self::getLine($rDevice['user_id'])); + } + public static function getBouquets() { + return array('status' => 'STATUS_SUCCESS', 'data' => BouquetService::getAllSimple()); + } + public static function getBouquet($rID) { + if (!($rBouquet = BouquetService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rBouquet); + } + public static function createBouquet($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(BouquetService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getBouquet($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editBouquet($rID, $rData) { + if (!(($rBouquet = self::getBouquet($rID)) && isset($rBouquet['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(BouquetService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getBouquet($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteBouquet($rID) { + if (($rBouquet = self::getBouquet($rID)) && isset($rBouquet['data'])) { + if (BouquetService::deleteById($rID)) { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getAccessCodes() { + return array('status' => 'STATUS_SUCCESS', 'data' => AuthRepository::getAllCodes()); + } + public static function getAccessCode($rID) { + if (!($rCode = AuthRepository::getCodeById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rCode); + } + public static function createAccessCode($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(AuthService::processCode($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getAccessCode($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editAccessCode($rID, $rData) { + if (!(($rCode = self::getAccessCode($rID)) && isset($rCode['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(AuthService::processCode($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getAccessCode($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteAccessCode($rID) { + if (!(($rCode = self::getAccessCode($rID)) && isset($rCode['data']))) { + } else { + if (!AuthRepository::deleteCode($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getHMACs() { + return array('status' => 'STATUS_SUCCESS', 'data' => AuthRepository::getAllHMAC()); + } + public static function getHMAC($rID) { + if (!($rToken = AuthRepository::getHMACById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rToken); + } + public static function createHMAC($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(AuthService::processHMAC($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getHMAC($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editHMAC($rID, $rData) { + if (!(($rToken = self::getHMAC($rID)) && isset($rToken['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(AuthService::processHMAC($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getHMAC($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteHMAC($rID) { + if (($rToken = self::getHMAC($rID)) && isset($rToken['data'])) { + if (AuthRepository::deleteHMAC($rID)) { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getEPGs() { + return array('status' => 'STATUS_SUCCESS', 'data' => EpgService::getAll()); + } + public static function getEPG($rID) { + if (!($rEPG = EpgService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rEPG); + } + public static function createEPG($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(EpgService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getEPG($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editEPG($rID, $rData) { + if (!(($rEPG = self::getEPG($rID)) && isset($rEPG['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(EpgService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getEPG($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteEPG($rID) { + if (!(($rEPG = self::getEPG($rID)) && isset($rEPG['data']))) { + } else { + if (!EpgService::deleteEpgById($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function reloadEPG($rID = null) { + if ($rID) { + shell_exec(PHP_BIN . ' ' . MAIN_HOME . 'console.php cron:epg "' . intval($rID) . '" > /dev/null 2>/dev/null &'); + } else { + shell_exec(PHP_BIN . ' ' . MAIN_HOME . 'console.php cron:epg > /dev/null 2>/dev/null &'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function getProviders() { + return array('status' => 'STATUS_SUCCESS', 'data' => ProviderService::getAll()); + } + public static function getProvider($rID) { + if (!($rProvider = ProviderService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rProvider); + } + public static function createProvider($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(ProviderService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getProvider($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editProvider($rID, $rData) { + if (!(($rProvider = self::getProvider($rID)) && isset($rProvider['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(ProviderService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getProvider($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteProvider($rID) { + if (!(($rProvider = self::getProvider($rID)) && isset($rProvider['data']))) { + } else { + if (!ProviderService::deleteById($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function reloadProvider($rID = null) { + if ($rID) { + shell_exec(PHP_BIN . ' ' . MAIN_HOME . 'console.php cron:providers "' . intval($rID) . '" > /dev/null 2>/dev/null &'); + } else { + shell_exec(PHP_BIN . ' ' . MAIN_HOME . 'console.php cron:providers > /dev/null 2>/dev/null &'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function getGroups() { + return array('status' => 'STATUS_SUCCESS', 'data' => GroupService::getAll()); + } + public static function getGroup($rID) { + if (!($rGroup = GroupService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rGroup); + } + public static function createGroup($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(GroupService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getGroup($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editGroup($rID, $rData) { + if (!(($rGroup = self::getGroup($rID)) && isset($rGroup['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(GroupService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getGroup($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteGroup($rID) { + if (!(($rGroup = self::getGroup($rID)) && isset($rGroup['data']))) { + } else { + if (!GroupService::deleteById($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getPackages() { + return array('status' => 'STATUS_SUCCESS', 'data' => PackageService::getAll()); + } + public static function getPackage($rID) { + if (!($rPackage = PackageService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rPackage); + } + public static function createPackage($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(PackageService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getPackage($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editPackage($rID, $rData) { + if (!(($rPackage = self::getPackage($rID)) && isset($rPackage['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(PackageService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getPackage($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deletePackage($rID) { + if (!(($rPackage = self::getPackage($rID)) && isset($rPackage['data']))) { + } else { + if (!PackageService::deleteById($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getTranscodeProfiles() { + return array('status' => 'STATUS_SUCCESS', 'data' => StreamConfigRepository::getTranscodeProfiles()); + } + public static function getTranscodeProfile($rID) { + if (!($rProfile = StreamConfigRepository::getTranscodeProfile($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rProfile); + } + public static function createTranscodeProfile($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(ProfileService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getTranscodeProfile($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editTranscodeProfile($rID, $rData) { + if (!(($rProfile = self::getTranscodeProfile($rID)) && isset($rProfile['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(ProfileService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getTranscodeProfile($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteTranscodeProfile($rID) { + if (!(($rProfile = self::getTranscodeProfile($rID)) && isset($rProfile['data']))) { + } else { + if (!StreamConfigRepository::deleteProfile($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getRTMPIPs() { + return array('status' => 'STATUS_SUCCESS', 'data' => BlocklistService::getRTMPIPsSimple()); + } + public static function getRTMPIP($rID) { + if (!($rIP = BlocklistService::getRTMPIPById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rIP); + } + public static function addRTMPIP($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(BlocklistService::processRTMPIP($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getRTMPIP($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editRTMPIP($rID, $rData) { + if (!(($rIP = self::getRTMPIP($rID)) && isset($rIP['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(BlocklistService::processRTMPIP($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getRTMPIP($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteRTMPIP($rID) { + if (!(($rIP = self::getRTMPIP($rID)) && isset($rIP['data']))) { + } else { + if (!BlocklistService::deleteRTMPIP($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getCategories() { + return array('status' => 'STATUS_SUCCESS', 'data' => CategoryService::getAllByType()); + } + public static function getCategory($rID) { + if (!($rCategory = CategoryService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rCategory); + } + public static function createCategory($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(CategoryService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getCategory($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editCategory($rID, $rData) { + if (!(($rCategory = self::getCategory($rID)) && isset($rCategory['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(CategoryService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getCategory($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteCategory($rID) { + if (!(($rCategory = self::getCategory($rID)) && isset($rCategory['data']))) { + } else { + if (!CategoryService::deleteById($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getWatchFolders() { + return array('status' => 'STATUS_SUCCESS', 'data' => WatchService::getWatchFolders()); + } + public static function getWatchFolder($rID) { + if (!($rFolder = StreamRepository::getWatchFolder($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rFolder); + } + public static function createWatchFolder($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(WatchService::processWatchFolder($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getWatchFolder($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editWatchFolder($rID, $rData) { + if (!(($rFolder = self::getWatchFolder($rID)) && isset($rFolder['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(WatchService::processWatchFolder($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getWatchFolder($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteWatchFolder($rID) { + if (!(($rFolder = self::getWatchFolder($rID)) && isset($rFolder['data']))) { + } else { + if (!StreamRepository::deleteWatchFolder($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function reloadWatchFolder($rServerID, $rID) { + WatchService::forceWatch($rServerID, $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function getBlockedISPs() { + return array('status' => 'STATUS_SUCCESS', 'data' => BlocklistService::getAllISPs()); + } + public static function addBlockedISP($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(BlocklistService::processISP($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = $rReturn['data']['insert_id']; + } + return $rReturn; + } + public static function deleteBlockedISP($rID) { + if (!BlocklistService::deleteBlockedISP($rID)) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function getBlockedUAs() { + return array('status' => 'STATUS_SUCCESS', 'data' => BlocklistService::getAllUserAgents()); + } + public static function addBlockedUA($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(BlocklistService::processUA($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = $rReturn['data']['insert_id']; + } + return $rReturn; + } + public static function deleteBlockedUA($rID) { + if (!BlocklistService::deleteBlockedUA($rID)) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function getBlockedIPs() { + return array('status' => 'STATUS_SUCCESS', 'data' => BlocklistService::getBlockedIPsSimple()); + } + public static function addBlockedIP($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(BlocklistService::blockIP($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = $rReturn['data']['insert_id']; + } + return $rReturn; + } + public static function deleteBlockedIP($rID) { + if (!BlocklistService::deleteBlockedIP($rID)) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function flushBlockedIPs() { + BlocklistService::flushIPs(); + return array('status' => 'STATUS_SUCCESS'); + } + public static function getStream($rID) { + if (!(($rStream = StreamRepository::getById($rID)) && $rStream['type'] == 1)) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rStream); + } + public static function createStream($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(StreamService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getStream($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editStream($rID, $rData) { + if (!(($rStream = self::getStream($rID)) && isset($rStream['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(StreamService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getStream($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteStream($rID, $rServerID = -1) { + if (!(($rStream = self::getStream($rID)) && isset($rStream['data']))) { + } else { + if (!StreamRepository::deleteStream($rID, $rServerID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function startStream($rID, $rServerID = -1) { + if ($rServerID == -1) { + $rData = json_decode(ApiClient::request(array('action' => 'stream', 'sub' => 'start', 'stream_ids' => array($rID), 'servers' => array_keys(ServerRepository::getAll()))), true); + } else { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'stream', 'stream_ids' => array($rID), 'function' => 'start')), true); + } + if (!$rData['result']) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function stopStream($rID, $rServerID = -1) { + if ($rServerID == -1) { + $rData = json_decode(ApiClient::request(array('action' => 'stream', 'sub' => 'stop', 'stream_ids' => array($rID), 'servers' => array_keys(ServerRepository::getAll()))), true); + } else { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'stream', 'stream_ids' => array($rID), 'function' => 'stop')), true); + } + if (!$rData['result']) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function getChannel($rID) { + if (!(($rStream = StreamRepository::getById($rID)) && $rStream['type'] == 3)) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rStream); + } + public static function createChannel($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(ChannelService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getChannel($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editChannel($rID, $rData) { + if (!(($rStream = self::getChannel($rID)) && isset($rStream['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(ChannelService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getChannel($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteChannel($rID, $rServerID = -1) { + if (!(($rStream = self::getChannel($rID)) && isset($rStream['data']))) { + } else { + if (!StreamRepository::deleteStream($rID, $rServerID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getStation($rID) { + if (!(($rStream = StreamRepository::getById($rID)) && $rStream['type'] == 4)) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rStream); + } + public static function createStation($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(RadioService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getStation($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editStation($rID, $rData) { + if (!(($rStream = self::getStation($rID)) && isset($rStream['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(RadioService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getStation($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteStation($rID, $rServerID = -1) { + if (!(($rStream = self::getStation($rID)) && isset($rStream['data']))) { + } else { + if (!StreamRepository::deleteStream($rID, $rServerID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getMovie($rID) { + if (!(($rStream = StreamRepository::getById($rID)) && $rStream['type'] == 2)) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rStream); + } + public static function createMovie($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(MovieService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getMovie($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editMovie($rID, $rData) { + if (!(($rStream = self::getMovie($rID)) && isset($rStream['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(MovieService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getMovie($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteMovie($rID, $rServerID = -1) { + if (!(($rStream = self::getMovie($rID)) && isset($rStream['data']))) { + } else { + if (!StreamRepository::deleteStream($rID, $rServerID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function startMovie($rID, $rServerID = -1) { + if ($rServerID == -1) { + $rData = json_decode(ApiClient::request(array('action' => 'vod', 'sub' => 'start', 'stream_ids' => array($rID), 'servers' => array_keys(ServerRepository::getAll()))), true); + } else { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'vod', 'stream_ids' => array($rID), 'function' => 'start')), true); + } + if (!$rData['result']) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function stopMovie($rID, $rServerID = -1) { + if ($rServerID == -1) { + $rData = json_decode(ApiClient::request(array('action' => 'vod', 'sub' => 'stop', 'stream_ids' => array($rID), 'servers' => array_keys(ServerRepository::getAll()))), true); + } else { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'vod', 'stream_ids' => array($rID), 'function' => 'stop')), true); + } + if (!$rData['result']) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function getEpisode($rID) { + if (!(($rStream = StreamRepository::getById($rID)) && $rStream['type'] == 5)) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rStream); + } + public static function createEpisode($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(EpisodeService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getEpisode($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editEpisode($rID, $rData) { + if (!(($rStream = self::getEpisode($rID)) && isset($rStream['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(EpisodeService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getEpisode($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteEpisode($rID, $rServerID = -1) { + if (!(($rStream = self::getEpisode($rID)) && isset($rStream['data']))) { + } else { + if (!StreamRepository::deleteStream($rID, $rServerID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getSeries($rID) { + if (!($rSeries = SeriesService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rSeries); + } + public static function createSeries($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(SeriesService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getSeries($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editSeries($rID, $rData) { + if (!(($rStream = self::getSeries($rID)) && isset($rStream['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(SeriesService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getSeries($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteSeries($rID) { + if (!(($rStream = self::getSeries($rID)) && isset($rStream['data']))) { + } else { + if (!SeriesService::deleteSeriesById($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getServers() { + global $rPermissions; + return array('status' => 'STATUS_SUCCESS', 'data' => ServerRepository::getStreamingSimple($rPermissions)); + } + public static function getServer($rID) { + if (!($rServer = ServerRepository::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rServer); + } + public static function installServer($rData) { + global $rPermissions; + if (!(empty($rData['type']) || empty($rData['ssh_port']) || empty($rData['root_username']) || empty($rData['root_password']))) { + if (!($rData['type'] == 1 && (empty($rData['type']) || empty($rData['ssh_port'])))) { + $rReturn = parseerror(ServerService::install($rData, ServerRepository::getStreamingSimple($rPermissions, 'all'), ServerRepository::getProxySimple($rPermissions))); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getServer($rReturn['data']['insert_id']); + } + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_INVALID_INPUT'); + } + return array('status' => 'STATUS_INVALID_INPUT'); + } + public static function editServer($rID, $rData) { + if (!(($rServer = self::getServer($rID)) && isset($rServer['data']))) { + return array('status' => 'STATUS_FAILURE'); + } else { + $rData['edit'] = $rID; + $rReturn = parseerror(ServerService::process($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getServer($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + } + public static function editProxy($rID, $rData) { + if (!(($rServer = self::getServer($rID)) && isset($rServer['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(ServerService::processProxy($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getServer($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteServer($rID) { + if (!(($rServer = self::getServer($rID)) && isset($rServer['data']))) { + } else { + if (!ServerRepository::deleteById($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function getSettings() { + return array('status' => 'STATUS_SUCCESS', 'data' => SettingsManager::getAll()); + } + public static function editSettings($rData) { + $rReturn = parseerror(SettingsService::edit($rData)); + $rReturn['data'] = self::getSettings()['data']; + return $rReturn; + } + public static function getStats($rServerID) { + global $db; + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'stats')), true); + if (!$rData) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['requests_per_second'] = ServerRepository::getAll()[$rServerID]['requests_per_second']; + $db->query('SELECT COUNT(*) AS `count` FROM `lines_live` WHERE `server_id` = ? AND `hls_end` = 0;', $rServerID); + if (0 >= $db->num_rows()) { + } else { + $rData['open_connections'] = $db->get_row()['count']; + } + $db->query('SELECT COUNT(*) AS `count` FROM `lines_live` WHERE `hls_end` = 0;'); + if (0 >= $db->num_rows()) { + } else { + $rData['total_connections'] = $db->get_row()['count']; + } + $db->query('SELECT `activity_id` FROM `lines_live` WHERE `server_id` = ? AND `hls_end` = 0 GROUP BY `user_id`;', $rServerID); + if (0 >= $db->num_rows()) { + } else { + $rData['online_users'] = $db->num_rows(); + } + $db->query('SELECT `activity_id` FROM `lines_live` WHERE `hls_end` = 0 GROUP BY `user_id`;'); + if (0 >= $db->num_rows()) { + } else { + $rData['total_users'] = $db->num_rows(); + } + $db->query('SELECT COUNT(*) AS `count` FROM `streams_servers` LEFT JOIN `streams` ON `streams`.`id` = `streams_servers`.`stream_id` WHERE `server_id` = ? AND `stream_status` <> 2 AND `type` = 1;', $rServerID); + if (0 >= $db->num_rows()) { + } else { + $rData['total_streams'] = $db->get_row()['count']; + } + $db->query('SELECT COUNT(*) AS `count` FROM `streams_servers` LEFT JOIN `streams` ON `streams`.`id` = `streams_servers`.`stream_id` WHERE `server_id` = ? AND `pid` > 0 AND `type` = 1;', $rServerID); + if (0 >= $db->num_rows()) { + } else { + $rData['total_running_streams'] = $db->get_row()['count']; + } + $db->query('SELECT COUNT(*) AS `count` FROM `streams_servers` LEFT JOIN `streams` ON `streams`.`id` = `streams_servers`.`stream_id` WHERE `server_id` = ? AND `type` = 1 AND (`streams`.`direct_source` = 0 AND (`streams_servers`.`monitor_pid` IS NOT NULL AND `streams_servers`.`monitor_pid` > 0) AND (`streams_servers`.`pid` IS NULL OR `streams_servers`.`pid` <= 0) AND `streams_servers`.`stream_status` <> 0);', $rServerID); + if (0 >= $db->num_rows()) { + } else { + $rData['offline_streams'] = $db->get_row()['count']; + } + $rData['network_guaranteed_speed'] = ServerRepository::getAll()[$rServerID]['network_guaranteed_speed']; + return array('status' => 'STATUS_SUCCESS', 'data' => $rData); + } + public static function getFPMStatus($rServerID) { + $rData = ApiClient::systemRequest($rServerID, array('action' => 'fpm_status')); + if (!$rData) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rData); + } + public static function getRTMPStats($rServerID) { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'rtmp_stats')), true); + if (!$rData) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rData); + } + public static function getFreeSpace($rServerID) { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'get_free_space')), true); + if (!$rData) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rData); + } + public static function getPIDs($rServerID) { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'get_pids')), true); + if (!$rData) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rData); + } + public static function getCertificateInfo($rServerID) { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'get_certificate_info')), true); + if (!$rData) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rData); + } + public static function reloadNGINX($rServerID) { + ApiClient::systemRequest($rServerID, array('action' => 'reload_nginx')); + return array('status' => 'STATUS_SUCCESS'); + } + public static function clearTemp($rServerID) { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'free_temp')), true); + if (!$rData['result']) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function clearStreams($rServerID) { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'free_streams')), true); + if (!$rData['result']) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function getDirectory($rServerID, $rDirectory) { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'scandir', 'dir' => $rDirectory)), true); + if (!$rData) { + return array('status' => 'STATUS_FAILURE'); + } + unset($rData['result']); + if (!isset($rData['result']) || $rData['result']) { + return array('status' => 'STATUS_SUCCESS', 'data' => $rData); + } + return array('status' => 'STATUS_FAILURE'); + } + public static function killPID($rServerID, $rPID) { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'kill_pid', 'pid' => intval($rPID))), true); + if (!$rData['result']) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function killConnection($rServerID, $rActivityID) { + $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'closeConnection', 'activity_id' => intval($rActivityID))), true); + if (!$rData['result']) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS'); + } + public static function adjustCredits($rID, $rCredits, $rReason = '') { + global $db; + global $rUserInfo; + if (!(is_numeric($rCredits) && ($rUser = self::getUser($rID)) && isset($rUser['data']))) { + } else { + $rCredits = intval($rUser['data']['credits']) + intval($rCredits); + if (0 > $rCredits) { + } else { + $db->query('UPDATE `users` SET `credits` = ? WHERE `id` = ?;', $rCredits, $rID); + $db->query('INSERT INTO `users_credits_logs`(`target_id`, `admin_id`, `amount`, `date`, `reason`) VALUES(?, ?, ?, ?, ?);', $rID, $rUserInfo['id'], $rCredits, time(), $rReason); + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function reloadCache() { + shell_exec(PHP_BIN . ' ' . MAIN_HOME . 'console.php cron:cache_engine > /dev/null 2>/dev/null &'); + return array('status' => 'STATUS_SUCCESS'); + } + public static function runQuery($rQuery) { + global $db; + if (!$db->query($rQuery)) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $db->get_rows(), 'insert_id' => $db->last_insert_id()); + } +} + +if (!function_exists('parseError')) { + function parseError($rArray) { + global $_ERRORS; + if (!(isset($rArray['status']) && is_numeric($rArray['status']))) { + } else { + $rArray['status'] = $_ERRORS[$rArray['status']]; + } + if ($rArray) { + } else { + $rArray['status'] = 'STATUS_NO_PERMISSIONS'; + } + return $rArray; + } +} diff --git a/src/Public/Controllers/Api/AdminApiController.php b/src/Public/Controllers/Api/AdminApiController.php index 670c9970..76d2f2aa 100644 --- a/src/Public/Controllers/Api/AdminApiController.php +++ b/src/Public/Controllers/Api/AdminApiController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ @@ -660,1451 +662,3 @@ if (!empty($rData['api_key']) && AdminAPIWrapper::createSession()) { } } } - -class AdminAPIWrapper { - public static $db = null; - public static $rKey = null; - public static function filterRow($rData, $rShow, $rHide, $rSkipResult = false) { - if ($rShow || $rHide) { - if ($rSkipResult) { - $rRow = $rData; - } else { - $rRow = $rData['data']; - } - $rReturn = array(); - if (!$rRow) { - } else { - foreach (array_keys($rRow) as $rKey) { - if ($rShow) { - if (!in_array($rKey, $rShow)) { - } else { - $rReturn[$rKey] = $rRow[$rKey]; - } - } else { - if (!$rHide) { - } else { - if (in_array($rKey, $rHide)) { - } else { - $rReturn[$rKey] = $rRow[$rKey]; - } - } - } - } - } - if ($rSkipResult) { - return $rReturn; - } - $rData['data'] = $rReturn; - return $rData; - } - return $rData; - } - public static function filterRows($rRows, $rShow, $rHide) { - $rReturn = array(); - if (!$rRows['data']) { - } else { - foreach ($rRows['data'] as $rRow) { - $rReturn[] = self::filterRow($rRow, $rShow, $rHide, true); - } - } - return $rReturn; - } - public static function TableAPI($rID, $rStart = 0, $rLimit = 10, $rData = array(), $rShowColumns = array(), $rHideColumns = array()) { - $rTableAPI = 'http://127.0.0.1:' . ServerRepository::getAll()[SERVER_ID]['http_broadcast_port'] . '/' . trim(dirname($_SERVER['PHP_SELF']), '/') . '/table.php'; - $rData['api_key'] = self::$rKey; - $rData['id'] = $rID; - $rData['start'] = $rStart; - $rData['length'] = $rLimit; - $rData['show_columns'] = $rShowColumns; - $rData['hide_columns'] = $rHideColumns; - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $rTableAPI); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($rData)); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Requested-With: xmlhttprequest')); - $rReturn = json_decode(curl_exec($ch), true); - curl_close($ch); - return $rReturn; - } - public static function createSession() { - global $rUserInfo; - global $rPermissions; - self::$db->query('SELECT * FROM `users` LEFT JOIN `users_groups` ON `users_groups`.`group_id` = `users`.`member_group_id` WHERE `api_key` = ? AND LENGTH(`api_key`) > 0 AND `is_admin` = 1 AND `status` = 1;', self::$rKey); - if (0 >= self::$db->num_rows()) { - return false; - } - $rUserID = self::$db->get_row()['id']; - $GLOBALS['rAdminUserInfo'] = UserRepository::getRegisteredUserById($rUserID); - unset($GLOBALS['rAdminUserInfo']['password']); - $rUserInfo = $GLOBALS['rAdminUserInfo']; - $rPermissions = AuthRepository::getPermissions($rUserInfo['member_group_id']); - $rPermissions['advanced'] = array(); - if (0 >= strlen($rUserInfo['timezone'])) { - } else { - date_default_timezone_set($rUserInfo['timezone']); - } - return true; - } - public static function getUserInfo() { - global $rUserInfo; - global $rPermissions; - return array('status' => 'STATUS_SUCCESS', 'data' => $rUserInfo, 'permissions' => $rPermissions); - } - public static function getLine($rID) { - if (!($rLine = UserRepository::getLineById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rLine); - } - public static function createLine($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(LineService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getLine($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editLine($rID, $rData) { - if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - if (!isset($rData['isp_clear'])) { - } else { - $rData['isp_clear'] = ''; - } - $rReturn = parseerror(LineService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getLine($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteLine($rID) { - if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { - } else { - if (!LineService::deleteLineById($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function disableLine($rID) { - if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function enableLine($rID) { - if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function banLine($rID) { - if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `admin_enabled` = 0 WHERE `id` = ?;', $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function unbanLine($rID) { - if (!(($rLine = self::getLine($rID)) && isset($rLine['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `admin_enabled` = 1 WHERE `id` = ?;', $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function getUser($rID) { - if (!($rUser = UserRepository::getRegisteredUserById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rUser); - } - public static function createUser($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(UserService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getUser($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editUser($rID, $rData) { - if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(UserService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getUser($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteUser($rID) { - if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { - } else { - if (!UserService::deleteRegisteredUser($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function disableUser($rID) { - if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `users` SET `status` = 0 WHERE `id` = ?;', $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function enableUser($rID) { - if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `users` SET `status` = 1 WHERE `id` = ?;', $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function getMAG($rID) { - if (!($rDevice = MagService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rDevice); - } - public static function createMAG($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(MagService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editMAG($rID, $rData) { - if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - if (!isset($rData['isp_clear'])) { - } else { - $rData['isp_clear'] = ''; - } - $rReturn = parseerror(MagService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteMAG($rID) { - if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { - } else { - if (!MagService::deleteDevice($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function disableMAG($rID) { - if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function enableMAG($rID) { - if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function banMAG($rID) { - if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `admin_enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function unbanMAG($rID) { - if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `admin_enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function convertMAG($rID) { - if (!(($rDevice = self::getMAG($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - MagService::deleteDevice($rID, false, false, true); - return array('status' => 'STATUS_SUCCESS', 'data' => self::getLine($rDevice['user_id'])); - } - public static function getEnigma($rID) { - if (!($rDevice = EnigmaService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rDevice); - } - public static function createEnigma($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(EnigmaService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editEnigma($rID, $rData) { - if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - if (!isset($rData['isp_clear'])) { - } else { - $rData['isp_clear'] = ''; - } - $rReturn = parseerror(EnigmaService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteEnigma($rID) { - if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { - } else { - if (!EnigmaService::deleteDevice($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function disableEnigma($rID) { - if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function enableEnigma($rID) { - if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function banEnigma($rID) { - if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `admin_enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function unbanEnigma($rID) { - if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `admin_enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function convertEnigma($rID) { - if (!(($rDevice = self::getEnigma($rID)) && isset($rDevice['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - EnigmaService::deleteDevice($rID, false, false, true); - return array('status' => 'STATUS_SUCCESS', 'data' => self::getLine($rDevice['user_id'])); - } - public static function getBouquets() { - return array('status' => 'STATUS_SUCCESS', 'data' => BouquetService::getAllSimple()); - } - public static function getBouquet($rID) { - if (!($rBouquet = BouquetService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rBouquet); - } - public static function createBouquet($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(BouquetService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getBouquet($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editBouquet($rID, $rData) { - if (!(($rBouquet = self::getBouquet($rID)) && isset($rBouquet['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(BouquetService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getBouquet($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteBouquet($rID) { - if (($rBouquet = self::getBouquet($rID)) && isset($rBouquet['data'])) { - if (BouquetService::deleteById($rID)) { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getAccessCodes() { - return array('status' => 'STATUS_SUCCESS', 'data' => AuthRepository::getAllCodes()); - } - public static function getAccessCode($rID) { - if (!($rCode = AuthRepository::getCodeById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rCode); - } - public static function createAccessCode($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(AuthService::processCode($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getAccessCode($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editAccessCode($rID, $rData) { - if (!(($rCode = self::getAccessCode($rID)) && isset($rCode['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(AuthService::processCode($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getAccessCode($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteAccessCode($rID) { - if (!(($rCode = self::getAccessCode($rID)) && isset($rCode['data']))) { - } else { - if (!AuthRepository::deleteCode($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getHMACs() { - return array('status' => 'STATUS_SUCCESS', 'data' => AuthRepository::getAllHMAC()); - } - public static function getHMAC($rID) { - if (!($rToken = AuthRepository::getHMACById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rToken); - } - public static function createHMAC($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(AuthService::processHMAC($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getHMAC($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editHMAC($rID, $rData) { - if (!(($rToken = self::getHMAC($rID)) && isset($rToken['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(AuthService::processHMAC($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getHMAC($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteHMAC($rID) { - if (($rToken = self::getHMAC($rID)) && isset($rToken['data'])) { - if (AuthRepository::deleteHMAC($rID)) { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getEPGs() { - return array('status' => 'STATUS_SUCCESS', 'data' => EpgService::getAll()); - } - public static function getEPG($rID) { - if (!($rEPG = EpgService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rEPG); - } - public static function createEPG($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(EpgService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getEPG($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editEPG($rID, $rData) { - if (!(($rEPG = self::getEPG($rID)) && isset($rEPG['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(EpgService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getEPG($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteEPG($rID) { - if (!(($rEPG = self::getEPG($rID)) && isset($rEPG['data']))) { - } else { - if (!EpgService::deleteEpgById($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function reloadEPG($rID = null) { - if ($rID) { - shell_exec(PHP_BIN . ' ' . MAIN_HOME . 'console.php cron:epg "' . intval($rID) . '" > /dev/null 2>/dev/null &'); - } else { - shell_exec(PHP_BIN . ' ' . MAIN_HOME . 'console.php cron:epg > /dev/null 2>/dev/null &'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function getProviders() { - return array('status' => 'STATUS_SUCCESS', 'data' => ProviderService::getAll()); - } - public static function getProvider($rID) { - if (!($rProvider = ProviderService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rProvider); - } - public static function createProvider($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(ProviderService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getProvider($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editProvider($rID, $rData) { - if (!(($rProvider = self::getProvider($rID)) && isset($rProvider['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(ProviderService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getProvider($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteProvider($rID) { - if (!(($rProvider = self::getProvider($rID)) && isset($rProvider['data']))) { - } else { - if (!ProviderService::deleteById($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function reloadProvider($rID = null) { - if ($rID) { - shell_exec(PHP_BIN . ' ' . MAIN_HOME . 'console.php cron:providers "' . intval($rID) . '" > /dev/null 2>/dev/null &'); - } else { - shell_exec(PHP_BIN . ' ' . MAIN_HOME . 'console.php cron:providers > /dev/null 2>/dev/null &'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function getGroups() { - return array('status' => 'STATUS_SUCCESS', 'data' => GroupService::getAll()); - } - public static function getGroup($rID) { - if (!($rGroup = GroupService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rGroup); - } - public static function createGroup($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(GroupService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getGroup($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editGroup($rID, $rData) { - if (!(($rGroup = self::getGroup($rID)) && isset($rGroup['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(GroupService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getGroup($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteGroup($rID) { - if (!(($rGroup = self::getGroup($rID)) && isset($rGroup['data']))) { - } else { - if (!GroupService::deleteById($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getPackages() { - return array('status' => 'STATUS_SUCCESS', 'data' => PackageService::getAll()); - } - public static function getPackage($rID) { - if (!($rPackage = PackageService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rPackage); - } - public static function createPackage($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(PackageService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getPackage($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editPackage($rID, $rData) { - if (!(($rPackage = self::getPackage($rID)) && isset($rPackage['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(PackageService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getPackage($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deletePackage($rID) { - if (!(($rPackage = self::getPackage($rID)) && isset($rPackage['data']))) { - } else { - if (!PackageService::deleteById($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getTranscodeProfiles() { - return array('status' => 'STATUS_SUCCESS', 'data' => StreamConfigRepository::getTranscodeProfiles()); - } - public static function getTranscodeProfile($rID) { - if (!($rProfile = StreamConfigRepository::getTranscodeProfile($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rProfile); - } - public static function createTranscodeProfile($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(ProfileService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getTranscodeProfile($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editTranscodeProfile($rID, $rData) { - if (!(($rProfile = self::getTranscodeProfile($rID)) && isset($rProfile['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(ProfileService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getTranscodeProfile($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteTranscodeProfile($rID) { - if (!(($rProfile = self::getTranscodeProfile($rID)) && isset($rProfile['data']))) { - } else { - if (!StreamConfigRepository::deleteProfile($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getRTMPIPs() { - return array('status' => 'STATUS_SUCCESS', 'data' => BlocklistService::getRTMPIPsSimple()); - } - public static function getRTMPIP($rID) { - if (!($rIP = BlocklistService::getRTMPIPById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rIP); - } - public static function addRTMPIP($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(BlocklistService::processRTMPIP($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getRTMPIP($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editRTMPIP($rID, $rData) { - if (!(($rIP = self::getRTMPIP($rID)) && isset($rIP['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(BlocklistService::processRTMPIP($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getRTMPIP($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteRTMPIP($rID) { - if (!(($rIP = self::getRTMPIP($rID)) && isset($rIP['data']))) { - } else { - if (!BlocklistService::deleteRTMPIP($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getCategories() { - return array('status' => 'STATUS_SUCCESS', 'data' => CategoryService::getAllByType()); - } - public static function getCategory($rID) { - if (!($rCategory = CategoryService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rCategory); - } - public static function createCategory($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(CategoryService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getCategory($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editCategory($rID, $rData) { - if (!(($rCategory = self::getCategory($rID)) && isset($rCategory['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(CategoryService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getCategory($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteCategory($rID) { - if (!(($rCategory = self::getCategory($rID)) && isset($rCategory['data']))) { - } else { - if (!CategoryService::deleteById($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getWatchFolders() { - return array('status' => 'STATUS_SUCCESS', 'data' => WatchService::getWatchFolders()); - } - public static function getWatchFolder($rID) { - if (!($rFolder = StreamRepository::getWatchFolder($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rFolder); - } - public static function createWatchFolder($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(WatchService::processWatchFolder($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getWatchFolder($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editWatchFolder($rID, $rData) { - if (!(($rFolder = self::getWatchFolder($rID)) && isset($rFolder['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(WatchService::processWatchFolder($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getWatchFolder($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteWatchFolder($rID) { - if (!(($rFolder = self::getWatchFolder($rID)) && isset($rFolder['data']))) { - } else { - if (!StreamRepository::deleteWatchFolder($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function reloadWatchFolder($rServerID, $rID) { - WatchService::forceWatch($rServerID, $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function getBlockedISPs() { - return array('status' => 'STATUS_SUCCESS', 'data' => BlocklistService::getAllISPs()); - } - public static function addBlockedISP($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(BlocklistService::processISP($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = $rReturn['data']['insert_id']; - } - return $rReturn; - } - public static function deleteBlockedISP($rID) { - if (!BlocklistService::deleteBlockedISP($rID)) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function getBlockedUAs() { - return array('status' => 'STATUS_SUCCESS', 'data' => BlocklistService::getAllUserAgents()); - } - public static function addBlockedUA($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(BlocklistService::processUA($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = $rReturn['data']['insert_id']; - } - return $rReturn; - } - public static function deleteBlockedUA($rID) { - if (!BlocklistService::deleteBlockedUA($rID)) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function getBlockedIPs() { - return array('status' => 'STATUS_SUCCESS', 'data' => BlocklistService::getBlockedIPsSimple()); - } - public static function addBlockedIP($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(BlocklistService::blockIP($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = $rReturn['data']['insert_id']; - } - return $rReturn; - } - public static function deleteBlockedIP($rID) { - if (!BlocklistService::deleteBlockedIP($rID)) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function flushBlockedIPs() { - BlocklistService::flushIPs(); - return array('status' => 'STATUS_SUCCESS'); - } - public static function getStream($rID) { - if (!(($rStream = StreamRepository::getById($rID)) && $rStream['type'] == 1)) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rStream); - } - public static function createStream($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(StreamService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getStream($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editStream($rID, $rData) { - if (!(($rStream = self::getStream($rID)) && isset($rStream['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(StreamService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getStream($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteStream($rID, $rServerID = -1) { - if (!(($rStream = self::getStream($rID)) && isset($rStream['data']))) { - } else { - if (!StreamRepository::deleteStream($rID, $rServerID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function startStream($rID, $rServerID = -1) { - if ($rServerID == -1) { - $rData = json_decode(ApiClient::request(array('action' => 'stream', 'sub' => 'start', 'stream_ids' => array($rID), 'servers' => array_keys(ServerRepository::getAll()))), true); - } else { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'stream', 'stream_ids' => array($rID), 'function' => 'start')), true); - } - if (!$rData['result']) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function stopStream($rID, $rServerID = -1) { - if ($rServerID == -1) { - $rData = json_decode(ApiClient::request(array('action' => 'stream', 'sub' => 'stop', 'stream_ids' => array($rID), 'servers' => array_keys(ServerRepository::getAll()))), true); - } else { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'stream', 'stream_ids' => array($rID), 'function' => 'stop')), true); - } - if (!$rData['result']) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function getChannel($rID) { - if (!(($rStream = StreamRepository::getById($rID)) && $rStream['type'] == 3)) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rStream); - } - public static function createChannel($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(ChannelService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getChannel($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editChannel($rID, $rData) { - if (!(($rStream = self::getChannel($rID)) && isset($rStream['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(ChannelService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getChannel($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteChannel($rID, $rServerID = -1) { - if (!(($rStream = self::getChannel($rID)) && isset($rStream['data']))) { - } else { - if (!StreamRepository::deleteStream($rID, $rServerID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getStation($rID) { - if (!(($rStream = StreamRepository::getById($rID)) && $rStream['type'] == 4)) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rStream); - } - public static function createStation($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(RadioService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getStation($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editStation($rID, $rData) { - if (!(($rStream = self::getStation($rID)) && isset($rStream['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(RadioService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getStation($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteStation($rID, $rServerID = -1) { - if (!(($rStream = self::getStation($rID)) && isset($rStream['data']))) { - } else { - if (!StreamRepository::deleteStream($rID, $rServerID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getMovie($rID) { - if (!(($rStream = StreamRepository::getById($rID)) && $rStream['type'] == 2)) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rStream); - } - public static function createMovie($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(MovieService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getMovie($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editMovie($rID, $rData) { - if (!(($rStream = self::getMovie($rID)) && isset($rStream['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(MovieService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getMovie($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteMovie($rID, $rServerID = -1) { - if (!(($rStream = self::getMovie($rID)) && isset($rStream['data']))) { - } else { - if (!StreamRepository::deleteStream($rID, $rServerID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function startMovie($rID, $rServerID = -1) { - if ($rServerID == -1) { - $rData = json_decode(ApiClient::request(array('action' => 'vod', 'sub' => 'start', 'stream_ids' => array($rID), 'servers' => array_keys(ServerRepository::getAll()))), true); - } else { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'vod', 'stream_ids' => array($rID), 'function' => 'start')), true); - } - if (!$rData['result']) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function stopMovie($rID, $rServerID = -1) { - if ($rServerID == -1) { - $rData = json_decode(ApiClient::request(array('action' => 'vod', 'sub' => 'stop', 'stream_ids' => array($rID), 'servers' => array_keys(ServerRepository::getAll()))), true); - } else { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'vod', 'stream_ids' => array($rID), 'function' => 'stop')), true); - } - if (!$rData['result']) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function getEpisode($rID) { - if (!(($rStream = StreamRepository::getById($rID)) && $rStream['type'] == 5)) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rStream); - } - public static function createEpisode($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(EpisodeService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getEpisode($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editEpisode($rID, $rData) { - if (!(($rStream = self::getEpisode($rID)) && isset($rStream['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(EpisodeService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getEpisode($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteEpisode($rID, $rServerID = -1) { - if (!(($rStream = self::getEpisode($rID)) && isset($rStream['data']))) { - } else { - if (!StreamRepository::deleteStream($rID, $rServerID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getSeries($rID) { - if (!($rSeries = SeriesService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rSeries); - } - public static function createSeries($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(SeriesService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getSeries($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editSeries($rID, $rData) { - if (!(($rStream = self::getSeries($rID)) && isset($rStream['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(SeriesService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getSeries($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteSeries($rID) { - if (!(($rStream = self::getSeries($rID)) && isset($rStream['data']))) { - } else { - if (!SeriesService::deleteSeriesById($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getServers() { - global $rPermissions; - return array('status' => 'STATUS_SUCCESS', 'data' => ServerRepository::getStreamingSimple($rPermissions)); - } - public static function getServer($rID) { - if (!($rServer = ServerRepository::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rServer); - } - public static function installServer($rData) { - global $rPermissions; - if (!(empty($rData['type']) || empty($rData['ssh_port']) || empty($rData['root_username']) || empty($rData['root_password']))) { - if (!($rData['type'] == 1 && (empty($rData['type']) || empty($rData['ssh_port'])))) { - $rReturn = parseerror(ServerService::install($rData, ServerRepository::getStreamingSimple($rPermissions, 'all'), ServerRepository::getProxySimple($rPermissions))); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getServer($rReturn['data']['insert_id']); - } - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_INVALID_INPUT'); - } - return array('status' => 'STATUS_INVALID_INPUT'); - } - public static function editServer($rID, $rData) { - if (!(($rServer = self::getServer($rID)) && isset($rServer['data']))) { - return array('status' => 'STATUS_FAILURE'); - } else { - $rData['edit'] = $rID; - $rReturn = parseerror(ServerService::process($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getServer($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - } - public static function editProxy($rID, $rData) { - if (!(($rServer = self::getServer($rID)) && isset($rServer['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(ServerService::processProxy($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getServer($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteServer($rID) { - if (!(($rServer = self::getServer($rID)) && isset($rServer['data']))) { - } else { - if (!ServerRepository::deleteById($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function getSettings() { - return array('status' => 'STATUS_SUCCESS', 'data' => SettingsManager::getAll()); - } - public static function editSettings($rData) { - $rReturn = parseerror(SettingsService::edit($rData)); - $rReturn['data'] = self::getSettings()['data']; - return $rReturn; - } - public static function getStats($rServerID) { - global $db; - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'stats')), true); - if (!$rData) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['requests_per_second'] = ServerRepository::getAll()[$rServerID]['requests_per_second']; - $db->query('SELECT COUNT(*) AS `count` FROM `lines_live` WHERE `server_id` = ? AND `hls_end` = 0;', $rServerID); - if (0 >= $db->num_rows()) { - } else { - $rData['open_connections'] = $db->get_row()['count']; - } - $db->query('SELECT COUNT(*) AS `count` FROM `lines_live` WHERE `hls_end` = 0;'); - if (0 >= $db->num_rows()) { - } else { - $rData['total_connections'] = $db->get_row()['count']; - } - $db->query('SELECT `activity_id` FROM `lines_live` WHERE `server_id` = ? AND `hls_end` = 0 GROUP BY `user_id`;', $rServerID); - if (0 >= $db->num_rows()) { - } else { - $rData['online_users'] = $db->num_rows(); - } - $db->query('SELECT `activity_id` FROM `lines_live` WHERE `hls_end` = 0 GROUP BY `user_id`;'); - if (0 >= $db->num_rows()) { - } else { - $rData['total_users'] = $db->num_rows(); - } - $db->query('SELECT COUNT(*) AS `count` FROM `streams_servers` LEFT JOIN `streams` ON `streams`.`id` = `streams_servers`.`stream_id` WHERE `server_id` = ? AND `stream_status` <> 2 AND `type` = 1;', $rServerID); - if (0 >= $db->num_rows()) { - } else { - $rData['total_streams'] = $db->get_row()['count']; - } - $db->query('SELECT COUNT(*) AS `count` FROM `streams_servers` LEFT JOIN `streams` ON `streams`.`id` = `streams_servers`.`stream_id` WHERE `server_id` = ? AND `pid` > 0 AND `type` = 1;', $rServerID); - if (0 >= $db->num_rows()) { - } else { - $rData['total_running_streams'] = $db->get_row()['count']; - } - $db->query('SELECT COUNT(*) AS `count` FROM `streams_servers` LEFT JOIN `streams` ON `streams`.`id` = `streams_servers`.`stream_id` WHERE `server_id` = ? AND `type` = 1 AND (`streams`.`direct_source` = 0 AND (`streams_servers`.`monitor_pid` IS NOT NULL AND `streams_servers`.`monitor_pid` > 0) AND (`streams_servers`.`pid` IS NULL OR `streams_servers`.`pid` <= 0) AND `streams_servers`.`stream_status` <> 0);', $rServerID); - if (0 >= $db->num_rows()) { - } else { - $rData['offline_streams'] = $db->get_row()['count']; - } - $rData['network_guaranteed_speed'] = ServerRepository::getAll()[$rServerID]['network_guaranteed_speed']; - return array('status' => 'STATUS_SUCCESS', 'data' => $rData); - } - public static function getFPMStatus($rServerID) { - $rData = ApiClient::systemRequest($rServerID, array('action' => 'fpm_status')); - if (!$rData) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rData); - } - public static function getRTMPStats($rServerID) { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'rtmp_stats')), true); - if (!$rData) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rData); - } - public static function getFreeSpace($rServerID) { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'get_free_space')), true); - if (!$rData) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rData); - } - public static function getPIDs($rServerID) { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'get_pids')), true); - if (!$rData) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rData); - } - public static function getCertificateInfo($rServerID) { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'get_certificate_info')), true); - if (!$rData) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rData); - } - public static function reloadNGINX($rServerID) { - ApiClient::systemRequest($rServerID, array('action' => 'reload_nginx')); - return array('status' => 'STATUS_SUCCESS'); - } - public static function clearTemp($rServerID) { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'free_temp')), true); - if (!$rData['result']) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function clearStreams($rServerID) { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'free_streams')), true); - if (!$rData['result']) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function getDirectory($rServerID, $rDirectory) { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'scandir', 'dir' => $rDirectory)), true); - if (!$rData) { - return array('status' => 'STATUS_FAILURE'); - } - unset($rData['result']); - if (!isset($rData['result']) || $rData['result']) { - return array('status' => 'STATUS_SUCCESS', 'data' => $rData); - } - return array('status' => 'STATUS_FAILURE'); - } - public static function killPID($rServerID, $rPID) { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'kill_pid', 'pid' => intval($rPID))), true); - if (!$rData['result']) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function killConnection($rServerID, $rActivityID) { - $rData = json_decode(ApiClient::systemRequest($rServerID, array('action' => 'closeConnection', 'activity_id' => intval($rActivityID))), true); - if (!$rData['result']) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS'); - } - public static function adjustCredits($rID, $rCredits, $rReason = '') { - global $db; - global $rUserInfo; - if (!(is_numeric($rCredits) && ($rUser = self::getUser($rID)) && isset($rUser['data']))) { - } else { - $rCredits = intval($rUser['data']['credits']) + intval($rCredits); - if (0 > $rCredits) { - } else { - $db->query('UPDATE `users` SET `credits` = ? WHERE `id` = ?;', $rCredits, $rID); - $db->query('INSERT INTO `users_credits_logs`(`target_id`, `admin_id`, `amount`, `date`, `reason`) VALUES(?, ?, ?, ?, ?);', $rID, $rUserInfo['id'], $rCredits, time(), $rReason); - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function reloadCache() { - shell_exec(PHP_BIN . ' ' . MAIN_HOME . 'console.php cron:cache_engine > /dev/null 2>/dev/null &'); - return array('status' => 'STATUS_SUCCESS'); - } - public static function runQuery($rQuery) { - global $db; - if (!$db->query($rQuery)) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $db->get_rows(), 'insert_id' => $db->last_insert_id()); - } -} - -if (!function_exists('parseError')) { - function parseError($rArray) { - global $_ERRORS; - if (!(isset($rArray['status']) && is_numeric($rArray['status']))) { - } else { - $rArray['status'] = $_ERRORS[$rArray['status']]; - } - if ($rArray) { - } else { - $rArray['status'] = 'STATUS_NO_PERMISSIONS'; - } - return $rArray; - } -} diff --git a/src/Public/Controllers/Api/BaseApiController.php b/src/Public/Controllers/Api/BaseApiController.php index 8966e4fd..0b7f9263 100644 --- a/src/Public/Controllers/Api/BaseApiController.php +++ b/src/Public/Controllers/Api/BaseApiController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Api/Enigma2ApiController.php b/src/Public/Controllers/Api/Enigma2ApiController.php index 6bc2118d..b65295af 100644 --- a/src/Public/Controllers/Api/Enigma2ApiController.php +++ b/src/Public/Controllers/Api/Enigma2ApiController.php @@ -1,5 +1,7 @@ - * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM - * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html - */ - -class SimpleXMLExtended extends SimpleXMLElement { - public function addCData($rCData) { - $rNode = dom_import_simplexml($this); - $rRowner = $rNode->ownerDocument; - $rNode->appendChild($rRowner->createCDATASection($rCData)); - } -} - class Enigma2ApiController { private $deny = true; private $userInfo; diff --git a/src/Public/Controllers/Api/EpgApiController.php b/src/Public/Controllers/Api/EpgApiController.php index c12e4454..8d2701bf 100644 --- a/src/Public/Controllers/Api/EpgApiController.php +++ b/src/Public/Controllers/Api/EpgApiController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Api/InternalApiController.php b/src/Public/Controllers/Api/InternalApiController.php index d1d6ff36..3484194a 100644 --- a/src/Public/Controllers/Api/InternalApiController.php +++ b/src/Public/Controllers/Api/InternalApiController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ @@ -518,7 +520,7 @@ class InternalApiController { } $rHeaders = !empty($rRequest['headers']) ? rtrim($rRequest['headers'], "\r\n") . "\r\n" : ''; - $rHeaders .= 'X-XC_VM-Prebuffer:1' . "\r\n"; + $rHeaders .= 'X-\XC_VM-Prebuffer:1' . "\r\n"; $rFetchArguments[] = sprintf('-headers %s', escapeshellarg($rHeaders)); exit(json_encode(array('result' => true, 'data' => FFprobeRunner::probeStream($rURL, $rFetchArguments, '', false)))); diff --git a/src/Public/Controllers/Api/PlayerApiController.php b/src/Public/Controllers/Api/PlayerApiController.php index 7370f1d3..11867e24 100644 --- a/src/Public/Controllers/Api/PlayerApiController.php +++ b/src/Public/Controllers/Api/PlayerApiController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Api/PlaylistApiController.php b/src/Public/Controllers/Api/PlaylistApiController.php index fa18e691..7878dc34 100644 --- a/src/Public/Controllers/Api/PlaylistApiController.php +++ b/src/Public/Controllers/Api/PlaylistApiController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Api/ResellerAPIWrapper.php b/src/Public/Controllers/Api/ResellerAPIWrapper.php new file mode 100644 index 00000000..e7ffbc27 --- /dev/null +++ b/src/Public/Controllers/Api/ResellerAPIWrapper.php @@ -0,0 +1,412 @@ +query('SELECT * FROM `users` LEFT JOIN `users_groups` ON `users_groups`.`group_id` = `users`.`member_group_id` WHERE `api_key` = ? AND LENGTH(`api_key`) > 0 AND `is_reseller` = 1 AND `status` = 1;', self::$rKey); + if (0 >= self::$db->num_rows()) { + return false; + } + ResellerAPI::init(self::$db->get_row()['id']); + unset(ResellerAPI::$rUserInfo['password']); + $rUserInfo = ResellerAPI::$rUserInfo; + $rPermissions = ResellerAPI::$rPermissions; + if (0 >= strlen($rUserInfo['timezone'])) { + } else { + date_default_timezone_set($rUserInfo['timezone']); + } + return true; + } + public static function getUserInfo() { + global $rUserInfo; + global $rPermissions; + return array('status' => 'STATUS_SUCCESS', 'data' => $rUserInfo, 'permissions' => $rPermissions); + } + public static function getPackages() { + global $rUserInfo; + if (!$rUserInfo) { + return array('status' => 'STATUS_FAILURE'); + } + $rPackages = array(); + $rOverride = json_decode($rUserInfo['override_packages'], true); + foreach (PackageService::getAll($rUserInfo['member_group_id']) as $rPackage) { + if (isset($rOverride[$rPackage['id']]['official_credits']) && 0 < strlen($rOverride[$rPackage['id']]['official_credits'])) { + $rPackage['official_credits'] = intval($rOverride[$rPackage['id']]['official_credits']); + } else { + $rPackage['official_credits'] = intval($rPackage['official_credits']); + } + $rPackages[] = $rPackage; + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rPackages); + } + public static function getLine($rID) { + if (!(($rLine = UserRepository::getLineById($rID)) && Authorization::check('line', $rID))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rLine); + } + public static function createLine($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(ResellerAPI::processLine($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getLine($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editLine($rID, $rData) { + if (!UserRepository::getLineById($rID)) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + if (!isset($rData['isp_clear'])) { + } else { + $rData['isp_clear'] = ''; + } + $rReturn = parseerror(ResellerAPI::processLine($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getLine($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteLine($rID) { + if (!UserRepository::getLineById($rID)) { + } else { + if (!LineService::deleteLineById($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function disableLine($rID) { + if (!UserRepository::getLineById($rID)) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function enableLine($rID) { + if (!UserRepository::getLineById($rID)) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function getMAG($rID) { + if (!($rDevice = MagService::getById($rID))) { + } else { + if (!Authorization::check('line', $rDevice['user_id'])) { + } else { + return array('status' => 'STATUS_SUCCESS', 'data' => $rDevice); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function createMAG($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(ResellerAPI::processMAG($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editMAG($rID, $rData) { + if (!MagService::getById($rID)) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + if (!isset($rData['isp_clear'])) { + } else { + $rData['isp_clear'] = ''; + } + $rReturn = parseerror(ResellerAPI::processMAG($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteMAG($rID) { + if (!MagService::getById($rID)) { + } else { + if (!MagService::deleteDevice($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function disableMAG($rID) { + if (!($rDevice = MagService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function enableMAG($rID) { + if (!($rDevice = MagService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function convertMAG($rID) { + global $db; + if (!($rDevice = MagService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + MagService::deleteDevice($rID, false, false, true); + return array('status' => 'STATUS_SUCCESS', 'data' => UserRepository::getLineById($rDevice['user_id'])); + } + public static function getEnigma($rID) { + if (!($rDevice = EnigmaService::getById($rID))) { + } else { + if (!Authorization::check('line', $rDevice['user_id'])) { + } else { + return array('status' => 'STATUS_SUCCESS', 'data' => $rDevice); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function createEnigma($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(ResellerAPI::processEnigma($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getEnigma($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editEnigma($rID, $rData) { + if (!EnigmaService::getById($rID)) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + if (!isset($rData['isp_clear'])) { + } else { + $rData['isp_clear'] = ''; + } + $rReturn = parseerror(ResellerAPI::processEnigma($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getEnigma($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteEnigma($rID) { + if (!EnigmaService::getById($rID)) { + } else { + if (!EnigmaService::deleteDevice($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function disableEnigma($rID) { + if (!($rDevice = EnigmaService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function enableEnigma($rID) { + if (!($rDevice = EnigmaService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); + return array('status' => 'STATUS_SUCCESS'); + } + public static function convertEnigma($rID) { + global $db; + if (!($rDevice = EnigmaService::getById($rID))) { + return array('status' => 'STATUS_FAILURE'); + } + EnigmaService::deleteDevice($rID, false, false, true); + return array('status' => 'STATUS_SUCCESS', 'data' => UserRepository::getLineById($rDevice['user_id'])); + } + public static function getUser($rID) { + if (!(($rUser = UserRepository::getRegisteredUserById($rID)) && Authorization::check('user', $rUser['id']))) { + return array('status' => 'STATUS_FAILURE'); + } + return array('status' => 'STATUS_SUCCESS', 'data' => $rUser); + } + public static function createUser($rData) { + if (!isset($rData['edit'])) { + } else { + unset($rData['edit']); + } + $rReturn = parseerror(ResellerAPI::processUser($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getUser($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function editUser($rID, $rData) { + if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + $rData['edit'] = $rID; + $rReturn = parseerror(ResellerAPI::processUser($rData)); + if (!isset($rReturn['data']['insert_id'])) { + } else { + $rReturn['data'] = self::getUser($rReturn['data']['insert_id'])['data']; + } + return $rReturn; + } + public static function deleteUser($rID) { + if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { + } else { + if (!UserService::deleteRegisteredUser($rID)) { + } else { + return array('status' => 'STATUS_SUCCESS'); + } + } + return array('status' => 'STATUS_FAILURE'); + } + public static function disableUser($rID) { + if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `users` SET `status` = 0 WHERE `id` = ?;', $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function enableUser($rID) { + if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { + return array('status' => 'STATUS_FAILURE'); + } + self::$db->query('UPDATE `users` SET `status` = 1 WHERE `id` = ?;', $rID); + return array('status' => 'STATUS_SUCCESS'); + } + public static function adjustCredits($rID, $rCredits, $rNote) { + global $rUserInfo; + if (strlen($rNote) != 0) { + } else { + $rNote = 'Reseller API Adjustment'; + } + if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { + } else { + if (!is_numeric($rCredits)) { + } else { + $rOwnerCredits = intval($rUserInfo['credits']) - intval($rCredits); + $rNewCredits = intval($rUser['data']['credits']) + intval($rCredits); + if (!(0 <= $rNewCredits && 0 <= $rOwnerCredits)) { + } else { + self::$db->query('UPDATE `users` SET `credits` = ? WHERE `id` = ?;', $rOwnerCredits, $rUserInfo['id']); + self::$db->query('UPDATE `users` SET `credits` = ? WHERE `id` = ?;', $rNewCredits, $rUser['data']['id']); + self::$db->query('INSERT INTO `users_credits_logs`(`target_id`, `admin_id`, `amount`, `date`, `reason`) VALUES(?, ?, ?, ?, ?);', $rUser['data']['id'], $rUserInfo['id'], $rCredits, time(), $rNote); + self::$db->query("INSERT INTO `users_logs`(`owner`, `type`, `action`, `log_id`, `package_id`, `cost`, `credits_after`, `date`, `deleted_info`) VALUES(?, 'user', ?, ?, null, ?, ?, ?, ?);", $rUserInfo['id'], 'adjust_credits', $rID, intval($rCredits), $rOwnerCredits, time(), json_encode($rUser['data'])); + return array('status' => 'STATUS_SUCCESS'); + } + } + } + return array('status' => 'STATUS_FAILURE'); + } +} + +if (!function_exists('parseError')) { + function parseError($rArray) { + global $_ERRORS; + if (!(isset($rArray['status']) && is_numeric($rArray['status']))) { + } else { + $rArray['status'] = $_ERRORS[$rArray['status']]; + } + if ($rArray) { + } else { + $rArray['status'] = 'STATUS_NO_PERMISSIONS'; + } + return $rArray; + } +} diff --git a/src/Public/Controllers/Api/ResellerRestApiController.php b/src/Public/Controllers/Api/ResellerRestApiController.php index f00255b9..b2cb42ca 100644 --- a/src/Public/Controllers/Api/ResellerRestApiController.php +++ b/src/Public/Controllers/Api/ResellerRestApiController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ @@ -180,401 +182,3 @@ if (!empty(RequestManager::getAll()['api_key']) && ResellerAPIWrapper::createSes } } } - -class ResellerAPIWrapper { - public static $db = null; - public static $rKey = null; - public static function filterRow($rData, $rShow, $rHide, $rSkipResult = false) { - if ($rShow || $rHide) { - if ($rSkipResult) { - $rRow = $rData; - } else { - $rRow = $rData['data']; - } - $rReturn = array(); - if (!$rRow) { - } else { - foreach (array_keys($rRow) as $rKey) { - if ($rShow) { - if (!in_array($rKey, $rShow)) { - } else { - $rReturn[$rKey] = $rRow[$rKey]; - } - } else { - if (!$rHide) { - } else { - if (in_array($rKey, $rHide)) { - } else { - $rReturn[$rKey] = $rRow[$rKey]; - } - } - } - } - } - if ($rSkipResult) { - return $rReturn; - } - $rData['data'] = $rReturn; - return $rData; - } - return $rData; - } - public static function filterRows($rRows, $rShow, $rHide) { - $rReturn = array(); - if (!$rRows['data']) { - } else { - foreach ($rRows['data'] as $rRow) { - $rReturn[] = self::filterRow($rRow, $rShow, $rHide, true); - } - } - return $rReturn; - } - public static function TableAPI($rID, $rStart = 0, $rLimit = 10, $rData = array(), $rShowColumns = array(), $rHideColumns = array()) { - $rTableAPI = 'http://127.0.0.1:' . ServerRepository::getAll()[SERVER_ID]['http_broadcast_port'] . '/' . trim(dirname($_SERVER['PHP_SELF']), '/') . '/table.php'; - $rData['api_key'] = self::$rKey; - $rData['id'] = $rID; - $rData['start'] = $rStart; - $rData['length'] = $rLimit; - $rData['show_columns'] = $rShowColumns; - $rData['hide_columns'] = $rHideColumns; - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $rTableAPI); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($rData)); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Requested-With: xmlhttprequest')); - $rReturn = json_decode(curl_exec($ch), true); - curl_close($ch); - return $rReturn; - } - public static function createSession() { - global $rUserInfo; - global $rPermissions; - self::$db->query('SELECT * FROM `users` LEFT JOIN `users_groups` ON `users_groups`.`group_id` = `users`.`member_group_id` WHERE `api_key` = ? AND LENGTH(`api_key`) > 0 AND `is_reseller` = 1 AND `status` = 1;', self::$rKey); - if (0 >= self::$db->num_rows()) { - return false; - } - ResellerAPI::init(self::$db->get_row()['id']); - unset(ResellerAPI::$rUserInfo['password']); - $rUserInfo = ResellerAPI::$rUserInfo; - $rPermissions = ResellerAPI::$rPermissions; - if (0 >= strlen($rUserInfo['timezone'])) { - } else { - date_default_timezone_set($rUserInfo['timezone']); - } - return true; - } - public static function getUserInfo() { - global $rUserInfo; - global $rPermissions; - return array('status' => 'STATUS_SUCCESS', 'data' => $rUserInfo, 'permissions' => $rPermissions); - } - public static function getPackages() { - global $rUserInfo; - if (!$rUserInfo) { - return array('status' => 'STATUS_FAILURE'); - } - $rPackages = array(); - $rOverride = json_decode($rUserInfo['override_packages'], true); - foreach (PackageService::getAll($rUserInfo['member_group_id']) as $rPackage) { - if (isset($rOverride[$rPackage['id']]['official_credits']) && 0 < strlen($rOverride[$rPackage['id']]['official_credits'])) { - $rPackage['official_credits'] = intval($rOverride[$rPackage['id']]['official_credits']); - } else { - $rPackage['official_credits'] = intval($rPackage['official_credits']); - } - $rPackages[] = $rPackage; - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rPackages); - } - public static function getLine($rID) { - if (!(($rLine = UserRepository::getLineById($rID)) && Authorization::check('line', $rID))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rLine); - } - public static function createLine($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(ResellerAPI::processLine($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getLine($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editLine($rID, $rData) { - if (!UserRepository::getLineById($rID)) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - if (!isset($rData['isp_clear'])) { - } else { - $rData['isp_clear'] = ''; - } - $rReturn = parseerror(ResellerAPI::processLine($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getLine($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteLine($rID) { - if (!UserRepository::getLineById($rID)) { - } else { - if (!LineService::deleteLineById($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function disableLine($rID) { - if (!UserRepository::getLineById($rID)) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function enableLine($rID) { - if (!UserRepository::getLineById($rID)) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function getMAG($rID) { - if (!($rDevice = MagService::getById($rID))) { - } else { - if (!Authorization::check('line', $rDevice['user_id'])) { - } else { - return array('status' => 'STATUS_SUCCESS', 'data' => $rDevice); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function createMAG($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(ResellerAPI::processMAG($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editMAG($rID, $rData) { - if (!MagService::getById($rID)) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - if (!isset($rData['isp_clear'])) { - } else { - $rData['isp_clear'] = ''; - } - $rReturn = parseerror(ResellerAPI::processMAG($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getMAG($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteMAG($rID) { - if (!MagService::getById($rID)) { - } else { - if (!MagService::deleteDevice($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function disableMAG($rID) { - if (!($rDevice = MagService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function enableMAG($rID) { - if (!($rDevice = MagService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function convertMAG($rID) { - global $db; - if (!($rDevice = MagService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - MagService::deleteDevice($rID, false, false, true); - return array('status' => 'STATUS_SUCCESS', 'data' => UserRepository::getLineById($rDevice['user_id'])); - } - public static function getEnigma($rID) { - if (!($rDevice = EnigmaService::getById($rID))) { - } else { - if (!Authorization::check('line', $rDevice['user_id'])) { - } else { - return array('status' => 'STATUS_SUCCESS', 'data' => $rDevice); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function createEnigma($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(ResellerAPI::processEnigma($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getEnigma($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editEnigma($rID, $rData) { - if (!EnigmaService::getById($rID)) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - if (!isset($rData['isp_clear'])) { - } else { - $rData['isp_clear'] = ''; - } - $rReturn = parseerror(ResellerAPI::processEnigma($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getEnigma($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteEnigma($rID) { - if (!EnigmaService::getById($rID)) { - } else { - if (!EnigmaService::deleteDevice($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function disableEnigma($rID) { - if (!($rDevice = EnigmaService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 0 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function enableEnigma($rID) { - if (!($rDevice = EnigmaService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `lines` SET `enabled` = 1 WHERE `id` = ?;', $rDevice['user_id']); - return array('status' => 'STATUS_SUCCESS'); - } - public static function convertEnigma($rID) { - global $db; - if (!($rDevice = EnigmaService::getById($rID))) { - return array('status' => 'STATUS_FAILURE'); - } - EnigmaService::deleteDevice($rID, false, false, true); - return array('status' => 'STATUS_SUCCESS', 'data' => UserRepository::getLineById($rDevice['user_id'])); - } - public static function getUser($rID) { - if (!(($rUser = UserRepository::getRegisteredUserById($rID)) && Authorization::check('user', $rUser['id']))) { - return array('status' => 'STATUS_FAILURE'); - } - return array('status' => 'STATUS_SUCCESS', 'data' => $rUser); - } - public static function createUser($rData) { - if (!isset($rData['edit'])) { - } else { - unset($rData['edit']); - } - $rReturn = parseerror(ResellerAPI::processUser($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getUser($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function editUser($rID, $rData) { - if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - $rData['edit'] = $rID; - $rReturn = parseerror(ResellerAPI::processUser($rData)); - if (!isset($rReturn['data']['insert_id'])) { - } else { - $rReturn['data'] = self::getUser($rReturn['data']['insert_id'])['data']; - } - return $rReturn; - } - public static function deleteUser($rID) { - if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { - } else { - if (!UserService::deleteRegisteredUser($rID)) { - } else { - return array('status' => 'STATUS_SUCCESS'); - } - } - return array('status' => 'STATUS_FAILURE'); - } - public static function disableUser($rID) { - if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `users` SET `status` = 0 WHERE `id` = ?;', $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function enableUser($rID) { - if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { - return array('status' => 'STATUS_FAILURE'); - } - self::$db->query('UPDATE `users` SET `status` = 1 WHERE `id` = ?;', $rID); - return array('status' => 'STATUS_SUCCESS'); - } - public static function adjustCredits($rID, $rCredits, $rNote) { - global $rUserInfo; - if (strlen($rNote) != 0) { - } else { - $rNote = 'Reseller API Adjustment'; - } - if (!(($rUser = self::getUser($rID)) && isset($rUser['data']))) { - } else { - if (!is_numeric($rCredits)) { - } else { - $rOwnerCredits = intval($rUserInfo['credits']) - intval($rCredits); - $rNewCredits = intval($rUser['data']['credits']) + intval($rCredits); - if (!(0 <= $rNewCredits && 0 <= $rOwnerCredits)) { - } else { - self::$db->query('UPDATE `users` SET `credits` = ? WHERE `id` = ?;', $rOwnerCredits, $rUserInfo['id']); - self::$db->query('UPDATE `users` SET `credits` = ? WHERE `id` = ?;', $rNewCredits, $rUser['data']['id']); - self::$db->query('INSERT INTO `users_credits_logs`(`target_id`, `admin_id`, `amount`, `date`, `reason`) VALUES(?, ?, ?, ?, ?);', $rUser['data']['id'], $rUserInfo['id'], $rCredits, time(), $rNote); - self::$db->query("INSERT INTO `users_logs`(`owner`, `type`, `action`, `log_id`, `package_id`, `cost`, `credits_after`, `date`, `deleted_info`) VALUES(?, 'user', ?, ?, null, ?, ?, ?, ?);", $rUserInfo['id'], 'adjust_credits', $rID, intval($rCredits), $rOwnerCredits, time(), json_encode($rUser['data'])); - return array('status' => 'STATUS_SUCCESS'); - } - } - } - return array('status' => 'STATUS_FAILURE'); - } -} - -if (!function_exists('parseError')) { - function parseError($rArray) { - global $_ERRORS; - if (!(isset($rArray['status']) && is_numeric($rArray['status']))) { - } else { - $rArray['status'] = $_ERRORS[$rArray['status']]; - } - if ($rArray) { - } else { - $rArray['status'] = 'STATUS_NO_PERMISSIONS'; - } - return $rArray; - } -} diff --git a/src/Public/Controllers/Api/SimpleXMLExtended.php b/src/Public/Controllers/Api/SimpleXMLExtended.php new file mode 100644 index 00000000..8167d6af --- /dev/null +++ b/src/Public/Controllers/Api/SimpleXMLExtended.php @@ -0,0 +1,24 @@ + + * @copyright 2025-2026 Vateron Media + * @link https://github.com/Vateron-Media/\XC_VM + * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html + */ + +class SimpleXMLExtended extends \SimpleXMLElement { + public function addCData($rCData) { + $rNode = dom_import_simplexml($this); + $rRowner = $rNode->ownerDocument; + $rNode->appendChild($rRowner->createCDATASection($rCData)); + } +} diff --git a/src/Public/Controllers/Api/XPluginApiController.php b/src/Public/Controllers/Api/XPluginApiController.php index 450e0a09..cf674c59 100644 --- a/src/Public/Controllers/Api/XPluginApiController.php +++ b/src/Public/Controllers/Api/XPluginApiController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/BasePlayerController.php b/src/Public/Controllers/Player/BasePlayerController.php index 0f361f6d..772df128 100644 --- a/src/Public/Controllers/Player/BasePlayerController.php +++ b/src/Public/Controllers/Player/BasePlayerController.php @@ -1,5 +1,8 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/EpisodesController.php b/src/Public/Controllers/Player/EpisodesController.php index 6e141ec2..a5857b6d 100644 --- a/src/Public/Controllers/Player/EpisodesController.php +++ b/src/Public/Controllers/Player/EpisodesController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/HomeController.php b/src/Public/Controllers/Player/HomeController.php index d4199dd9..be90671e 100644 --- a/src/Public/Controllers/Player/HomeController.php +++ b/src/Public/Controllers/Player/HomeController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/ListingsController.php b/src/Public/Controllers/Player/ListingsController.php index 63051ebf..f150b03d 100644 --- a/src/Public/Controllers/Player/ListingsController.php +++ b/src/Public/Controllers/Player/ListingsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/LiveController.php b/src/Public/Controllers/Player/LiveController.php index 9de8f921..b75e1e6a 100644 --- a/src/Public/Controllers/Player/LiveController.php +++ b/src/Public/Controllers/Player/LiveController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/MoviesController.php b/src/Public/Controllers/Player/MoviesController.php index a734e871..d6e4d1da 100644 --- a/src/Public/Controllers/Player/MoviesController.php +++ b/src/Public/Controllers/Player/MoviesController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/PlayerLoginController.php b/src/Public/Controllers/Player/PlayerLoginController.php index 5b5697eb..20a7a3a8 100644 --- a/src/Public/Controllers/Player/PlayerLoginController.php +++ b/src/Public/Controllers/Player/PlayerLoginController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ @@ -47,7 +49,7 @@ class PlayerLoginController // Bootstrap: загружаем ядро для БД, settings, // destroySession() и других глобальных зависимостей. require_once MAIN_HOME . 'bootstrap.php'; - XC_Bootstrap::boot(XC_Bootstrap::CONTEXT_ADMIN); + \XC_Bootstrap::boot(\XC_Bootstrap::CONTEXT_ADMIN); // Start session if (session_status() === PHP_SESSION_NONE && !headers_sent()) { diff --git a/src/Public/Controllers/Player/PlayerLogoutController.php b/src/Public/Controllers/Player/PlayerLogoutController.php index e04fde9a..0c3e4478 100644 --- a/src/Public/Controllers/Player/PlayerLogoutController.php +++ b/src/Public/Controllers/Player/PlayerLogoutController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/PlayerMovieController.php b/src/Public/Controllers/Player/PlayerMovieController.php index eb88e214..18b4fa38 100644 --- a/src/Public/Controllers/Player/PlayerMovieController.php +++ b/src/Public/Controllers/Player/PlayerMovieController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/PlayerProfileController.php b/src/Public/Controllers/Player/PlayerProfileController.php index 85ef962a..27c3d5a7 100644 --- a/src/Public/Controllers/Player/PlayerProfileController.php +++ b/src/Public/Controllers/Player/PlayerProfileController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/PlayerProxyController.php b/src/Public/Controllers/Player/PlayerProxyController.php index dc10d480..d8437d88 100644 --- a/src/Public/Controllers/Player/PlayerProxyController.php +++ b/src/Public/Controllers/Player/PlayerProxyController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/PlayerResizeController.php b/src/Public/Controllers/Player/PlayerResizeController.php index ab3eaf59..3aaddd56 100644 --- a/src/Public/Controllers/Player/PlayerResizeController.php +++ b/src/Public/Controllers/Player/PlayerResizeController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Player/SeriesController.php b/src/Public/Controllers/Player/SeriesController.php index 8b7c6e71..5210a1b3 100644 --- a/src/Public/Controllers/Player/SeriesController.php +++ b/src/Public/Controllers/Player/SeriesController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/BaseResellerController.php b/src/Public/Controllers/Reseller/BaseResellerController.php index 5b39a983..e28ffda2 100644 --- a/src/Public/Controllers/Reseller/BaseResellerController.php +++ b/src/Public/Controllers/Reseller/BaseResellerController.php @@ -1,5 +1,8 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerApiController.php b/src/Public/Controllers/Reseller/ResellerApiController.php index cec5393f..9dd83568 100644 --- a/src/Public/Controllers/Reseller/ResellerApiController.php +++ b/src/Public/Controllers/Reseller/ResellerApiController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerCreatedChannelsController.php b/src/Public/Controllers/Reseller/ResellerCreatedChannelsController.php index 35b86dae..a4a8e5b1 100644 --- a/src/Public/Controllers/Reseller/ResellerCreatedChannelsController.php +++ b/src/Public/Controllers/Reseller/ResellerCreatedChannelsController.php @@ -1,12 +1,14 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerDashboardController.php b/src/Public/Controllers/Reseller/ResellerDashboardController.php index 0865651f..59167459 100644 --- a/src/Public/Controllers/Reseller/ResellerDashboardController.php +++ b/src/Public/Controllers/Reseller/ResellerDashboardController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerEditProfileController.php b/src/Public/Controllers/Reseller/ResellerEditProfileController.php index c740872d..799d4e0b 100644 --- a/src/Public/Controllers/Reseller/ResellerEditProfileController.php +++ b/src/Public/Controllers/Reseller/ResellerEditProfileController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerEnigmaController.php b/src/Public/Controllers/Reseller/ResellerEnigmaController.php index 5ceee34d..8cada5ca 100644 --- a/src/Public/Controllers/Reseller/ResellerEnigmaController.php +++ b/src/Public/Controllers/Reseller/ResellerEnigmaController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerEnigmasController.php b/src/Public/Controllers/Reseller/ResellerEnigmasController.php index 73ac7078..f66003fb 100644 --- a/src/Public/Controllers/Reseller/ResellerEnigmasController.php +++ b/src/Public/Controllers/Reseller/ResellerEnigmasController.php @@ -1,11 +1,13 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerEpgViewController.php b/src/Public/Controllers/Reseller/ResellerEpgViewController.php index f2ff4ed9..beba5f25 100644 --- a/src/Public/Controllers/Reseller/ResellerEpgViewController.php +++ b/src/Public/Controllers/Reseller/ResellerEpgViewController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerEpisodesController.php b/src/Public/Controllers/Reseller/ResellerEpisodesController.php index 2abcfe9b..461ef196 100644 --- a/src/Public/Controllers/Reseller/ResellerEpisodesController.php +++ b/src/Public/Controllers/Reseller/ResellerEpisodesController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerLineActivityController.php b/src/Public/Controllers/Reseller/ResellerLineActivityController.php index 41ad7cd9..f6a59e51 100644 --- a/src/Public/Controllers/Reseller/ResellerLineActivityController.php +++ b/src/Public/Controllers/Reseller/ResellerLineActivityController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerLineController.php b/src/Public/Controllers/Reseller/ResellerLineController.php index 802359d8..41019e15 100644 --- a/src/Public/Controllers/Reseller/ResellerLineController.php +++ b/src/Public/Controllers/Reseller/ResellerLineController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerLinesController.php b/src/Public/Controllers/Reseller/ResellerLinesController.php index 6ce79143..63db87e1 100644 --- a/src/Public/Controllers/Reseller/ResellerLinesController.php +++ b/src/Public/Controllers/Reseller/ResellerLinesController.php @@ -1,11 +1,13 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerLiveConnectionsController.php b/src/Public/Controllers/Reseller/ResellerLiveConnectionsController.php index db934ac4..6e0cdf38 100644 --- a/src/Public/Controllers/Reseller/ResellerLiveConnectionsController.php +++ b/src/Public/Controllers/Reseller/ResellerLiveConnectionsController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerLoginController.php b/src/Public/Controllers/Reseller/ResellerLoginController.php index daaeb125..5bc589ca 100644 --- a/src/Public/Controllers/Reseller/ResellerLoginController.php +++ b/src/Public/Controllers/Reseller/ResellerLoginController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ @@ -24,7 +26,7 @@ class ResellerLoginController { // Bootstrap (login page is in noBootstrapPages, so FC skips bootstrap) require_once MAIN_HOME . 'bootstrap.php'; - XC_Bootstrap::boot(XC_Bootstrap::CONTEXT_ADMIN); + \XC_Bootstrap::boot(\XC_Bootstrap::CONTEXT_ADMIN); // Already logged in → dashboard if (isset($_SESSION['reseller'])) { diff --git a/src/Public/Controllers/Reseller/ResellerLogoutController.php b/src/Public/Controllers/Reseller/ResellerLogoutController.php index db5c000d..951486ac 100644 --- a/src/Public/Controllers/Reseller/ResellerLogoutController.php +++ b/src/Public/Controllers/Reseller/ResellerLogoutController.php @@ -1,12 +1,14 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerMagController.php b/src/Public/Controllers/Reseller/ResellerMagController.php index e227bc18..d65ea896 100644 --- a/src/Public/Controllers/Reseller/ResellerMagController.php +++ b/src/Public/Controllers/Reseller/ResellerMagController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerMagsController.php b/src/Public/Controllers/Reseller/ResellerMagsController.php index e2baccf6..dcae51b0 100644 --- a/src/Public/Controllers/Reseller/ResellerMagsController.php +++ b/src/Public/Controllers/Reseller/ResellerMagsController.php @@ -1,11 +1,13 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerMoviesController.php b/src/Public/Controllers/Reseller/ResellerMoviesController.php index fa3de2a8..041e48ac 100644 --- a/src/Public/Controllers/Reseller/ResellerMoviesController.php +++ b/src/Public/Controllers/Reseller/ResellerMoviesController.php @@ -1,12 +1,14 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerPostController.php b/src/Public/Controllers/Reseller/ResellerPostController.php index 70e0b13f..b6ffbe39 100644 --- a/src/Public/Controllers/Reseller/ResellerPostController.php +++ b/src/Public/Controllers/Reseller/ResellerPostController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerRadiosController.php b/src/Public/Controllers/Reseller/ResellerRadiosController.php index 7060d529..b958dda9 100644 --- a/src/Public/Controllers/Reseller/ResellerRadiosController.php +++ b/src/Public/Controllers/Reseller/ResellerRadiosController.php @@ -1,12 +1,14 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerResizeController.php b/src/Public/Controllers/Reseller/ResellerResizeController.php index 523fd5a9..7b0d8d7a 100644 --- a/src/Public/Controllers/Reseller/ResellerResizeController.php +++ b/src/Public/Controllers/Reseller/ResellerResizeController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerSessionController.php b/src/Public/Controllers/Reseller/ResellerSessionController.php index ebdd9b33..a2ea60af 100644 --- a/src/Public/Controllers/Reseller/ResellerSessionController.php +++ b/src/Public/Controllers/Reseller/ResellerSessionController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerStreamsController.php b/src/Public/Controllers/Reseller/ResellerStreamsController.php index 6d56eed1..1729d639 100644 --- a/src/Public/Controllers/Reseller/ResellerStreamsController.php +++ b/src/Public/Controllers/Reseller/ResellerStreamsController.php @@ -1,12 +1,14 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerTableController.php b/src/Public/Controllers/Reseller/ResellerTableController.php index 8827983b..4f86a06e 100644 --- a/src/Public/Controllers/Reseller/ResellerTableController.php +++ b/src/Public/Controllers/Reseller/ResellerTableController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ @@ -47,7 +49,7 @@ class ResellerTableController extends BaseResellerController $rUserID = $db->get_row()['id']; $rIsAPI = true; require_once MAIN_HOME . 'bootstrap.php'; - XC_Bootstrap::boot(XC_Bootstrap::CONTEXT_ADMIN); + \XC_Bootstrap::boot(\XC_Bootstrap::CONTEXT_ADMIN); $rUserInfo = UserRepository::getRegisteredUserById($rUserID); $rPermissions = array_merge(AuthRepository::getPermissions($rUserInfo['member_group_id']), AuthRepository::getGroupPermissions($rUserInfo['id'])); $rPermissions['direct_reports'] = $rPermissions['direct_reports'] ?? []; diff --git a/src/Public/Controllers/Reseller/ResellerTicketController.php b/src/Public/Controllers/Reseller/ResellerTicketController.php index 6bce734a..305f03ed 100644 --- a/src/Public/Controllers/Reseller/ResellerTicketController.php +++ b/src/Public/Controllers/Reseller/ResellerTicketController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerTicketViewController.php b/src/Public/Controllers/Reseller/ResellerTicketViewController.php index 8c531dab..640878a8 100644 --- a/src/Public/Controllers/Reseller/ResellerTicketViewController.php +++ b/src/Public/Controllers/Reseller/ResellerTicketViewController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerTicketsController.php b/src/Public/Controllers/Reseller/ResellerTicketsController.php index d3b970bc..5d190d2a 100644 --- a/src/Public/Controllers/Reseller/ResellerTicketsController.php +++ b/src/Public/Controllers/Reseller/ResellerTicketsController.php @@ -1,12 +1,14 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerUserController.php b/src/Public/Controllers/Reseller/ResellerUserController.php index 716ede2c..e57c99d2 100644 --- a/src/Public/Controllers/Reseller/ResellerUserController.php +++ b/src/Public/Controllers/Reseller/ResellerUserController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerUserLogsController.php b/src/Public/Controllers/Reseller/ResellerUserLogsController.php index 77e47486..4338d0ed 100644 --- a/src/Public/Controllers/Reseller/ResellerUserLogsController.php +++ b/src/Public/Controllers/Reseller/ResellerUserLogsController.php @@ -1,11 +1,13 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/ResellerUsersController.php b/src/Public/Controllers/Reseller/ResellerUsersController.php index 2f32d561..902cc0d5 100644 --- a/src/Public/Controllers/Reseller/ResellerUsersController.php +++ b/src/Public/Controllers/Reseller/ResellerUsersController.php @@ -1,11 +1,13 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ diff --git a/src/Public/Controllers/Reseller/TableController.php b/src/Public/Controllers/Reseller/TableController.php index b41812cd..e1f72b36 100644 --- a/src/Public/Controllers/Reseller/TableController.php +++ b/src/Public/Controllers/Reseller/TableController.php @@ -1,5 +1,7 @@ * @copyright 2025-2026 Vateron Media - * @link https://github.com/Vateron-Media/XC_VM + * @link https://github.com/Vateron-Media/\XC_VM * @license AGPL-3.0 https://www.gnu.org/licenses/agpl-3.0.html */ @@ -45,7 +47,7 @@ if (isset(RequestManager::getAll()['api_key'])) { $rUserID = $db->get_row()['id']; $rIsAPI = true; require_once MAIN_HOME . 'bootstrap.php'; - XC_Bootstrap::boot(XC_Bootstrap::CONTEXT_ADMIN); + \XC_Bootstrap::boot(\XC_Bootstrap::CONTEXT_ADMIN); $rUserInfo = UserRepository::getRegisteredUserById($rUserID); $rPermissions = array_merge(AuthRepository::getPermissions($rUserInfo['member_group_id']), AuthRepository::getGroupPermissions($rUserInfo['id'])); if (0 >= strlen($rUserInfo['timezone'])) { diff --git a/src/Public/index.php b/src/Public/index.php index 5159dc48..58b94d9b 100644 --- a/src/Public/index.php +++ b/src/Public/index.php @@ -1,5 +1,14 @@