![]() 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/LeadBundle/Command/ |
<?php declare(strict_types=1); namespace Mautic\LeadBundle\Command; use Mautic\CoreBundle\Twig\Helper\FormatterHelper; use Mautic\LeadBundle\Event\ContactExportSchedulerEvent; use Mautic\LeadBundle\LeadEvents; use Mautic\LeadBundle\Model\ContactExportSchedulerModel; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; class ContactScheduledExportCommand extends Command { private const PICK_SCHEDULED_EXPORTS_LIMIT = 10; public const COMMAND_NAME = 'mautic:contacts:scheduled_export'; public function __construct( private ContactExportSchedulerModel $contactExportSchedulerModel, private EventDispatcherInterface $eventDispatcher, private FormatterHelper $formatterHelper ) { parent::__construct(); } protected function configure(): void { $this ->setName(self::COMMAND_NAME) ->addOption( '--ids', null, InputOption::VALUE_REQUIRED, 'Comma separated contact_export_scheduler ids.' ); parent::configure(); } protected function execute(InputInterface $input, OutputInterface $output): int { $ids = $this->formatterHelper->simpleCsvToArray($input->getOption('ids'), 'int'); if ($ids) { $contactExportSchedulers = $this->contactExportSchedulerModel->getRepository()->findBy(['id' => $ids]); } else { $contactExportSchedulers = $this->contactExportSchedulerModel->getRepository() ->findBy([], [], self::PICK_SCHEDULED_EXPORTS_LIMIT); } $count = 0; foreach ($contactExportSchedulers as $contactExportScheduler) { $contactExportSchedulerEvent = new ContactExportSchedulerEvent($contactExportScheduler); $this->eventDispatcher->dispatch($contactExportSchedulerEvent, LeadEvents::CONTACT_EXPORT_PREPARE_FILE); $this->eventDispatcher->dispatch($contactExportSchedulerEvent, LeadEvents::CONTACT_EXPORT_SEND_EMAIL); $this->eventDispatcher->dispatch($contactExportSchedulerEvent, LeadEvents::POST_CONTACT_EXPORT_SEND_EMAIL); ++$count; } $output->writeln('Contact export email(s) sent: '.$count); return Command::SUCCESS; } protected static $defaultDescription = 'Export contacts which are scheduled in `contact_export_scheduler` table.'; }