Spamworldpro Mini Shell
Spamworldpro


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/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/mautic.corals.io/app/bundles/CoreBundle/Command/CleanupMediaAssetsCommand.php
<?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';
}

Spamworldpro Mini