Spaces:
No application file
No application file
File size: 2,110 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
<?php
namespace Mautic\ReportBundle\Scheduler\Command;
use Mautic\ReportBundle\Exception\FileIOException;
use Mautic\ReportBundle\Model\ReportCleanup;
use Mautic\ReportBundle\Model\ReportExporter;
use Mautic\ReportBundle\Scheduler\Option\ExportOption;
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;
class ExportSchedulerCommand extends Command
{
public function __construct(
private ReportExporter $reportExporter,
private ReportCleanup $reportCleanup,
private TranslatorInterface $translator
) {
parent::__construct();
}
protected function configure()
{
$this
->setName('mautic:reports:scheduler')
->addOption('--report', 'report', InputOption::VALUE_OPTIONAL, 'ID of report. Process all reports if not set.');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$report = $input->getOption('report');
try {
$exportOption = new ExportOption($report);
} catch (\InvalidArgumentException $e) {
$output->writeln('<error>'.$this->translator->trans('mautic.report.schedule.command.invalid_parameter').'</error>');
return Command::SUCCESS;
}
try {
if ($exportOption->getReportId()) {
$this->reportCleanup->cleanup($exportOption->getReportId());
} else {
$this->reportCleanup->cleanupAll();
}
$this->reportExporter->processExport($exportOption);
$output->writeln('<info>'.$this->translator->trans('mautic.report.schedule.command.finished').'</info>');
} catch (FileIOException $e) {
$output->writeln('<error>'.$e->getMessage().'</error>');
}
return Command::SUCCESS;
}
protected static $defaultDescription = 'Processes scheduler for report\'s export';
}
|