Commit Graph
565 Commits
Author SHA1 Message Date
Divarion-D 84cab831bf feat(modules): enhance module upload UI with drag-and-drop support and AJAX handling 2026-04-11 22:46:06 +03:00
Divarion-D d22b47bb65 feat(contributors): update the contributors table with new data and improve the update script 2026-04-11 22:08:14 +03:00
Divarion-D fb2bd8129c feat(tools): add Redis diagnostics tool 2026-04-11 22:06:04 +03:00
Divarion-D ed66efdf5d feat(modules): add module system with admin UI 2026-04-11 22:06:04 +03:00
Divarion-D 50dc167a34 refactor(redis): add type hints, PHPDoc, null-safety and health-check ping 2026-04-11 22:06:04 +03:00
Divarion-D f8f465209c fix(streaming): add null coalescing guards for undefined array keys 2026-04-11 22:06:04 +03:00
Divarion-D a95f729173 fix: check isset api_key before ctype_xdigit in UserService 2026-04-10 20:31:22 +03:00
Divarion-D f404afc4a0 fix: check headers_sent() before setcookie in Translator 2026-04-10 20:31:22 +03:00
Divarion-D 754b3f2e34 docs: update ARCHITECTURE.md after Phase 15 completion 2026-04-10 20:31:22 +03:00
Divarion-D ddaf76e0ef remove obsolete redis-server_6.2.2 binary 2026-04-10 20:31:22 +03:00
Divarion-D 042706e905 installer: use static redis.conf instead of inline template 2026-04-10 20:22:18 +03:00
Divarion-D 4f24913054 add static redis.conf template to src/bin/redis 2026-04-10 20:22:18 +03:00
Divarion-D 7d209643ae docs: update MIGRATION.md - delete completed phases 14 and 15, update contents 2026-04-09 21:48:26 +03:00
Divarion-D 534ae142f9 docs: update MIGRATION.md — add Phase 16.5, remove completed items 2026-04-09 21:35:57 +03:00
Divarion-D 6cc892f9a7 refactor: eliminate proxy functions, migrate to direct class method calls
312 files changed, 2866 insertions(+), 24110 deletions(-)

Proxy function replacements (130+ functions):
- goHome() -> AdminHelpers::goHome()
- checkPermissions() -> PageAuthorization::checkPermissions()
- getBouquet/getCategory/etc -> Service::getById()
- deleteStream/deleteLine/etc -> Repository/Service::delete()
- APIRequest/systemapirequest -> ApiClient::request/systemRequest()
- prepareArray/preparecolumn -> QueryHelper methods
- confirmIDs/parserelease/etc -> AdminHelpers methods
- getSettings/clearSettingsCache -> SettingsManager methods
- destroySession -> SessionManager::clearContext()
- getMag/getEnigma/deleteMAG/etc -> MagService/EnigmaService
- getSeriesTrailer/getMovieTMDB/etc -> TMDbService methods

Removed legacy files:
- src/includes/admin.php (main proxy hub)
- src/includes/libs/ (35+ files moved to core/modules)
- src/includes/python/ (moved to bin/python)
- src/includes/api/ (moved to Controllers)
- src/includes/ts.php, reseller_api.php
- src/infrastructure/legacy/admin_proxies.php
- tools/run_scan.sh, update_redis_conf.sh

Additional fixes:
- SQL query placeholder migration (BouquetService, CategoryService)
- PHP 8.x null-safe access (live.php, server_view.php, stream.php)
- TmdbCron: extracted variable for repeated similar_text calls
2026-04-09 21:24:48 +03:00
Divarion-D e304612605 feat: add new core/domain architecture classes and migrated libraries
New core classes:
- PageAuthorization, QueryHelper, ApiClient, AdminHelpers
- Logger, Translator, XmlStringStreamer, DropboxClient
- GithubReleases, MobileDetect

New domain classes:
- M3UParser, M3UEntry, TicketRepository, TMDbService

