From 95b8d817b5337c234a50a3d4dfb202f5a40ef8af Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 17 Apr 2024 07:45:49 +0000
Subject: [PATCH] remove cli command 'check:globalized-config', fixes #4024

Closes #4024

Merge request studip/studip!2878
---
 cli/Commands/Checks/GlobalizedConfig.php | 148 -----------------------
 cli/studip                               |   1 -
 2 files changed, 149 deletions(-)
 delete mode 100644 cli/Commands/Checks/GlobalizedConfig.php

diff --git a/cli/Commands/Checks/GlobalizedConfig.php b/cli/Commands/Checks/GlobalizedConfig.php
deleted file mode 100644
index 373534a8b2a..00000000000
--- a/cli/Commands/Checks/GlobalizedConfig.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?php
-namespace Studip\Cli\Commands\Checks;
-
-use Config;
-use DirectoryIterator;
-use FilesystemIterator;
-use RecursiveDirectoryIterator;
-use RecursiveIteratorIterator;
-use RecursiveRegexIterator;
-use RegexIterator;
-use Studip\Cli\Commands\AbstractCommand;
-use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Output\OutputInterface;
-
-final class GlobalizedConfig extends AbstractCommand
-{
-    protected static $defaultName = 'check:globalized-config';
-
-    protected function configure(): void
-    {
-        $this->setDescription(
-            '<href=https://develop.studip.de/trac/ticket/5671>TIC 5671</> scanner - Globalized config'
-        );
-        $this->setHelp(
-            'Scans files for occurences of globalized config items (see <href=https://develop.studip.de/trac/ticket/5671>ticket 5671</> for more info)'
-        );
-
-        $this->addOption('filenames', 'f', InputOption::VALUE_NONE, 'Display filenames only (excludes -m and -o)');
-        $this->addOption('matches', 'm', InputOption::VALUE_NONE, 'Show matched config variables');
-        $this->addOption(
-            'recursive',
-            'r',
-            InputOption::VALUE_NONE | InputOption::VALUE_NEGATABLE,
-            'Do not scan recursively into subfolders'
-        );
-        $this->addOption('occurences', 'o', InputOption::VALUE_NONE, 'Show occurences in files');
-
-        $this->addArgument(
-            'folder',
-            InputArgument::IS_ARRAY | InputArgument::OPTIONAL,
-            'Folder(s) to scan (pass the special value of "plugins" to scan the plugin folder)',
-            [$GLOBALS['STUDIP_BASE_PATH']]
-        );
-    }
-
-    protected function execute(InputInterface $input, OutputInterface $output): int
-    {
-        $only_filenames = (bool) $input->getOption('filenames');
-        $show_occurences = !$only_filenames && ($output->isVerbose() || $input->getOption('occurences'));
-        $show_matches = !$only_filenames && ($show_occurences || $input->getOption('matches'));
-        $recursive = $input->getOption('recursive') ?? true;
-
-        $folders = $input->getArgument('folder');
-        foreach ($folders as $index => $folder) {
-            if ($folder === 'plugins') {
-                $folders[$index] = $GLOBALS['STUDIP_BASE_PATH'] . '/public/plugins_packages/';
-            }
-        }
-        $folders = array_unique($folders);
-
-        $config = Config::get()->getFields('global');
-        $quoted = array_map(function ($item) {
-            return preg_quote($item, '/');
-        }, $config);
-        $regexp = '/\$(?:GLOBALS\[["\']?)?(' . implode('|', $quoted) . ')\b/S';
-
-        foreach ($folders as $folder) {
-            if (!file_exists($folder) || !is_dir($folder)) {
-                $output->writeln(
-                    "Skipping non-folder argument <fg=red>{$folder}</>",
-                    OutputInterface::VERBOSITY_VERBOSE
-                );
-                continue;
-            }
-            $output->writeln("Scanning {$folder}", OutputInterface::VERBOSITY_VERBOSE);
-
-            foreach ($this->getFolderIterator($folder, $recursive, ['php', 'tpl', 'inc']) as $file) {
-                $filename = $file->getPathName();
-                $contents = file_get_contents($filename);
-
-                $output->writeln(
-                    sprintf(
-                        'Check <fg=magenta>%s</>',
-                        $this->relativeFilePath($filename)
-                    ),
-                    OutputInterface::VERBOSITY_VERBOSE
-                );
-
-                if ($matched = preg_match_all($regexp, $contents, $matches)) {
-                    if ($only_filenames) {
-                        $output->writeln($filename);
-                    } else {
-                        $output->writeln(
-                            sprintf(
-                                '%u matched variable(s) in <fg=green;options=bold>%s</>',
-                                $matched,
-                                $this->shorten($filename)
-                            )
-                        );
-                        if ($show_matches) {
-                            $variables = array_unique($matches[1]);
-                            foreach ($variables as $variable) {
-                                $output->writeln("> <fg=cyan>{$variable}</>");
-                                if ($show_occurences) {
-                                    $output->writeln($this->highlight($contents, $variable));
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        return Command::SUCCESS;
-    }
-
-    private function highlight(string $content, string $variable): string
-    {
-        $lines = explode("\n", $content);
-
-        $result = [];
-        foreach ($lines as $index => $line) {
-            if (mb_strpos($line, $variable) === false) {
-                continue;
-            }
-            $result[$index + 1] = $line;
-        }
-
-        if (!$result) {
-            return '';
-        }
-
-        $max = max(array_map('mb_strlen', array_keys($result)));
-
-        foreach ($result as $index => $line) {
-            $result[$index] = sprintf(
-                "<fg=yellow>:%0{$max}u:</> %s",
-                $index,
-                str_replace($variable, "<fg=black;bg=yellow>{$variable}</>", $line)
-            );
-        }
-
-        return implode("\n", $result);
-    }
-}
diff --git a/cli/studip b/cli/studip
index 971ad8e6368..858dc3d2e3f 100755
--- a/cli/studip
+++ b/cli/studip
@@ -15,7 +15,6 @@ $commands = [
     Commands\Base\Dump::class,
     Commands\Base\Tinker::class,
     Commands\Checks\Compatibility::class,
-    Commands\Checks\GlobalizedConfig::class,
     Commands\Checks\HelpTours::class,
     Commands\Checks\HelpTours::class,
     Commands\CleanupAdmissionRules::class,
-- 
GitLab