Files
XC_VM/.php-cs-fixer.dist.php
T
Divarion-D fd35f00c4d fix(views): import migrated classes at top of 5 admin view templates
enigma, episode, episodes, process_monitor and stream_view referenced migrated
classes (UserRepository, BouquetService, StreamRepository, RequestManager,
SettingsManager, ...) by short name with either no `use` or a `use` placed
*below* the first usage. PHP imports outside the top scope are positional, so the
short name resolved to a now-nonexistent global class — a runtime fatal on those
admin pages (php -l passes; not covered by PHPStan/PHPUnit). The migration's
automated `use` insertion missed them due to the interleaved HTML / short-tag
(<? , <?=) structure, and the later php-cs-fixer pass stripped some as 'unused'
because it could not see usage inside short-tag blocks.

- Consolidate every needed `use XcVm\...;` into a single top-of-file PHP block.
- Exclude Public/Views and Modules/*/views from php-cs-fixer (no_unused_imports
  is unreliable on short-tag templates); their import correctness is enforced by
  the new check_procedural_use gate instead.

Verified: php -l (short_open_tag=1) clean; PHPStan no errors; PHPUnit green.
2026-06-25 20:57:37 +03:00

56 lines
2.1 KiB
PHP

<?php
/**
* PHP-CS-Fixer configuration for XC_VM.
*
* Scope is intentionally NARROW: import/namespace hygiene only. We do NOT apply
* @PSR12 or any indentation/brace rules — the codebase is tab-indented legacy
* code and a full reformat would produce an unreviewable diff. The rules below
* only touch the `use`/`namespace` block, which is exactly what the PSR-4
* migration churned.
*
* Usage:
* make cs # check only (dry-run, fails on diff) — used in CI
* make cs-fix # apply fixes in place
*/
$finder = PhpCsFixer\Finder::create()
->in(__DIR__ . '/src')
->name('*.php')
// Composer autoloader glue + third-party packages (committed + shipped).
->exclude('vendor')
// Bundled third-party TMDB client (vendored, kept global on purpose).
->exclude('Modules/tmdb/lib')
// Runtime/transient trees.
->exclude('tmp')
->exclude('backups')
// View templates: HTML interleaved with many <? / <?= short-tag PHP blocks.
// no_unused_imports cannot reliably see class usage inside short-tag blocks
// and would strip still-needed imports. Their import correctness is enforced
// instead by tools/ci/check_procedural_use.php (short-tag aware).
->notPath('#^Public/Views/#')
->notPath('#^Modules/[^/]+/views/#');
return (new PhpCsFixer\Config())
->setIndent("\t")
->setLineEnding("\n")
->setRules([
// Remove imports that are no longer referenced (cleans up leftovers from
// the PSR-4 migration's automated `use` insertion).
'no_unused_imports' => true,
// Sort `use` statements alphabetically, classes/functions/consts grouped.
'ordered_imports' => [
'sort_algorithm' => 'alpha',
'imports_order' => ['class', 'function', 'const'],
],
// `use \Foo;` -> `use Foo;` (leading slash in imports is redundant).
'no_leading_import_slash' => true,
// Exactly one blank line after the import block.
'single_line_after_imports' => true,
// Exactly one blank line after the namespace declaration.
'blank_line_after_namespace' => true,
// Collapse multiple blank lines between/around `use` statements.
'no_extra_blank_lines' => ['tokens' => ['use']],
])
->setFinder($finder);