mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-31 19:03:43 +01:00
- Added NavbarItem class to encapsulate navigation item configuration (key, parent, URL, label, permissions, order, visibility flags, etc.) - Implemented NavbarRegistry for centralized registration and retrieval of navigation items, including hierarchical structure support - Introduced registerNavbar() method across modules to allow modular injection of navigation entries - Refactored admin header rendering to build navigation dynamically from the registry instead of static definitions Updated modules: - FingerprintModule - MagscanModule - MinistraModule - PlexModule - TheftDetectionModule - TmdbModule - WatchModule Benefits: - Improves maintainability by removing hardcoded navigation - Enables modular and scalable extension of the admin menu - Provides consistent API for core and external modules Co-authored-by: Copilot <copilot@github.com>
114 lines
3.5 KiB
PHP
114 lines
3.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* TMDB Module
|
|
*
|
|
* Модуль интеграции с TheMovieDB.
|
|
* Регистрирует сервисы, API-действия и крон-задачи.
|
|
*
|
|
* ──────────────────────────────────────────────────────────────────
|
|
* Что включает:
|
|
* ──────────────────────────────────────────────────────────────────
|
|
*
|
|
* Сервисы:
|
|
* - TmdbService — поиск, получение деталей фильмов/сериалов
|
|
* - TmdbCron — крон обработки очереди watch_refresh
|
|
* - TmdbPopularCron — крон сбора популярных фильмов/сериалов
|
|
*
|
|
* API-действия:
|
|
* - tmdb_search — поиск в TMDB (по тексту или ID)
|
|
* - tmdb — получение деталей фильма/сериала
|
|
*
|
|
* Библиотека:
|
|
* - includes/libs/tmdb.php — TMDB API v3 PHP wrapper
|
|
* - includes/libs/TMDb/ — модели (Movie, TVShow, Season, ...)
|
|
* - includes/libs/tmdb_release.php — парсер release-имён
|
|
*
|
|
* @see TmdbService
|
|
* @see TmdbCron
|
|
* @see TmdbPopularCron
|
|
*
|
|
* @package XC_VM_Module_Tmdb
|
|
* @author Divarion_D <https://github.com/Divarion-D>
|
|
* @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 TmdbModule implements ModuleInterface {
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getName(): string {
|
|
return 'tmdb';
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getVersion(): string {
|
|
return '1.0.0';
|
|
}
|
|
|
|
/**
|
|
* Регистрация сервисов модуля в DI-контейнере
|
|
*
|
|
* @param ServiceContainer $container
|
|
*/
|
|
public function boot(ServiceContainer $container): void {
|
|
$container->set('tmdb.service', 'TmdbService');
|
|
}
|
|
|
|
/**
|
|
* Регистрация маршрутов модуля
|
|
*
|
|
* TMDB не имеет собственных страниц — только API-действия.
|
|
* Действия tmdb_search и tmdb пока остаются в admin/api.php
|
|
* (делегируют в TmdbService) и будут перенесены при рефакторинге api.php.
|
|
*
|
|
* @param Router $router
|
|
*/
|
|
public function registerRoutes(Router $router): void {
|
|
// API-действия tmdb_search и tmdb остаются в api.php
|
|
// до рефакторинга god-объекта (Шаг 5.2 ARCHITECTURE.md)
|
|
}
|
|
|
|
/**
|
|
* CLI-команды модуля
|
|
*
|
|
* @param CommandRegistry $registry
|
|
*/
|
|
public function registerCommands(CommandRegistry $registry): void {
|
|
$registry->register(new TmdbCronJob());
|
|
$registry->register(new TmdbPopularCronJob());
|
|
}
|
|
|
|
/**
|
|
* Подписки на события ядра
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getEventSubscribers(): array {
|
|
return [];
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function install(): void {
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function uninstall(): void {
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function registerNavbar(): void {
|
|
}
|
|
}
|