diff --git a/application/Espo/Core/Job/JobPreperable.php b/application/Espo/Core/Job/JobPreperable.php index 60fa3d2a78..3b5a7135ce 100644 --- a/application/Espo/Core/Job/JobPreperable.php +++ b/application/Espo/Core/Job/JobPreperable.php @@ -29,8 +29,6 @@ namespace Espo\Core\Job; -use Espo\Entities\ScheduledJob; - use DateTimeImmutable; /** @@ -41,5 +39,5 @@ interface JobPreperable extends Job /** * Create multiple job records for a scheduled job. */ - public function prepare(ScheduledJob $scheduledJob, DateTimeImmutable $executeTime): void; + public function prepare(ScheduledJobData $data, DateTimeImmutable $executeTime): void; } diff --git a/application/Espo/Core/Job/ScheduleProcessor.php b/application/Espo/Core/Job/ScheduleProcessor.php index dec2c61441..2f4041f97a 100644 --- a/application/Espo/Core/Job/ScheduleProcessor.php +++ b/application/Espo/Core/Job/ScheduleProcessor.php @@ -152,10 +152,12 @@ class ScheduleProcessor if ($this->jobFactory->isPreparable($jobName)) { $jobObj = $this->jobFactory->create($jobName); + $data = new ScheduledJobData($scheduledJob->getId(), $scheduledJob->getName()); + $executeAtDt = DateTimeImmutable ::createFromFormat(DateTimeUtil::SYSTEM_DATE_TIME_FORMAT, $executeTime); - $jobObj->prepare($scheduledJob, $executeAtDt); + $jobObj->prepare($data, $executeAtDt); return; } diff --git a/application/Espo/Core/Job/ScheduledJobData.php b/application/Espo/Core/Job/ScheduledJobData.php new file mode 100644 index 0000000000..a66aa12f4a --- /dev/null +++ b/application/Espo/Core/Job/ScheduledJobData.php @@ -0,0 +1,53 @@ +id = $id; + $this->name = $name; + } + + public function getId(): string + { + return $this->id; + } + + public function getName(): string + { + return $this->name; + } +} diff --git a/application/Espo/Jobs/CheckEmailAccounts.php b/application/Espo/Jobs/CheckEmailAccounts.php index 7ec14f9259..48bc2ae347 100644 --- a/application/Espo/Jobs/CheckEmailAccounts.php +++ b/application/Espo/Jobs/CheckEmailAccounts.php @@ -35,13 +35,12 @@ use Espo\Core\{ Job\JobStatus, Job\JobPreperable, Job\Data, + Job\ScheduledJobData, ServiceFactory, ORM\EntityManager, Utils\DateTime, }; -use Espo\Entities\ScheduledJob; - use Throwable; use DateTimeImmutable; @@ -87,7 +86,7 @@ class CheckEmailAccounts implements JobPreperable } } - public function prepare(ScheduledJob $scheduledJob, DateTimeImmutable $executeTime): void + public function prepare(ScheduledJobData $data, DateTimeImmutable $executeTime): void { $collection = $this->entityManager ->getRDBRepository('EmailAccount') @@ -103,7 +102,7 @@ class CheckEmailAccounts implements JobPreperable $running = $this->entityManager ->getRDBRepository('Job') ->where([ - 'scheduledJobId' => $scheduledJob->getId(), + 'scheduledJobId' => $data->getId(), 'status' => [ JobStatus::RUNNING, JobStatus::READY, @@ -120,7 +119,7 @@ class CheckEmailAccounts implements JobPreperable $countPending = $this->entityManager ->getRDBRepository('Job') ->where([ - 'scheduledJobId' => $scheduledJob->getId(), + 'scheduledJobId' => $data->getId(), 'status' => JobStatus::PENDING, 'targetType' => 'EmailAccount', 'targetId' => $entity->getId(), @@ -134,8 +133,8 @@ class CheckEmailAccounts implements JobPreperable $jobEntity = $this->entityManager->getEntity('Job'); $jobEntity->set([ - 'name' => $scheduledJob->getName(), - 'scheduledJobId' => $scheduledJob->getId(), + 'name' => $data->getName(), + 'scheduledJobId' => $data->getId(), 'executeTime' => $executeTime->format(DateTime::SYSTEM_DATE_TIME_FORMAT), 'targetType' => 'EmailAccount', 'targetId' => $entity->getId(), diff --git a/application/Espo/Jobs/CheckInboundEmails.php b/application/Espo/Jobs/CheckInboundEmails.php index e665fe3d30..503eb2164e 100644 --- a/application/Espo/Jobs/CheckInboundEmails.php +++ b/application/Espo/Jobs/CheckInboundEmails.php @@ -35,13 +35,12 @@ use Espo\Core\{ Job\JobStatus, Job\JobPreperable, Job\Data, + Job\ScheduledJobData, ServiceFactory, ORM\EntityManager, Utils\DateTime, }; -use Espo\Entities\ScheduledJob; - use Throwable; use DateTimeImmutable; @@ -87,7 +86,7 @@ class CheckInboundEmails implements JobPreperable } } - public function prepare(ScheduledJob $scheduledJob, DateTimeImmutable $executeTime): void + public function prepare(ScheduledJobData $data, DateTimeImmutable $executeTime): void { $collection = $this->entityManager ->getRDBRepository('InboundEmail') @@ -101,7 +100,7 @@ class CheckInboundEmails implements JobPreperable $running = $this->entityManager ->getRDBRepository('Job') ->where([ - 'scheduledJobId' => $scheduledJob->getId(), + 'scheduledJobId' => $data->getId(), 'status' => [ JobStatus::RUNNING, JobStatus::READY, @@ -118,7 +117,7 @@ class CheckInboundEmails implements JobPreperable $countPending = $this->entityManager ->getRDBRepository('Job') ->where([ - 'scheduledJobId' => $scheduledJob->getId(), + 'scheduledJobId' => $data->getId(), 'status' => JobStatus::PENDING, 'targetType' => 'InboundEmail', 'targetId' => $entity->getId(), @@ -132,8 +131,8 @@ class CheckInboundEmails implements JobPreperable $jobEntity = $this->entityManager->getEntity('Job'); $jobEntity->set([ - 'name' => $scheduledJob->getName(), - 'scheduledJobId' => $scheduledJob->getId(), + 'name' => $data->getName(), + 'scheduledJobId' => $data->getId(), 'executeTime' => $executeTime->format(DateTime::SYSTEM_DATE_TIME_FORMAT), 'targetType' => 'InboundEmail', 'targetId' => $entity->getId(),