![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/CoreBundle/Command/ |
<?php namespace Mautic\CoreBundle\Command; use Mautic\CoreBundle\Helper\PathsHelper; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\ConfirmationQuestion; use Symfony\Component\Finder\Finder; /** * CLI Command to clean up obsolete files in the media folder. */ class CleanupMediaAssetsCommand extends Command { public function __construct( private PathsHelper $pathsHelper ) { parent::__construct(); } protected function configure(): void { $this->setName('mautic:assets:cleanup') ->setHelp( <<<'EOT' The <info>%command.name%</info> command is used to clean up obsolete files in the media folder that are present in the app/assets folder. <info>php %command.full_name%</info> EOT ); parent::configure(); } protected function execute(InputInterface $input, OutputInterface $output): int { $assetsPath = $this->pathsHelper->getAssetsPath(); $mediaPath = $this->pathsHelper->getMediaPath(); $finder = new Finder(); $finder->files()->in($assetsPath)->path(['images', 'dashboards'])->notName('.htaccess'); $files_to_delete = []; foreach ($finder as $file) { $absoluteFilePath = $file->getRealPath(); $relativeFilePath = $file->getRelativePathname(); $md5_source = md5_file($absoluteFilePath); $mediaOverride = $mediaPath.'/'.$relativeFilePath; if (file_exists($mediaOverride)) { $md5_override = md5_file($mediaOverride); if ($md5_source == $md5_override) { $files_to_delete[] = $mediaOverride; } } } $output->writeln('<info>'.count($files_to_delete).' obsolete files found</info>'); if (count($files_to_delete)) { foreach ($files_to_delete as $file) { $output->writeln('<comment> - '.$file.'</comment>'); } $output->writeln(''); /** @var \Symfony\Component\Console\Helper\SymfonyQuestionHelper $helper */ $helper = $this->getHelperSet()->get('question'); $question = new ConfirmationQuestion( '<question>delete files?</question> ', false ); if ($helper->ask($input, $output, $question)) { foreach ($files_to_delete as $file) { unlink($file); } } } return Command::SUCCESS; } protected static $defaultDescription = 'Cleans up obsolete files in the media folder that are present in the app/assets folder'; }