From dde3b159ea032a2f90ca38b93c8c8882e2db2a38 Mon Sep 17 00:00:00 2001 From: David Remer Date: Wed, 10 Aug 2022 13:20:01 +0300 Subject: [PATCH] Add status parameter to getWorkflows method [MAILPOET-4417] --- .../Automation/Engine/Storage/WorkflowStorage.php | 14 +++++++++++--- mailpoet/tasks/phpstan/phpstan.neon | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/mailpoet/lib/Automation/Engine/Storage/WorkflowStorage.php b/mailpoet/lib/Automation/Engine/Storage/WorkflowStorage.php index 029344ab90..d1ba1467c6 100644 --- a/mailpoet/lib/Automation/Engine/Storage/WorkflowStorage.php +++ b/mailpoet/lib/Automation/Engine/Storage/WorkflowStorage.php @@ -69,14 +69,22 @@ class WorkflowStorage { } /** @return Workflow[] */ - public function getWorkflows(): array { + public function getWorkflows(array $status = null): array { $workflowTable = esc_sql($this->workflowTable); $versionTable = esc_sql($this->versionsTable); - $query = " - SELECT workflow.*, version.id AS version_id, version.steps, version.trigger_keys + $query = $status ? + (string)$this->wpdb->prepare(" + SELECT workflow.*, version.id AS version_id, version.steps, version.trigger_keys + FROM $workflowTable AS workflow INNER JOIN $versionTable as version ON (version.workflow_id=workflow.id) + WHERE version.id = (SELECT Max(id) FROM $versionTable WHERE workflow_id= version.workflow_id) AND workflow.status IN (%s) + ORDER BY workflow.id DESC", + implode(",", $status) + ) : + "SELECT workflow.*, version.id AS version_id, version.steps, version.trigger_keys FROM $workflowTable AS workflow INNER JOIN $versionTable as version ON (version.workflow_id=workflow.id) WHERE version.id = (SELECT Max(id) FROM $versionTable WHERE workflow_id= version.workflow_id) ORDER BY workflow.id DESC;"; + $data = $this->wpdb->get_results($query, ARRAY_A); return array_map(function (array $workflowData) { return Workflow::fromArray($workflowData); diff --git a/mailpoet/tasks/phpstan/phpstan.neon b/mailpoet/tasks/phpstan/phpstan.neon index f9278be6a7..51c05a9af2 100644 --- a/mailpoet/tasks/phpstan/phpstan.neon +++ b/mailpoet/tasks/phpstan/phpstan.neon @@ -50,7 +50,7 @@ parameters: path: ../../lib/Automation/Engine/Storage/WorkflowRunStorage.php - message: "#^Cannot cast string|void to string\\.$#" - count: 4 + count: 5 path: ../../lib/Automation/Engine/Storage/WorkflowStorage.php reportUnmatchedIgnoredErrors: true dynamicConstantNames: