diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
index 80aed3e9..79622c69 100644
--- a/ARCHITECTURE.md
+++ b/ARCHITECTURE.md
@@ -894,8 +894,8 @@ interface ModuleInterface {
| 50+ `define()` статусов | `constants.php` |
| `Database` creation | `core/Container/ServiceContainer.php` |
| `CoreUtilities::init()` | `bootstrap.php` |
-| `$rCountryCodes`, `$rCountries` | `resources/data/countries.php` |
-| `$rPermissions` | `resources/data/permissions.php` → `core/Auth/Authorization.php` |
+| `$rCountryCodes`, `$rCountries` | `resources/data/admin_constants.php` |
+| `$rPermissions` | `resources/data/admin_constants.php` → `core/Auth/Authorization.php` |
| `getUserInfo()` | `domain/User/UserRepository.php` |
| `getSeriesList()`, `updateSeries()` | `domain/Vod/SeriesService.php` (Repository влит — §2.4) |
| `secondsToTime()` | `core/Util/TimeUtils.php` |
@@ -1093,6 +1093,55 @@ modules/
---
+### 5.1 includes/ — Устаревшие файлы
+
+```
+includes/
+├── admin.php # ~150 глобальных функций -> proxy к domain/*/Service.php
+├── admin_api.php # ~80 методов класса AdminAPI -> proxy к domain/*/Service.php
+├── reseller_api.php # ~9 методов класса ResellerAPI
+├── CoreUtilities.php # ~135 статических методов -> proxy к core/ и domain/
+├── StreamingUtilities.php # ~66 статических методов -> proxy к streaming/
+├── ts.php # Timeshift утилиты
+├── bootstrap/ # Старые файлы инициализации admin
+│ ├── admin_bootstrap.php
+│ ├── admin_runtime.php
+│ └── admin_session.php
+├── api/ # API-обработчики
+│ ├── admin/
+│ └── reseller/
+├── cli/ # CLI-скрипты (monitor, balancer, watchdog и т.д.)
+├── data/ # Статические данные (permissions)
+├── langs/ # Файлы локализации (en.ini, ru.ini, de.ini, ...)
+├── libs/ # Сторонние библиотеки
+│ ├── Logger.php
+│ ├── AsyncFileOperations.php
+│ ├── Dropbox.php
+│ ├── TMDb/
+│ └── ...
+└── python/ # Python-скрипты
+```
+
+**Статус**: Все 150 функций `admin.php` и 135 методов `CoreUtilities` уже являются proxy-обёртками, делегирующими в `domain/` и `core/`. После завершения миграции файлы будут удалены.
+
+### 5.2 admin/ — Легаси admin-страницы
+
+~120 PHP-файлов — старые admin-страницы, которые содержали SQL+HTML в одном файле. **Заменены** на `interfaces/Http/Controllers/Admin/` + `interfaces/Http/Views/admin/`.
+
+### 5.3 reseller/ — Легаси reseller-страницы
+
+~35 PHP-файлов — аналогично admin/, но для реселлерской панели. **Заменены** на `interfaces/Http/Controllers/Reseller/` + `interfaces/Http/Views/reseller/`.
+
+### 5.4 ministra/ — Stalker Portal JS
+
+JavaScript-файлы для поддержки Stalker Portal (MAG-устройства). Не PHP — отдаются nginx напрямую. Сохраняется как есть.
+
+### 5.5 player/ — Встроенный web-плеер
+
+Мини-приложение (PHP + JS + CSS) для веб-отображения потоков. Имеет собственные `header.php`, `footer.php`, `functions.php`. Сохраняется как есть до отдельного рефакторинга.
+
+---
+
## 8. Варианты сборки: MAIN vs LoadBalancer
### 8.1. Два артефакта из одной кодовой базы
@@ -1374,7 +1423,7 @@ lb_copy_files:
#### Шаг 1.7.6 — RBAC / Авторизация ✅
- ✅ Извлечь `hasPermissions()` (стр. 582–619) и `hasResellerPermissions()` (стр. 575–581)
-- ✅ Массив `$rAdvPermissions` → `resources/data/permissions.php`
+- ✅ Массив `$rAdvPermissions` → `resources/data/admin_constants.php`
- ✅ Proxy: глобальные функции в `admin.php` → `Authorization::check()`
#### Шаг 1.7.7 — Аутентификация ✅
@@ -1905,15 +1954,11 @@ reseller/api.php (997 стр.) → ResellerApiController (ограничен
### Фаза 7: Миграция admin.php bootstrap
`admin.php` (4448 стр.) — после извлечения всех функций в domain/.
+#### Шаг 7.1 — Вынос inline-данных ✅
+- ✅ Данные bootstrap (`rMAGs`, `rCountryCodes`, `rCountries`, `rAdvPermissions`) консолидированы в `resources/data/admin_constants.php`
+- ✅ Отдельный `resources/data/permissions.php` удалён
-#### Шаг 7.1 — Вынос inline-данных
-```
-$rCountryCodes, $rCountries → resources/data/countries.php
-$rTimezones → resources/data/timezones.php
-$rMacTypes → resources/data/mac_types.php
-```
-
-#### Шаг 7.2 — Замена процедурного bootstrap
+#### Шаг 7.2 — Замена процедурного bootstrap 🔄
```
admin.php::initDatabase() → ServiceContainer::get('db')
admin.php::CoreUtilities::init() → bootstrap.php
@@ -1922,11 +1967,89 @@ admin.php::$rPermissions → Authorization::getPermissions()
admin.php::Translator init → ServiceContainer::get('translator')
```
-#### Шаг 7.3 — Удаление admin.php
+- ✅ Первый инкремент: инициализация runtime в `includes/admin.php` вынесена в `bootstrapAdminRuntime()` (поведение сохранено)
+- ✅ Второй инкремент: session/runtime-логика вынесена в `includes/bootstrap/admin_session.php` и `includes/bootstrap/admin_runtime.php` (без изменения поведения)
+- ✅ Третий инкремент: `includes/bootstrap/admin_runtime.php` переключён на `XC_Bootstrap::boot(XC_Bootstrap::CONTEXT_ADMIN)` с legacy fallback
+- ✅ Четвёртый инкремент: прямые `require_once` зависимостей (`DatabaseHandler/CoreUtilities/API/Translator/MobileDetect`) удалены из `includes/admin.php` и централизованы в `includes/bootstrap/admin_runtime.php`
+- ✅ Пятый инкремент: `includes/admin.php` больше не подключает `www/constants.php` напрямую — инициализация идёт через bootstrap-поток
+- ✅ Шестой инкремент: убрана двойная `shutdown`-регистрация — в bootstrap-ветке используется `XC_Bootstrap`, в legacy fallback регистрируется локальный close-db shutdown callback
+- ✅ Седьмой инкремент: `STATUS_*` константы удалены из `includes/admin.php` и централизованы через `bootstrapAdminStatusConstants()` (`XC_Bootstrap::defineStatusConstants()` + fallback)
+- ✅ Восьмой инкремент: bootstrap-цепочка в `includes/admin.php` сведена к фасаду `includes/bootstrap/admin_bootstrap.php` (`bootstrapAdminInclude()`)
+
+#### Шаг 7.3 — Удаление proxy-обёрток из admin.php ✅
- Все функции уже в domain/ (proxy-вызовы)
- Все данные в resources/data/
- Bootstrap через `bootstrap.php`
-- `admin.php` → тонкий require-файл (< 50 строк) или удаляется
+- `admin.php` — сокращён с ~4448 до ~3070 строк (удалено 40 proxy-определений)
+
+**Статус (7.3 завершён):**
+- ✅ Первый инкремент: пакет простых proxy-обёрток вынесен из `includes/admin.php` в `includes/bootstrap/admin_proxies.php`
+- ✅ Второй инкремент: вынесены proxy/report/permission-обёртки (`getStreamArguments`, `getTranscodeProfiles`, `getResellers`, `getDirectReports`, `hasPermissions` и связанный блок) в `includes/bootstrap/admin_proxies.php`
+- ✅ Третий инкремент: начат прямой отказ от proxy-call-site — HMAC-ветка переведена на прямые вызовы `AuthRepository::*`, proxy `getHMACTokens/getHMACToken` удалены
+- ✅ Четвёртый инкремент: массовая замена всех внешних call-site (560+) для proxy-функций:
+ - `getBouquets()` → `BouquetService::getAllSimple()` (47 call-sites)
+ - `getStreamingServers()` → `ServerRepository::getStreamingSimple($rPermissions, $type)` (29 call-sites)
+ - `getStream()` → `StreamRepository::getById($rID)` (~30 call-sites)
+ - `getUser()` → `UserRepository::getLineById($rID)` (~34 call-sites)
+ - `getRegisteredUser()` → `UserRepository::getRegisteredUserById($rID)` (~48 call-sites)
+ - `getBouquetOrder()` → `BouquetService::getOrder()` (6 call-sites)
+ - `getMemberGroup()` → `GroupService::getById($rID)` (4 call-sites)
+ - `getBlockedIPs()` → `BlocklistService::getBlockedIPsSimple()` (2 call-sites)
+ - `getRTMPIPs()` → `BlocklistService::getRTMPIPsSimple()` (2 call-sites)
+ - `getSSLLog()` → `ServerRepository::getSSLLog(...)` (1 call-site)
+ - `getWatchdog()` → `WatchdogMonitor::getWatchdog(...)` (1 call-site)
+ - `getIP()` → `CoreUtilities::getUserIP()` (2 call-sites)
+ - `getFPMStatus()` → `systemapirequest(...)` inline (1 call-site)
+ - И ещё ~20 proxy-функций с 0 внешних вызовов
+- ✅ Пятый инкремент: все 40 proxy-определений удалены из `admin.php`
+- ✅ Рефакторинг: `PackageService::process()` — удалены callback-параметры `getBouquetOrder`/`sortArrayByArray`, заменены прямыми вызовами `BouquetService::getOrder()`
+- ⚠️ Оставлены: `getCategories()` (~15 внешних вызовов, не чистый proxy — трансформирует ключи), `getOutputs()` (3 внешних вызова, собственная SQL-логика)
+
+---
+
+### Шаг 7.4 — Устранение параметра `$db` из Domain-классов (global $db)
+
+**Суть:** Все 28 Domain-классов (Service/Repository) принимали `$db` как параметр метода. Рефакторинг: убрать `$db` из сигнатур, внутри каждого метода объявить `global $db;`.
+
+**Затронутые классы (100 методов):**
+- `StreamRepository` (7), `StreamService` (4), `StreamProcess` (13), `ChannelService` (3)
+- `SeriesService` (3), `MovieService` (3), `EpisodeService` (2), `PlaylistGenerator` (1)
+- `CronGenerator` (1), `ConnectionTracker` (2), `ConnectionLimiter` (3), `CategoryService` (3)
+- `UserService` (2), `UserRepository` (5), `GroupService` (2), `PackageService` (2)
+- `LineRepository` (1), `LineService` (4), `SettingsService` (3), `ServerRepository` (5)
+- `ServerService` (4), `BlocklistService` (10), `EpgService` (3), `AuthService` (3)
+- `BouquetService` (8), `TokenAuth` (1), `FFmpegCommand` (1), `WatchdogMonitor` (1)
+
+**Обновлено ~357 call-sites** по всей кодовой базе:
+- `src/includes/CoreUtilities.php` — 28 вызовов
+- `src/includes/admin_api.php` — 60 вызовов
+- `src/includes/reseller_api.php` — 15 вызовов
+- `src/includes/admin.php` — 16 вызовов
+- `src/includes/StreamingUtilities.php` — 6 вызовов
+- `src/includes/bootstrap/admin_runtime.php` — 3 вызова
+- `src/includes/api/admin/` — 20 вызовов
+- `src/includes/api/reseller/` — 11 вызовов
+- `src/admin/*.php` — ~100 вызовов
+- `src/reseller/*.php` — 18 вызовов
+- `src/interfaces/Http/Controllers/Admin/` — 37 вызовов
+- `src/domain/` (кросс-вызовы) — 15 вызовов
+- `src/modules/` + `src/crons/` — 11 вызовов
+
+**Паттерн (до/после):**
+```php
+// Было:
+public static function getById($db, $rID) { ... }
+StreamRepository::getById($db, $rStreamID);
+
+// Стало:
+public static function getById($rID) {
+ global $db;
+ ...
+}
+StreamRepository::getById($rStreamID);
+```
+
+**Статус:** ✅ Завершено
---
diff --git a/src/admin/api.php b/src/admin/api.php
index 76cbf6af..9400937c 100644
--- a/src/admin/api.php
+++ b/src/admin/api.php
@@ -16,7 +16,7 @@ if (isset($_SESSION['hash'])) {
if (isset(CoreUtilities::$rRequest['action'])) {
if (CoreUtilities::$rRequest['action'] == 'stream') {
- if (hasPermissions('adv', 'edit_stream')) {
+ if (Authorization::check('adv', 'edit_stream')) {
$rStreamID = intval(CoreUtilities::$rRequest['stream_id']);
$rServerID = intval(CoreUtilities::$rRequest['server_id']);
$rSub = CoreUtilities::$rRequest['sub'];
@@ -47,7 +47,7 @@ if (isset($_SESSION['hash'])) {
} else {
if ($rSub == 'force') {
$rForceID = intval(CoreUtilities::$rRequest['force_id']);
- $rServerIDs = array_keys(getStreamSys($rStreamID));
+ $rServerIDs = array_keys(StreamRepository::getSystemRows($rStreamID));
if (0 >= count($rServerIDs)) {
echo json_encode(array('result' => false));
@@ -108,7 +108,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'movie') {
- if (hasPermissions('adv', 'edit_movie')) {
+ if (Authorization::check('adv', 'edit_movie')) {
$rStreamID = intval(CoreUtilities::$rRequest['stream_id']);
$rServerID = intval(CoreUtilities::$rRequest['server_id']);
$rSub = CoreUtilities::$rRequest['sub'];
@@ -181,7 +181,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'episode') {
- if (hasPermissions('adv', 'edit_episode')) {
+ if (Authorization::check('adv', 'edit_episode')) {
$rStreamID = intval(CoreUtilities::$rRequest['stream_id']);
$rServerID = intval(CoreUtilities::$rRequest['server_id']);
$rSub = CoreUtilities::$rRequest['sub'];
@@ -254,7 +254,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'line') {
- if (hasPermissions('adv', 'edit_user')) {
+ if (Authorization::check('adv', 'edit_user')) {
$rUserID = intval(CoreUtilities::$rRequest['user_id']);
$rSub = CoreUtilities::$rRequest['sub'];
@@ -325,7 +325,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'line_activity') {
- if (hasPermissions('adv', 'connection_logs')) {
+ if (Authorization::check('adv', 'connection_logs')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub != 'kill') {
@@ -345,7 +345,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'process') {
- if (hasPermissions('adv', 'process_monitor')) {
+ if (Authorization::check('adv', 'process_monitor')) {
systemapirequest(CoreUtilities::$rRequest['server'], array('action' => 'kill_pid', 'pid' => intval(CoreUtilities::$rRequest['pid'])));
echo json_encode(array('result' => true));
@@ -357,8 +357,8 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'adjust_credits') {
- if (hasPermissions('adv', 'edit_reguser')) {
- $rUser = getRegisteredUser(CoreUtilities::$rRequest['id']);
+ if (Authorization::check('adv', 'edit_reguser')) {
+ $rUser = UserRepository::getRegisteredUserById(CoreUtilities::$rRequest['id']);
if ($rUser && is_numeric(CoreUtilities::$rRequest['credits'])) {
$rCredits = intval($rUser['credits']) + intval(CoreUtilities::$rRequest['credits']);
@@ -386,7 +386,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'reg_user') {
- if (hasPermissions('adv', 'edit_reguser')) {
+ if (Authorization::check('adv', 'edit_reguser')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -420,7 +420,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'ticket') {
- if (hasPermissions('adv', 'ticket')) {
+ if (Authorization::check('adv', 'ticket')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -454,7 +454,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'mag') {
- if (hasPermissions('adv', 'edit_mag')) {
+ if (Authorization::check('adv', 'edit_mag')) {
$rSub = CoreUtilities::$rRequest['sub'];
$rMagDetails = getMag(intval(CoreUtilities::$rRequest['mag_id']));
@@ -532,7 +532,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'enigma') {
- if (hasPermissions('adv', 'edit_e2')) {
+ if (Authorization::check('adv', 'edit_e2')) {
$rSub = CoreUtilities::$rRequest['sub'];
$rE2Details = getEnigma(intval(CoreUtilities::$rRequest['e2_id']));
@@ -610,7 +610,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'mag_event') {
- if (hasPermissions('adv', 'manage_events')) {
+ if (Authorization::check('adv', 'manage_events')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -630,7 +630,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'regenerate_cache') {
- if (hasPermissions('adv', 'backups')) {
+ if (Authorization::check('adv', 'backups')) {
shell_exec(PHP_BIN . ' ' . CRON_PATH . 'cache_engine.php "force"');
echo json_encode(array('result' => true));
@@ -642,7 +642,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'enable_cache') {
- if (hasPermissions('adv', 'backups')) {
+ if (Authorization::check('adv', 'backups')) {
$db->query('UPDATE `settings` SET `enable_cache` = 1;');
if (!file_exists(CACHE_TMP_PATH . 'settings')) {
@@ -668,7 +668,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'disable_cache') {
- if (hasPermissions('adv', 'backups')) {
+ if (Authorization::check('adv', 'backups')) {
$db->query('UPDATE `settings` SET `enable_cache` = 0;');
if (!file_exists(CACHE_TMP_PATH . 'settings')) {
@@ -687,7 +687,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'epg') {
- if (hasPermissions('adv', 'epg_edit')) {
+ if (Authorization::check('adv', 'epg_edit')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -714,7 +714,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'provider') {
- if (hasPermissions('adv', 'streams')) {
+ if (Authorization::check('adv', 'streams')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -741,7 +741,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'profile') {
- if (hasPermissions('adv', 'tprofiles')) {
+ if (Authorization::check('adv', 'tprofiles')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -761,7 +761,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'series') {
- if (hasPermissions('adv', 'edit_series')) {
+ if (Authorization::check('adv', 'edit_series')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -781,8 +781,8 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'kill_watch') {
- if (hasPermissions('adv', 'folder_watch')) {
- killWatchFolder();
+ if (Authorization::check('adv', 'folder_watch')) {
+ WatchService::killWatch($db);
echo json_encode(array('result' => true));
exit();
@@ -793,7 +793,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'kill_plex') {
- if (hasPermissions('adv', 'folder_watch')) {
+ if (Authorization::check('adv', 'folder_watch')) {
killPlexSync();
echo json_encode(array('result' => true));
@@ -805,7 +805,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'folder') {
- if (hasPermissions('adv', 'folder_watch')) {
+ if (Authorization::check('adv', 'folder_watch')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -819,7 +819,7 @@ if (isset($_SESSION['hash'])) {
$rFolder = getWatchFolder(CoreUtilities::$rRequest['folder_id']);
if ($rFolder) {
- forceWatch($rFolder['server_id'], $rFolder['id']);
+ WatchService::forceWatch($rFolder['server_id'], $rFolder['id']);
echo json_encode(array('result' => true));
exit();
@@ -840,7 +840,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'library') {
- if (hasPermissions('adv', 'folder_watch')) {
+ if (Authorization::check('adv', 'folder_watch')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -854,7 +854,7 @@ if (isset($_SESSION['hash'])) {
$rFolder = getWatchFolder(CoreUtilities::$rRequest['folder_id']);
if ($rFolder) {
- forcePlex($rFolder['server_id'], $rFolder['id']);
+ PlexService::forcePlex($rFolder['server_id'], $rFolder['id'], 'systemapirequest');
echo json_encode(array('result' => true));
exit();
@@ -875,7 +875,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'useragent') {
- if (hasPermissions('adv', 'block_uas')) {
+ if (Authorization::check('adv', 'block_uas')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -895,7 +895,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'isp') {
- if (hasPermissions('adv', 'block_isps')) {
+ if (Authorization::check('adv', 'block_isps')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -915,7 +915,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'mysql_syslog') {
- if (hasPermissions('adv', 'block_ips')) {
+ if (Authorization::check('adv', 'block_ips')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'block' && filter_var(CoreUtilities::$rRequest['ip'], FILTER_VALIDATE_IP)) {
@@ -936,7 +936,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'ip') {
- if (hasPermissions('adv', 'block_ips')) {
+ if (Authorization::check('adv', 'block_ips')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -956,7 +956,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'rtmp_ip') {
- if (hasPermissions('adv', 'add_rtmp')) {
+ if (Authorization::check('adv', 'add_rtmp')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -976,7 +976,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'watch_output') {
- if (hasPermissions('adv', 'folder_watch_output')) {
+ if (Authorization::check('adv', 'folder_watch_output')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -996,12 +996,12 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'server') {
- if (hasPermissions('adv', 'edit_server')) {
+ if (Authorization::check('adv', 'edit_server')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
if ($rServers[CoreUtilities::$rRequest['server_id']]['is_main'] == 0) {
- deleteServer(CoreUtilities::$rRequest['server_id']);
+ ServerRepository::deleteById(CoreUtilities::$rSettings, 'getStreamingServersByID', CoreUtilities::$rRequest['server_id']);
echo json_encode(array('result' => true));
exit();
@@ -1144,11 +1144,11 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'proxy') {
- if (hasPermissions('adv', 'edit_server')) {
+ if (Authorization::check('adv', 'edit_server')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
- deleteServer(CoreUtilities::$rRequest['server_id']);
+ ServerRepository::deleteById(CoreUtilities::$rSettings, 'getStreamingServersByID', CoreUtilities::$rRequest['server_id']);
echo json_encode(array('result' => true));
exit();
@@ -1208,11 +1208,11 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'package') {
- if (hasPermissions('adv', 'edit_package')) {
+ if (Authorization::check('adv', 'edit_package')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
- deletePackage(CoreUtilities::$rRequest['package_id']);
+ PackageService::deleteById('getPackage', CoreUtilities::$rRequest['package_id']);
echo json_encode(array('result' => true));
exit();
@@ -1235,7 +1235,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'code') {
- if (hasPermissions('adv', 'add_code')) {
+ if (Authorization::check('adv', 'add_code')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -1255,7 +1255,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'hmac') {
- if (hasPermissions('adv', 'add_hmac')) {
+ if (Authorization::check('adv', 'add_hmac')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -1275,11 +1275,11 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'group') {
- if (hasPermissions('adv', 'edit_group')) {
+ if (Authorization::check('adv', 'edit_group')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
- deleteGroup(CoreUtilities::$rRequest['group_id']);
+ GroupService::deleteById(CoreUtilities::$rRequest['group_id']);
echo json_encode(array('result' => true));
exit();
@@ -1302,7 +1302,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'bouquet') {
- if (hasPermissions('adv', 'edit_bouquet')) {
+ if (Authorization::check('adv', 'edit_bouquet')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -1322,7 +1322,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'category') {
- if (hasPermissions('adv', 'edit_cat')) {
+ if (Authorization::check('adv', 'edit_cat')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -1358,7 +1358,7 @@ if (isset($_SESSION['hash'])) {
if (!isset(CoreUtilities::$rRequest['user_id'])) {
} else {
- if (!($rUser = getUser(CoreUtilities::$rRequest['user_id']))) {
+ if (!($rUser = UserRepository::getLineById(CoreUtilities::$rRequest['user_id']))) {
} else {
if (time() < $rUser['exp_date']) {
$rData['exp_date'] = date('Y-m-d', strtotime('+' . intval($rData['official_duration']) . ' ' . $rData['official_duration_in'], $rUser['exp_date']));
@@ -1504,7 +1504,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'stats') {
- if (hasPermissions('adv', 'index')) {
+ if (Authorization::check('adv', 'index')) {
$rServers = CoreUtilities::getServers(true);
$rReturn = array('cpu' => 0, 'mem' => 0, 'io' => 0, 'fs' => 0, 'uptime' => '--', 'bytes_sent' => 0, 'bytes_received' => 0, 'open_connections' => 0, 'total_connections' => 0, 'online_users' => 0, 'total_users' => 0, 'total_streams' => 0, 'total_running_streams' => 0, 'offline_streams' => 0, 'requests_per_second' => 0, 'servers' => array());
@@ -1719,7 +1719,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'header_stats') {
- if (hasPermissions('adv', 'index')) {
+ if (Authorization::check('adv', 'index')) {
$rReturn = array('bytes_sent' => 0, 'bytes_received' => 0, 'total_connections' => 0, 'total_users' => 0, 'total_running_streams' => 0, 'offline_streams' => 0);
if (!CoreUtilities::$rSettings['redis_handler']) {
@@ -1781,7 +1781,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'review_selection') {
- if (hasPermissions('adv', 'edit_cchannel') || hasPermissions('adv', 'create_channel')) {
+ if (Authorization::check('adv', 'edit_cchannel') || Authorization::check('adv', 'create_channel')) {
$rReturn = array('streams' => array(), 'result' => true);
if (!isset(CoreUtilities::$rRequest['data'])) {
@@ -1806,7 +1806,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'review_bouquet') {
- if (hasPermissions('adv', 'edit_bouquet') || hasPermissions('adv', 'add_bouquet')) {
+ if (Authorization::check('adv', 'edit_bouquet') || Authorization::check('adv', 'add_bouquet')) {
$rReturn = array('streams' => array(), 'movies' => array(), 'series' => array(), 'radios' => array(), 'result' => true);
if (!isset(CoreUtilities::$rRequest['data']['stream'])) {
@@ -1871,7 +1871,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'epglist') {
- if (hasPermissions('adv', 'import_streams')) {
+ if (Authorization::check('adv', 'import_streams')) {
$rGroups = array();
$rReturn = array('total_count' => 0, 'items' => array(), 'result' => true);
@@ -1905,7 +1905,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'serieslist') {
- if (hasPermissions('adv', 'episodes')) {
+ if (Authorization::check('adv', 'episodes')) {
$rReturn = array('total_count' => 0, 'items' => array(), 'result' => true);
if (!isset(CoreUtilities::$rRequest['search'])) {
@@ -1938,7 +1938,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'reguserlist') {
- if (hasPermissions('adv', 'mng_regusers') || hasPermissions('adv', 'manage_mag') || hasPermissions('adv', 'manage_e2') || hasPermissions('adv', 'edit_e2') || hasPermissions('adv', 'add_e2') || hasPermissions('adv', 'add_mag') || hasPermissions('adv', 'edit_mag')) {
+ if (Authorization::check('adv', 'mng_regusers') || Authorization::check('adv', 'manage_mag') || Authorization::check('adv', 'manage_e2') || Authorization::check('adv', 'edit_e2') || Authorization::check('adv', 'add_e2') || Authorization::check('adv', 'add_mag') || Authorization::check('adv', 'edit_mag')) {
$rReturn = array('total_count' => 0, 'items' => array(), 'result' => true);
if (!isset(CoreUtilities::$rRequest['search'])) {
@@ -1971,7 +1971,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'userlist') {
- if (hasPermissions('adv', 'edit_e2') || hasPermissions('adv', 'add_e2') || hasPermissions('adv', 'add_mag') || hasPermissions('adv', 'edit_mag')) {
+ if (Authorization::check('adv', 'edit_e2') || Authorization::check('adv', 'add_e2') || Authorization::check('adv', 'add_mag') || Authorization::check('adv', 'edit_mag')) {
$rReturn = array('total_count' => 0, 'items' => array(), 'result' => true);
if (!isset(CoreUtilities::$rRequest['search'])) {
@@ -2008,7 +2008,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'streamlist') {
- if (hasPermissions('adv', 'manage_mag')) {
+ if (Authorization::check('adv', 'manage_mag')) {
$rReturn = array('total_count' => 0, 'items' => array(), 'result' => true);
if (!isset(CoreUtilities::$rRequest['search'])) {
@@ -2041,7 +2041,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'adaptivelist') {
- if (hasPermissions('adv', 'edit_stream')) {
+ if (Authorization::check('adv', 'edit_stream')) {
$rReturn = array('total_count' => 0, 'items' => array(), 'result' => true);
if (!isset(CoreUtilities::$rRequest['search'])) {
@@ -2074,7 +2074,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'titlesync') {
- if (hasPermissions('adv', 'edit_stream')) {
+ if (Authorization::check('adv', 'edit_stream')) {
$rReturn = array('total_count' => 0, 'items' => array(), 'result' => true);
if (!isset(CoreUtilities::$rRequest['search'])) {
@@ -2117,7 +2117,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'force_epg') {
- if (hasPermissions('adv', 'epg')) {
+ if (Authorization::check('adv', 'epg')) {
shell_exec(PHP_BIN . ' ' . CRON_PATH . 'epg.php > /dev/null 2>/dev/null &');
echo json_encode(array('result' => true));
@@ -2129,7 +2129,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'tmdb_search') {
- if (hasPermissions('adv', 'add_series') || hasPermissions('adv', 'edit_series') || hasPermissions('adv', 'add_movie') || hasPermissions('adv', 'edit_movie') || hasPermissions('adv', 'add_episode') || hasPermissions('adv', 'edit_episode')) {
+ if (Authorization::check('adv', 'add_series') || Authorization::check('adv', 'edit_series') || Authorization::check('adv', 'add_movie') || Authorization::check('adv', 'edit_movie') || Authorization::check('adv', 'add_episode') || Authorization::check('adv', 'edit_episode')) {
$rTerm = CoreUtilities::$rRequest['term'];
if (0 >= strlen($rTerm)) {
@@ -2206,7 +2206,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'tmdb') {
- if (hasPermissions('adv', 'add_series') || hasPermissions('adv', 'edit_series') || hasPermissions('adv', 'add_movie') || hasPermissions('adv', 'edit_movie') || hasPermissions('adv', 'add_episode') || hasPermissions('adv', 'edit_episode')) {
+ if (Authorization::check('adv', 'add_series') || Authorization::check('adv', 'edit_series') || Authorization::check('adv', 'add_movie') || Authorization::check('adv', 'edit_movie') || Authorization::check('adv', 'add_episode') || Authorization::check('adv', 'edit_episode')) {
include MAIN_HOME . 'includes/libs/tmdb.php';
if (0 < strlen(CoreUtilities::$rRequest['language'])) {
@@ -2250,7 +2250,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'listdir') {
- if (hasPermissions('adv', 'add_episode') || hasPermissions('adv', 'edit_episode') || hasPermissions('adv', 'add_movie') || hasPermissions('adv', 'edit_movie') || hasPermissions('adv', 'create_channel') || hasPermissions('adv', 'edit_cchannel') || hasPermissions('adv', 'folder_watch_add')) {
+ if (Authorization::check('adv', 'add_episode') || Authorization::check('adv', 'edit_episode') || Authorization::check('adv', 'add_movie') || Authorization::check('adv', 'edit_movie') || Authorization::check('adv', 'create_channel') || Authorization::check('adv', 'edit_cchannel') || Authorization::check('adv', 'folder_watch_add')) {
if (CoreUtilities::$rRequest['filter'] == 'video') {
$rFilter = array('mp4', 'mkv', 'avi', 'mpg', 'flv', '3gp', 'm4v', 'wmv', 'mov', 'ts');
} else {
@@ -2277,7 +2277,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'fingerprint') {
- if (hasPermissions('adv', 'fingerprint')) {
+ if (Authorization::check('adv', 'fingerprint')) {
$rData = json_decode(CoreUtilities::$rRequest['data'], true);
$rActiveServers = array();
@@ -2364,7 +2364,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'restart_all_services') {
- if (hasPermissions('adv', 'servers')) {
+ if (Authorization::check('adv', 'servers')) {
foreach ($rServers as $rServer) {
if (!$rServer['server_online']) {
} else {
@@ -2381,7 +2381,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'restart_services') {
- if (hasPermissions('adv', 'edit_server')) {
+ if (Authorization::check('adv', 'edit_server')) {
if (!is_numeric(CoreUtilities::$rRequest['server_id'])) {
$rIDs = json_decode(CoreUtilities::$rRequest['server_id'], true);
} else {
@@ -2401,7 +2401,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'reboot_server') {
- if (hasPermissions('adv', 'edit_server')) {
+ if (Authorization::check('adv', 'edit_server')) {
if (!is_numeric(CoreUtilities::$rRequest['server_id'])) {
$rIDs = json_decode(CoreUtilities::$rRequest['server_id'], true);
} else {
@@ -2421,7 +2421,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'update_binaries') {
- if (hasPermissions('adv', 'edit_server')) {
+ if (Authorization::check('adv', 'edit_server')) {
if (!is_numeric(CoreUtilities::$rRequest['server_id'])) {
$rIDs = json_decode(CoreUtilities::$rRequest['server_id'], true);
} else {
@@ -2441,7 +2441,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'probe_stream') {
- if (hasPermissions('adv', 'add_stream') || hasPermissions('adv', 'edit_stream')) {
+ if (Authorization::check('adv', 'add_stream') || Authorization::check('adv', 'edit_stream')) {
$rAnalyseDuration = abs(intval(CoreUtilities::$rSettings['stream_max_analyze']));
$rTimeout = intval($rAnalyseDuration / 1000000) + CoreUtilities::$rSettings['probe_extra_wait'];
set_time_limit(intval($rTimeout));
@@ -2476,7 +2476,7 @@ if (isset($_SESSION['hash'])) {
}
if (!$rStreamInfo) {
- $rStreamInfo = probeSource($rServerID, CoreUtilities::$rRequest['url'], (CoreUtilities::$rRequest['user_agent'] ?: null), (CoreUtilities::$rRequest['http_proxy'] ?: null), (CoreUtilities::$rRequest['cookies'] ?: null), (CoreUtilities::$rRequest['headers'] ?: null))['data'];
+ $rStreamInfo = ServerRepository::probeSource('systemapirequest', $rServerID, CoreUtilities::$rRequest['url'], (CoreUtilities::$rRequest['user_agent'] ?: null), (CoreUtilities::$rRequest['http_proxy'] ?: null), (CoreUtilities::$rRequest['cookies'] ?: null), (CoreUtilities::$rRequest['headers'] ?: null))['data'];
$rStreamInfo['container'] = $rStreamInfo['format']['format_name'];
}
}
@@ -2538,7 +2538,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'check_stream') {
- if (hasPermissions('adv', 'add_stream') || hasPermissions('adv', 'edit_stream')) {
+ if (Authorization::check('adv', 'add_stream') || Authorization::check('adv', 'edit_stream')) {
$rAnalyseDuration = abs(intval(CoreUtilities::$rSettings['stream_max_analyze']));
$rTimeout = intval($rAnalyseDuration / 1000000) + CoreUtilities::$rSettings['probe_extra_wait'];
set_time_limit(intval($rTimeout));
@@ -2560,8 +2560,8 @@ if (isset($_SESSION['hash'])) {
$rCookie = '';
}
} else {
- $rStream = getStream(CoreUtilities::$rRequest['stream']);
- $rStreamOptions = getStreamOptions(CoreUtilities::$rRequest['stream']);
+ $rStream = StreamRepository::getById(CoreUtilities::$rRequest['stream']);
+ $rStreamOptions = StreamRepository::getOptions(CoreUtilities::$rRequest['stream']);
if (0 < strlen($rStreamOptions[1]['value'])) {
$rUA = ' -user_agent ' . escapeshellarg($rStreamOptions[1]['value']);
@@ -2659,7 +2659,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'clear_logs') {
- if (hasPermissions('adv', 'reg_userlog') || hasPermissions('adv', 'client_request_log') || hasPermissions('adv', 'connection_logs') || hasPermissions('adv', 'stream_errors') || hasPermissions('adv', 'credits_log') || hasPermissions('adv', 'folder_watch_settings')) {
+ if (Authorization::check('adv', 'reg_userlog') || Authorization::check('adv', 'client_request_log') || Authorization::check('adv', 'connection_logs') || Authorization::check('adv', 'stream_errors') || Authorization::check('adv', 'credits_log') || Authorization::check('adv', 'folder_watch_settings')) {
if (strlen(CoreUtilities::$rRequest['from']) == 0) {
$rStartTime = null;
} else {
@@ -2731,7 +2731,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'backup') {
- if (hasPermissions('adv', 'database')) {
+ if (Authorization::check('adv', 'database')) {
$rSub = CoreUtilities::$rRequest['sub'];
if ($rSub == 'delete') {
@@ -2798,7 +2798,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'send_event') {
- if (hasPermissions('adv', 'manage_events')) {
+ if (Authorization::check('adv', 'manage_events')) {
$rData = json_decode(CoreUtilities::$rRequest['data'], true);
if (!is_numeric($rData['id'])) {
@@ -2901,7 +2901,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'asn') {
- if (hasPermissions('adv', 'block_isps')) {
+ if (Authorization::check('adv', 'block_isps')) {
$rSub = CoreUtilities::$rRequest['sub'];
$rASN = CoreUtilities::$rRequest['id'];
@@ -2940,7 +2940,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'server_view') {
- if (hasPermissions('adv', 'add_server') || hasPermissions('adv', 'edit_server')) {
+ if (Authorization::check('adv', 'add_server') || Authorization::check('adv', 'edit_server')) {
if (isset($rServers[CoreUtilities::$rRequest['server_id']])) {
$rServer = $rServers[CoreUtilities::$rRequest['server_id']];
} else {
@@ -2970,11 +2970,11 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'server_stats') {
- if (hasPermissions('adv', 'add_server') || hasPermissions('adv', 'edit_server')) {
+ if (Authorization::check('adv', 'add_server') || Authorization::check('adv', 'edit_server')) {
$rID = intval(CoreUtilities::$rRequest['id']);
if (isset($rServers[$rID])) {
- $rWatchdog = getWatchdog($rID);
+ $rWatchdog = WatchdogMonitor::getWatchdog($rID);
$rReturn = array();
foreach ($rWatchdog as $rData) {
@@ -2995,7 +2995,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'rtmp_kill') {
- if (hasPermissions('adv', 'rtmp')) {
+ if (Authorization::check('adv', 'rtmp')) {
echo systemapirequest(intval(CoreUtilities::$rRequest['server']), array('action' => 'rtmp_kill', 'name' => CoreUtilities::$rRequest['name']));
exit();
@@ -3006,7 +3006,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'install_status') {
- if (hasPermissions('adv', 'add_server') || hasPermissions('adv', 'edit_server')) {
+ if (Authorization::check('adv', 'add_server') || Authorization::check('adv', 'edit_server')) {
CoreUtilities::$rServers = CoreUtilities::getServers(true);
$rServerID = intval(CoreUtilities::$rRequest['server_id']);
$rFilename = BIN_PATH . 'install/' . $rServerID . '.install';
@@ -3027,7 +3027,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'reinstall_server') {
- if (hasPermissions('adv', 'add_server') || hasPermissions('adv', 'edit_server')) {
+ if (Authorization::check('adv', 'add_server') || Authorization::check('adv', 'edit_server')) {
$rServerID = intval(CoreUtilities::$rRequest['server_id']);
if ($rServers[$rServerID]['server_type'] == 0) {
@@ -3064,8 +3064,8 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'fpm_status') {
- if (hasPermissions('adv', 'add_server') || hasPermissions('adv', 'edit_server')) {
- $rData = str_replace("\n", '
', getFPMStatus(CoreUtilities::$rRequest['server_id']));
+ if (Authorization::check('adv', 'add_server') || Authorization::check('adv', 'edit_server')) {
+ $rData = str_replace("\n", '
', systemapirequest(CoreUtilities::$rRequest['server_id'], array('action' => 'fpm_status')));
if (empty($rData)) {
$rData = 'No response from status page.';
@@ -3088,7 +3088,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'update_all_servers') {
- if (hasPermissions('adv', 'servers')) {
+ if (Authorization::check('adv', 'servers')) {
foreach ($rServers as $rServer) {
if ($rServer['server_online']) {
$db->query('INSERT INTO `signals`(`server_id`, `time`, `custom_data`) VALUES(?, ?, ?);', $rServer['id'], time(), json_encode(array('action' => 'update')));
@@ -3104,7 +3104,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'update_all_binaries') {
- if (hasPermissions('adv', 'servers')) {
+ if (Authorization::check('adv', 'servers')) {
foreach ($rServers as $rServer) {
if (!$rServer['server_online']) {
} else {
@@ -3121,7 +3121,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'disable_watch') {
- if (hasPermissions('adv', 'folder_watch_settings')) {
+ if (Authorization::check('adv', 'folder_watch_settings')) {
WatchService::disableWatch($db);
echo json_encode(array('result' => true));
@@ -3133,7 +3133,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'enable_watch') {
- if (hasPermissions('adv', 'folder_watch_settings')) {
+ if (Authorization::check('adv', 'folder_watch_settings')) {
WatchService::enableWatch($db);
echo json_encode(array('result' => true));
@@ -3145,7 +3145,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'disable_plex') {
- if (hasPermissions('adv', 'folder_watch_settings')) {
+ if (Authorization::check('adv', 'folder_watch_settings')) {
$db->query("UPDATE `watch_folders` SET `active` = 0 WHERE `type` = 'plex';");
echo json_encode(array('result' => true));
@@ -3157,7 +3157,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'enable_plex') {
- if (hasPermissions('adv', 'folder_watch_settings')) {
+ if (Authorization::check('adv', 'folder_watch_settings')) {
$db->query("UPDATE `watch_folders` SET `active` = 1 WHERE `type` = 'plex';");
echo json_encode(array('result' => true));
@@ -3169,9 +3169,9 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'plex_sections') {
- if (hasPermissions('adv', 'folder_watch_settings')) {
+ if (Authorization::check('adv', 'folder_watch_settings')) {
$rToken = CoreUtilities::getPlexToken(CoreUtilities::$rRequest['ip'], CoreUtilities::$rRequest['port'], CoreUtilities::$rRequest['username'], CoreUtilities::$rRequest['password']);
- $rSections = getPlexSections(CoreUtilities::$rRequest['ip'], CoreUtilities::$rRequest['port'], $rToken);
+ $rSections = PlexRepository::getPlexSections(CoreUtilities::$rRequest['ip'], CoreUtilities::$rRequest['port'], $rToken);
if ($rSections && 0 < count($rSections)) {
echo json_encode(array('result' => true, 'data' => $rSections));
@@ -3186,7 +3186,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'enable_handler') {
- if (hasPermissions('adv', 'backups')) {
+ if (Authorization::check('adv', 'backups')) {
$db->query('UPDATE `settings` SET `redis_handler` = 1;');
if (!file_exists(CACHE_TMP_PATH . 'settings')) {
@@ -3233,7 +3233,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'disable_handler') {
- if (hasPermissions('adv', 'backups')) {
+ if (Authorization::check('adv', 'backups')) {
$db->query('UPDATE `settings` SET `redis_handler` = 0;');
if (!file_exists(CACHE_TMP_PATH . 'settings')) {
@@ -3277,7 +3277,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'clear_redis') {
- if (hasPermissions('adv', 'backups')) {
+ if (Authorization::check('adv', 'backups')) {
CoreUtilities::$redis->flushAll();
echo json_encode(array('result' => true));
@@ -3289,7 +3289,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'report') {
- if (hasPermissions('adv', 'backups')) {
+ if (Authorization::check('adv', 'backups')) {
$rURL = pathinfo('http://127.0.0.1:' . $rServers[SERVER_ID]['http_broadcast_port'] . $_SERVER['REQUEST_URI'])['dirname'] . '/table';
set_time_limit(60);
ini_set('memory_limit', '-1');
@@ -3319,7 +3319,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'decrypt_text') {
- if (hasPermissions('adv', 'stream_tools')) {
+ if (Authorization::check('adv', 'stream_tools')) {
$rDecryptedArray = array();
$rText = (CoreUtilities::$rRequest['text'] ?: null);
@@ -3369,7 +3369,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'get_episode_ids') {
- if (hasPermissions('adv', 'add_episode')) {
+ if (Authorization::check('adv', 'add_episode')) {
$rReturn = array();
$rData = json_decode(CoreUtilities::$rRequest['data'], true);
@@ -3421,7 +3421,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'get_epg') {
- if (hasPermissions('adv', 'manage_streams')) {
+ if (Authorization::check('adv', 'manage_streams')) {
$rTimezone = (CoreUtilities::$rRequest['timezone'] ?: 'Europe/London');
date_default_timezone_set($rTimezone);
$rReturn = array('Channels' => array());
@@ -3526,7 +3526,7 @@ if (isset($_SESSION['hash'])) {
}
}
if (CoreUtilities::$rRequest['action'] == 'get_programme') {
- if (hasPermissions('adv', 'manage_streams')) {
+ if (Authorization::check('adv', 'manage_streams')) {
$rTimezone = (CoreUtilities::$rRequest['timezone'] ?: 'Europe/London');
date_default_timezone_set($rTimezone);
@@ -3572,7 +3572,7 @@ if (isset($_SESSION['hash'])) {
exit();
}
if (CoreUtilities::$rRequest['action'] == 'queue') {
- if (hasPermissions('adv', 'streams') || hasPermissions('adv', 'series') || hasPermissions('adv', 'episodes')) {
+ if (Authorization::check('adv', 'streams') || Authorization::check('adv', 'series') || Authorization::check('adv', 'episodes')) {
$rSub = CoreUtilities::$rRequest['sub'];
$db->query('SELECT * FROM `queue` WHERE `id` = ?;', CoreUtilities::$rRequest['id']);
@@ -3591,7 +3591,7 @@ if (isset($_SESSION['hash'])) {
} else {
if (0 >= $rRow['pid']) {
} else {
- killPID($rRow['server_id'], $rRow['pid']);
+ ServerRepository::killPID('systemapirequest', $rRow['server_id'], $rRow['pid']);
}
$db->query('DELETE FROM `queue` WHERE `id` = ?;', CoreUtilities::$rRequest['id']);
@@ -3859,7 +3859,7 @@ if (isset($_SESSION['hash'])) {
}
$rCategories = getCategories(null);
- $rGroups = getMemberGroups();
+ $rGroups = GroupService::getAll();
foreach ($rItems as $rItem) {
$rTableInfo = $rTables[$rItem['table']];
@@ -3871,7 +3871,7 @@ if (isset($_SESSION['hash'])) {
$rProperties = json_decode($rItem['movie_properties'], true);
if ($rItem['type'] != 5) {
- if (hasPermissions('adv', 'manage_streams')) {
+ if (Authorization::check('adv', 'manage_streams')) {
$rTitle = "" . $rItem['stream_display_name'] . '';
} else {
$rTitle = $rItem['stream_display_name'];
@@ -3884,7 +3884,7 @@ if (isset($_SESSION['hash'])) {
$rCategory .= ' (+' . (count($rCategoryIDs) - 1) . ')';
}
} else {
- if (hasPermissions('adv', 'manage_streams')) {
+ if (Authorization::check('adv', 'manage_streams')) {
$rTitle = ($rSeriesTitles[$rItem['id']] ? "" . $rSeriesTitles[$rItem['id']] . '' : 'No Series');
} else {
$rTitle = ($rSeriesTitles[$rItem['id']] ?: 'No Series');
@@ -4078,7 +4078,7 @@ if (isset($_SESSION['hash'])) {
$rButtons = '