diff --git a/mailpoet/assets/js/src/automation/config.ts b/mailpoet/assets/js/src/automation/config.ts index 9957a84b17..8986aa04ed 100644 --- a/mailpoet/assets/js/src/automation/config.ts +++ b/mailpoet/assets/js/src/automation/config.ts @@ -4,7 +4,9 @@ declare global { root: string; nonce: string; }; + mailpoet_workflow_count: number; } } export const api = window.mailpoet_automation_api; +export const workflowCount = window.mailpoet_workflow_count; diff --git a/mailpoet/assets/js/src/automation/listing/store/selectors.ts b/mailpoet/assets/js/src/automation/listing/store/selectors.ts index d56fa40a94..f8e8b32115 100644 --- a/mailpoet/assets/js/src/automation/listing/store/selectors.ts +++ b/mailpoet/assets/js/src/automation/listing/store/selectors.ts @@ -1,6 +1,11 @@ import { State } from './types'; import { Workflow } from '../workflow'; +import { workflowCount } from '../../config'; export function getWorkflows(state: State): Workflow[] { return state.workflows; } + +export function getWorkflowCount(state: State): number { + return state.workflows ? state.workflows.length : workflowCount; +} diff --git a/mailpoet/lib/AdminPages/Pages/Automation.php b/mailpoet/lib/AdminPages/Pages/Automation.php index 3250e7ab3b..ab9ada3e02 100644 --- a/mailpoet/lib/AdminPages/Pages/Automation.php +++ b/mailpoet/lib/AdminPages/Pages/Automation.php @@ -4,6 +4,7 @@ namespace MailPoet\AdminPages\Pages; use MailPoet\AdminPages\PageRenderer; use MailPoet\Automation\Engine\Migrations\Migrator; +use MailPoet\Automation\Engine\Storage\WorkflowStorage; use MailPoet\WP\Functions as WPFunctions; class Automation { @@ -16,14 +17,19 @@ class Automation { /** @var WPFunctions */ private $wp; + /** @var WorkflowStorage */ + private $workflowStorage; + public function __construct( Migrator $migrator, PageRenderer $pageRenderer, - WPFunctions $wp + WPFunctions $wp, + WorkflowStorage $workflowStorage ) { $this->migrator = $migrator; $this->pageRenderer = $pageRenderer; $this->wp = $wp; + $this->workflowStorage = $workflowStorage; } public function render() { @@ -36,6 +42,7 @@ class Automation { 'root' => rtrim($this->wp->escUrlRaw($this->wp->restUrl()), '/'), 'nonce' => $this->wp->wpCreateNonce('wp_rest'), ], + 'workflowCount' => $this->workflowStorage->getWorkflowCount(), ]); } } diff --git a/mailpoet/lib/Automation/Engine/Storage/WorkflowStorage.php b/mailpoet/lib/Automation/Engine/Storage/WorkflowStorage.php index 18f731ae34..3eb173de97 100644 --- a/mailpoet/lib/Automation/Engine/Storage/WorkflowStorage.php +++ b/mailpoet/lib/Automation/Engine/Storage/WorkflowStorage.php @@ -93,6 +93,11 @@ class WorkflowStorage { }, (array)$data); } + public function getWorkflowCount(): int { + $workflowTable = esc_sql($this->workflowTable); + return (int)$this->wpdb->get_var("SELECT COUNT(*) FROM $workflowTable"); + } + /** @return string[] */ public function getActiveTriggerKeys(): array { $workflowTable = esc_sql($this->workflowTable); diff --git a/mailpoet/views/automation.html b/mailpoet/views/automation.html index b3fc1c1b74..e189742421 100644 --- a/mailpoet/views/automation.html +++ b/mailpoet/views/automation.html @@ -10,6 +10,7 @@ <% block after_javascript %> <%= javascript('automation.js')%> <% endblock %>