From 858fc54d0179ca37966a7423556ff2bad65d752d Mon Sep 17 00:00:00 2001 From: mscherer Date: Mon, 18 Nov 2024 15:19:38 +0100 Subject: [PATCH] Auto adjust Cake command on save. --- src/Model/Table/SchedulerRowsTable.php | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/Model/Table/SchedulerRowsTable.php b/src/Model/Table/SchedulerRowsTable.php index f928b41..b9d39cc 100644 --- a/src/Model/Table/SchedulerRowsTable.php +++ b/src/Model/Table/SchedulerRowsTable.php @@ -202,6 +202,15 @@ public function validateFrequency($value, array $context): bool { * @return void */ public function beforeMarshal(EventInterface $event, ArrayObject $data, ArrayObject $options): void { + $this->adjustQueueTask($data); + $this->adjustCakeCommand($data); + } + + /** + * @param \ArrayObject $data + * @return void + */ + protected function adjustQueueTask(ArrayObject $data): void { if (!isset($data['type']) || strlen((string)$data['type']) === 0 || (int)$data['type'] !== SchedulerRow::TYPE_QUEUE_TASK) { return; } @@ -220,6 +229,29 @@ public function beforeMarshal(EventInterface $event, ArrayObject $data, ArrayObj } } + /** + * @param \ArrayObject $data + * @return void + */ + protected function adjustCakeCommand(ArrayObject $data): void { + if (!isset($data['type']) || strlen((string)$data['type']) === 0 || (int)$data['type'] !== SchedulerRow::TYPE_CAKE_COMMAND) { + return; + } + + if (empty($data['content'])) { + return; + } + + if (str_contains($data['content'], '\\')) { + return; + } + + $className = App::className($data['content'], 'Command', 'Command'); + if ($className) { + $data['content'] = $className; + } + } + /** * @param \Cake\Event\EventInterface $event * @param \QueueScheduler\Model\Entity\SchedulerRow $entity