From c7f10a18c4c902f30e4bd11b1e7eeb0575c1cba6 Mon Sep 17 00:00:00 2001 From: David Remer Date: Mon, 1 Aug 2022 09:37:40 +0300 Subject: [PATCH] Update database entry only when an actual change happend [MAILPOET-4430] --- .../Engine/Builder/UpdateWorkflowController.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mailpoet/lib/Automation/Engine/Builder/UpdateWorkflowController.php b/mailpoet/lib/Automation/Engine/Builder/UpdateWorkflowController.php index 5dfe31cb8e..7af23c13d5 100644 --- a/mailpoet/lib/Automation/Engine/Builder/UpdateWorkflowController.php +++ b/mailpoet/lib/Automation/Engine/Builder/UpdateWorkflowController.php @@ -39,19 +39,20 @@ class UpdateWorkflowController { } $changed = false; + $storedData = $workflow->toArray(); - if (array_key_exists('name', $data)) { + if (array_key_exists('name', $data) && $workflow->getName() !== $data['name']) { $workflow->setName($data['name']); $changed = true; } - if (array_key_exists('status', $data)) { + if (array_key_exists('status', $data) && $workflow->getStatus() !== $data['status']) { $this->checkWorkflowStatus($data['status']); $workflow->setStatus($data['status']); $changed = true; } - if (array_key_exists('steps', $data)) { + if (array_key_exists('steps', $data) && json_decode($storedData['steps'], true) !== $data['steps']) { $this->validateWorkflowSteps($workflow, $data['steps']); $this->updateStepsController->updateSteps($workflow, $data['steps']); foreach ($workflow->getSteps() as $step) { @@ -61,11 +62,13 @@ class UpdateWorkflowController { $changed = true; } - if ($changed) { - $this->hooks->doWorkflowBeforeSave($workflow); - $this->storage->updateWorkflow($workflow); + if (!$changed) { + return $workflow; } + $this->hooks->doWorkflowBeforeSave($workflow); + $this->storage->updateWorkflow($workflow); + $workflow = $this->storage->getWorkflow($id); if (!$workflow) { throw Exceptions::workflowNotFound($id);