Migrated libraries:
- TMDb SDK → modules/tmdb/lib/
- Python scripts → bin/python/
- permissions.php → config/
- Table controllers → public/Controllers/
- AsyncFileOperations, TimeshiftClient → streaming/

New docs:
- translations.md (en/ru)
2026-04-09 21:23:16 +03:00
Divarion-D a5f1472bf1 Add common JavaScript utilities for admin pages
- Introduced a new common.js file containing essential functions for admin page operations.
- Implemented utilities for modal handling, error/success notifications, domain/IP validation, session management, and SPA navigation.
- Added functions for managing tooltips, search functionality, and URL parameter manipulation.
- Enhanced user experience with toast notifications and modal interactions.
2026-04-07 22:18:23 +03:00
Divarion-D 59bfb6f942 Add EventDispatcher integration to bootstrap and module loader
- Updated the XC_Bootstrap class to include the EventDispatcher class in the service container.
- Modified the ModuleLoader class to utilize the EventDispatcher for subscribing to events, enhancing the event handling mechanism.
2026-04-07 21:48:20 +03:00
Divarion-D 496f9883ff refactor(GitHubReleases): replace getNextVersion with getLatestVersion for direct updates 2026-04-07 21:23:00 +03:00
Divarion-D 8af3fa7331 fix(view): improve dark mode handling in server view cards 2026-04-07 21:05:53 +03:00
Divarion-D a64d59b15c fix(docs): update console paths in documentation and scripts 2026-04-07 20:49:44 +03:00
Divarion-D ac0c3753e7 fix(docs): update release checklist to include disabling development mode 2026-04-07 20:26:06 +03:00
Divarion-D 098bd17c37 Merge branch 'main' of https://github.com/Vateron-Media/XC_VM 2026-04-07 20:07:53 +03:00
Divarion-D 7e9b233ca1 fix(docs): update supported OS section and clarify installation recommendations 2026-04-07 20:07:49 +03:00
DanilandGitHub 9f1954d204 Merge pull request #104 from Vateron-Media/feature/split-binaries
Feature/split binaries
2026-04-07 19:58:30 +03:00
Divarion-D 07789f7a33 Rename test_installer to install 2026-04-07 19:55:28 +03:00
Divarion-D 1657cc7afd feat(lb): download distribution-specific binaries from GitHub 2026-04-07 19:49:44 +03:00
Divarion-D c47690dd42 build: Makefile cleanup — UPDATE_EXCLUDE_DIRS, rewrite update targets, simplify permissions 2026-04-07 19:49:29 +03:00
Divarion-D 34cd31483e chore: auto_install.sh — switch from install to test_installer 2026-04-07 19:49:19 +03:00
Divarion-D f0ae4645ac refactor: installer overhaul — remove php-ssh2, GitHub binary downloads, security hardening 2026-04-07 19:48:49 +03:00
Divarion-D c6e96ffa92 Merge branch 'main' into feature/split-binaries 2026-04-07 17:26:09 +03:00
Divarion-D 62f16a2b2f feat(docs): Added a section about the development workflow using SFTP 2026-04-07 15:57:55 +03:00
Divarion-D c34392d389 feat(WatchItem): enable transcoding based on transcode profile ID 2026-04-07 15:43:48 +03:00
Divarion-D 6865257fde fix(docs): update release preparation checklist for clarity and automation 2026-04-06 22:08:35 +03:00
Divarion-D 1719c926c0 Bump version to 2.0.2 2026-04-06 21:54:11 +03:00
Divarion-D cc4d52fd97 style(docs): update index.html with dark theme and improved sidebar styles 2026-04-06 21:48:18 +03:00
Divarion-D 41b8de534f fix(RadioService): handle potential null values in bouquet and category lists 2026-04-06 21:11:38 +03:00
Divarion-D 819be1e24a fix(issue-templates): update issue links to point to the correct repository 2026-04-06 21:09:09 +03:00
Divarion-D 296e0b77c5 fix(issue-templates): change version field from dropdown to input for better flexibility 2026-04-06 21:03:50 +03:00
Divarion-D e02c59bca4 docs(templates): overhaul all GitHub issue templates
bug_report.yml:
- Add required version dropdown (XC_VM 2.0.1/2.0.0/1.x)
- Add steps to reproduce (was completely missing)
- Add expected vs actual behavior fields
- Add build type (MAIN/LoadBalancer)
- Add severity and affected area dropdowns
- Add environment info section
- Fix misnamed howtoreplicate field

