Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\CampaignBundle\Command; | |
| use Mautic\CampaignBundle\Entity\LeadEventLogRepository; | |
| use Mautic\CampaignBundle\Model\CampaignModel; | |
| use Mautic\CampaignBundle\Model\EventModel; | |
| 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; | |
| class CampaignDeleteEventLogsCommand extends Command | |
| { | |
| /** | |
| * @var string | |
| */ | |
| public const COMMAND_NAME = 'mautic:campaign:delete-event-logs'; | |
| public function __construct(private LeadEventLogRepository $leadEventLogRepository, private CampaignModel $campaignModel, private EventModel $eventModel) | |
| { | |
| parent::__construct(); | |
| } | |
| protected function configure(): void | |
| { | |
| $this->setName(self::COMMAND_NAME) | |
| ->setDescription('Delete campaign event logs') | |
| ->addArgument( | |
| 'campaign_event_ids', | |
| InputArgument::IS_ARRAY | InputArgument::OPTIONAL, | |
| 'Campaign event ids to delete event logs.' | |
| ) | |
| ->addOption( | |
| '--campaign-id', | |
| '-i', | |
| InputOption::VALUE_OPTIONAL, | |
| 'Delete campaign also otherwise will delete event and event log only.' | |
| ); | |
| } | |
| protected function execute(InputInterface $input, OutputInterface $output): int | |
| { | |
| $eventIds = $input->getArgument('campaign_event_ids'); | |
| $campaignId = (int) $input->getOption('campaign-id'); | |
| if (!empty($campaignId)) { | |
| $this->leadEventLogRepository->removeEventLogsByCampaignId($campaignId); | |
| $this->eventModel->deleteEventsByCampaignId($campaignId); | |
| $campaign = $this->campaignModel->getEntity($campaignId); | |
| $this->campaignModel->deleteCampaign($campaign); | |
| } elseif (!empty($eventIds)) { | |
| $this->leadEventLogRepository->removeEventLogs($eventIds); | |
| $this->eventModel->deleteEventsByEventIds($eventIds); | |
| } | |
| return 0; | |
| } | |
| } | |