From 6417e79afaf8dee2ba8dc5d1b1f4c5e16c5513ca Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+github@gmail.com> Date: Thu, 14 Oct 2021 09:14:16 +0200 Subject: [PATCH] more rector expirements --- rector.php | 5 +-- ...emoveIncludeOfDefaultControllersRector.php | 43 +++++++++++++++++++ resources/rectors/sets/studip-5.0.php | 32 ++++++++++++++ 3 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 resources/rectors/rules/RemoveIncludeOfDefaultControllersRector.php diff --git a/rector.php b/rector.php index d6c4bf18d3..87d8f75731 100644 --- a/rector.php +++ b/rector.php @@ -2,8 +2,6 @@ declare(strict_types=1); -require_once __DIR__ . '/resources/rectors/rules/ReplaceConfigFunctionWithClassMethodRector.php'; - use Rector\Core\Configuration\Option; use Rector\Core\ValueObject\PhpVersion; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; @@ -36,7 +34,8 @@ return static function (ContainerConfigurator $containerConfigurator): void $parameters->set(Option::PHPSTAN_FOR_RECTOR_PATH, __DIR__ . '/phpstan.neon'); $parameters->set(Option::PATHS, [ - getcwd() . '/db/migrations', + getcwd() . '/app/controllers', +// getcwd() . '/db/migrations', getcwd() . '/lib', getcwd() . '/public/plugins_packages/core', ]); diff --git a/resources/rectors/rules/RemoveIncludeOfDefaultControllersRector.php b/resources/rectors/rules/RemoveIncludeOfDefaultControllersRector.php new file mode 100644 index 0000000000..daa3529c17 --- /dev/null +++ b/resources/rectors/rules/RemoveIncludeOfDefaultControllersRector.php @@ -0,0 +1,43 @@ +<?php +namespace Studip\Rectors; + +use PhpParser\Node; +use PhpParser\Node\Expr\Include_; +use Rector\Core\Rector\AbstractRector; +use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; +use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; + +final class RemoveIncludeOfDefaultControllersRector extends AbstractRector +{ + public function getRuleDefinition(): RuleDefinition + { + return new RuleDefinition('Remove includes/requires of default controllers', [ + new CodeSample( + 'require \'app/controllers/studip_controller.php\';', + '' + ) + ]); + } + + public function getNodeTypes(): array + { + return [Include_::class]; + } + + /** + * @param Include_ $node + */ + public function refactor(Node $node) + { + if ($node->expr instanceof Node\Scalar\String_ && $this->isDefaultController($node->expr)) { + $this->removeNode($node); + return null; + } + return null; + } + + private function isDefaultController(Node\Scalar\String_ $string): bool + { + return strpos($string->value, 'studip_controller') !== false; + } +} diff --git a/resources/rectors/sets/studip-5.0.php b/resources/rectors/sets/studip-5.0.php index a5b7abe0bb..ffefd7ea24 100644 --- a/resources/rectors/sets/studip-5.0.php +++ b/resources/rectors/sets/studip-5.0.php @@ -2,10 +2,42 @@ declare (strict_types=1); namespace Studip\Rectors\Sets; +require_once __DIR__ . '/../rules/RemoveIncludeOfDefaultControllersRector.php'; +require_once __DIR__ . '/../rules/ReplaceConfigFunctionWithClassMethodRector.php'; + +use Range; +use Rector\Renaming\Rector\FuncCall\RenameFunctionRector; +use Rector\Renaming\Rector\MethodCall\RenameMethodRector; +use Rector\Renaming\ValueObject\MethodCallRename; +use Studip\Rectors\RemoveIncludeOfDefaultControllersRector; use Studip\Rectors\ReplaceConfigFunctionWithClassMethodRector; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; +use Symplify\SymfonyPhpConfig\ValueObjectInliner; return static function (ContainerConfigurator $containerConfigurator) : void { $services = $containerConfigurator->services(); $services->set(ReplaceConfigFunctionWithClassMethodRector::class); + $services->set(RemoveIncludeOfDefaultControllersRector::class); + $services->set(RenameMethodRector::class)->call('configure', [ + [ + RenameMethodRector::METHOD_CALL_RENAMES => ValueObjectInliner::inline([ + new MethodCallRename(Range::class, 'userMayAccessRange', 'isAccessibleToUser') + ]), + ], + [ + RenameMethodRector::METHOD_CALL_RENAMES => ValueObjectInliner::inline([ + new MethodCallRename(Range::class, 'userMayEditRange', 'isEditableByUser') + ]), + ], + ]); + $services->set(RenameFunctionRector::class)->call('configure', [ + [ + RenameFunctionRector::OLD_FUNCTION_TO_NEW_FUNCTION => [ + 'studip_utf8decode' => 'utf8_decode', + 'studip_utf8encode' => 'utf8_encode', + 'studip_json_decode' => 'json_decode', // Second parameter must be true? + 'studip_json_encode' => 'json_encode', + ] + ] + ]); }; -- GitLab