![]() 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 namespace Mautic\LeadBundle\Command; use Mautic\CoreBundle\ProcessSignal\ProcessSignalService; use Mautic\LeadBundle\Exception\ImportDelayedException; use Mautic\LeadBundle\Exception\ImportFailedException; use Mautic\LeadBundle\Helper\Progress; use Mautic\LeadBundle\Model\ImportModel; use Mautic\UserBundle\Security\UserTokenSetter; 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\Contracts\Translation\TranslatorInterface; /** * CLI Command to import data. */ class ImportCommand extends Command { public const COMMAND_NAME = 'mautic:import'; public function __construct( private TranslatorInterface $translator, private ImportModel $importModel, private ProcessSignalService $processSignalService, private UserTokenSetter $userTokenSetter ) { parent::__construct(); } protected function configure() { $this->setName(self::COMMAND_NAME) ->addOption('--id', '-i', InputOption::VALUE_OPTIONAL, 'Specific ID to import. Defaults to next in the queue.', false) ->addOption('--limit', '-l', InputOption::VALUE_OPTIONAL, 'Maximum number of records to import for this script execution.', 0) ->setHelp( <<<'EOT' The <info>%command.name%</info> command starts to import CSV files when some are created. <info>php %command.full_name%</info> EOT ); } protected function execute(InputInterface $input, OutputInterface $output): int { $start = microtime(true); $progress = new Progress($output); $id = (int) $input->getOption('id'); $limit = (int) $input->getOption('limit'); $this->processSignalService->registerSignalHandler(fn (int $signal) => $output->writeln(sprintf('Signal %d caught.', $signal))); if ($id) { $import = $this->importModel->getEntity($id); // This specific import was not found if (!$import) { $output->writeln('<error>'.$this->translator->trans('mautic.core.error.notfound', [], 'flashes').'</error>'); return Command::FAILURE; } } else { $import = $this->importModel->getImportToProcess(); // No import waiting in the queue. Finish silently. if (null === $import) { return Command::SUCCESS; } } $this->userTokenSetter->setUser($import->getCreatedBy()); $output->writeln('<info>'.$this->translator->trans( 'mautic.lead.import.is.starting', [ '%id%' => $import->getId(), '%lines%' => $import->getLineCount(), ] ).'</info>'); try { $this->importModel->beginImport($import, $progress, $limit); } catch (ImportFailedException) { $output->writeln('<error>'.$this->translator->trans( 'mautic.lead.import.failed', [ '%reason%' => $import->getStatusInfo(), ] ).'</error>'); return Command::FAILURE; } catch (ImportDelayedException) { $output->writeln('<info>'.$this->translator->trans( 'mautic.lead.import.delayed', [ '%reason%' => $import->getStatusInfo(), ] ).'</info>'); return Command::FAILURE; } // Success $output->writeln('<info>'.$this->translator->trans( 'mautic.lead.import.result', [ '%lines%' => $import->getProcessedRows(), '%created%' => $import->getInsertedCount(), '%updated%' => $import->getUpdatedCount(), '%ignored%' => $import->getIgnoredCount(), '%time%' => round(microtime(true) - $start, 2), ] ).'</info>'); return Command::SUCCESS; } protected static $defaultDescription = 'Imports data to Mautic'; }