security.yml:
- Add public disclosure warning with link to GH Security Advisories
- Add required version dropdown (multi-select)
- Add severity classification (CVSS-like)
- Add affected component dropdown
- Add suggested fix field
- Replace misleading confidentiality checkbox

feature_request.yml:
- Add affected area dropdown for triage
- Add alternatives considered field
- Improve field descriptions

other.yml:
- Add category dropdown (question/config/performance/etc)
- Add optional version field

config.yml (new):
- Disable blank issues
- Add private security advisory link
- Add documentation link
2026-04-06 21:01:08 +03:00
Divarion-D 2b5a85a142 refactor(admin): extract curl result + propagate rModal in layout
- systemapirequest(): store curl_exec result before return
- renderUnifiedLayoutHeader(): propagate $rModal to GLOBALS
  so renderUnifiedLayoutFooter() can access it
2026-04-06 20:40:18 +03:00
Divarion-D 0f81858541 fix(stream): replace truthy checks with empty() in InternalApiController
Prevent undefined index notices when request fields are missing.
Affects user_agent, http_proxy, cookies, headers checks in
stream probe/prebuffer logic.
2026-04-06 20:39:53 +03:00
Divarion-D d0825bd66c fix(api): null-safe access for stream codec metadata 2026-04-06 20:39:12 +03:00
Divarion-D b59040d359 refactor: remove deprecated legacy resize image handlers 2026-04-06 19:42:15 +03:00
Divarion-D 74362ff70b fix(api): handle null from probeSource() to prevent array offset on null 2026-04-06 19:37:40 +03:00
Divarion-D a3e203bcef fix(table): add is_array() guard for codecs in streams and radios blocks
Blocks 1 (streams) and 2 (radios) were missing the || !is_array()
guard that blocks 3 (movies) and 4 (episodes) already had.
When codecs.video or codecs.audio is a string, isset() returns true
but accessing ["width"] or ["codec_name"] on a string causes TypeError.
2026-04-06 19:33:24 +03:00
Divarion-D 0cdb4d9e5a fix(table): use is_array() guard for codecs.video/audio in all 4 blocks
isset() returns true when codecs.audio is a string (not array),
so the fallback never triggers and accessing ["codec_name"]
on a string causes TypeError. Added || !is_array() check.
2026-04-06 19:23:25 +03:00
Divarion-D 54adf39854 fix(admin): prevent TypeError and warnings on undefined array keys
- api.php:2503: replace ?: with ?? for optional RequestManager keys
  (http_proxy, cookies, headers, user_agent)
- table.php: json_decode can return string instead of array when
  stream_info contains non-object JSON; add is_array() guard in all 4
  occurrences to prevent "Cannot access offset of type string on string"
2026-04-06 18:59:09 +03:00
Divarion-D f1a5909124 chore: misc fixes — m3u improvements, review page update, cleanup add_headers
- m3u.php: minor output improvements
- review.php: admin view updates
- Remove obsolete tools/add_headers.php
- test_release.sh: extend sync logic
2026-04-06 18:44:05 +03:00
Divarion-D 5a4768b25e refactor(resize): add admin resize route, unify 3 duplicate handlers into resize_body.php
- Create AdminResizeController + register GET /resize in admin routes
- Extract unified resize_body.php from 3 near-identical legacy files
- Player/Reseller controllers now set config vars and require resize_body.php
- Remove duplicated code from player_resize_body.php and reseller_resize_body.php
- Update ARCHITECTURE.md legacy directory documentation
2026-04-06 18:43:53 +03:00