Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\CoreBundle\Command; | |
| use Doctrine\DBAL\Exception as DBALException; | |
| use Mautic\CoreBundle\Entity\AuditLogRepository; | |
| use Mautic\CoreBundle\Entity\IpAddressRepository; | |
| use Mautic\CoreBundle\Helper\CoreParametersHelper; | |
| use Symfony\Component\Console\Command\Command; | |
| use Symfony\Component\Console\Input\InputInterface; | |
| use Symfony\Component\Console\Output\OutputInterface; | |
| class AnonymizeIpCommand extends Command | |
| { | |
| /** | |
| * @var string | |
| */ | |
| public const COMMAND_NAME = 'mautic:anonymize:ip'; | |
| public function __construct(private IpAddressRepository $ipAddressRepository, private CoreParametersHelper $coreParametersHelper, private AuditLogRepository $auditLogRepository) | |
| { | |
| parent::__construct(); | |
| } | |
| protected function configure(): void | |
| { | |
| $this->setName(self::COMMAND_NAME) | |
| ->setDescription('Delete all stored ip addresses.'); | |
| } | |
| protected function execute(InputInterface $input, OutputInterface $output): int | |
| { | |
| if (!$this->coreParametersHelper->get('anonymize_ip')) { | |
| return $this->exitWithError('Anonymization could not be done because anonymize Ip feature is disabled for this instance.', $output); | |
| } | |
| try { | |
| $anonymizedRows = $this->ipAddressRepository->anonymizeAllIpAddress(); | |
| $anonymizedRows += $this->auditLogRepository->anonymizeAllIpAddress(); | |
| $output->writeln(sprintf('<info>%s IP addresses have been anonymized</info>', $anonymizedRows)); | |
| } catch (DBALException $e) { | |
| return $this->exitWithError(sprintf('Anonymization of IP addresses failed because of database error: %s', $e->getMessage()), $output); | |
| } | |
| return 0; | |
| } | |
| private function exitWithError(string $message, OutputInterface $output): int | |
| { | |
| $output->writeln(sprintf('<error>%s</error>', $message)); | |
| return 1; | |
| } | |
| } | |