![]() 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/ReportBundle/Scheduler/Builder/ |
<?php namespace Mautic\ReportBundle\Scheduler\Builder; use Mautic\ReportBundle\Scheduler\Exception\InvalidSchedulerException; use Mautic\ReportBundle\Scheduler\Exception\NotSupportedScheduleTypeException; use Mautic\ReportBundle\Scheduler\Factory\SchedulerTemplateFactory; use Mautic\ReportBundle\Scheduler\SchedulerInterface; use Recurr\Exception\InvalidWeekday; use Recurr\Rule; use Recurr\Transformer\ArrayTransformer; class SchedulerBuilder { public function __construct( private SchedulerTemplateFactory $schedulerTemplateFactory ) { } /** * @return \Recurr\Recurrence[]|\Recurr\RecurrenceCollection * * @throws InvalidSchedulerException * @throws NotSupportedScheduleTypeException */ public function getNextEvent(SchedulerInterface $scheduler) { return $this->getNextEvents($scheduler, 1); } /** * @param int $count * * @return \Recurr\RecurrenceCollection * * @throws InvalidSchedulerException * @throws NotSupportedScheduleTypeException */ public function getNextEvents(SchedulerInterface $scheduler, $count) { if (!$scheduler->isScheduled()) { throw new InvalidSchedulerException(); } $builder = $this->schedulerTemplateFactory->getBuilder($scheduler); $startDate = new \DateTime(); $rule = new Rule(); if (!$scheduler->isScheduledNow()) { $startDate->setTime(0, 0)->modify('+1 day'); } $rule->setStartDate($startDate)->setCount($count); try { $finalScheduler = $builder->build($rule, $scheduler); $transformer = new ArrayTransformer(); return $transformer->transform($finalScheduler); } catch (InvalidWeekday) { throw new InvalidSchedulerException(); } } }