Add schema definition for automation steps
[MAILPOET-4515]
This commit is contained in:
@@ -2,8 +2,12 @@
|
|||||||
|
|
||||||
namespace MailPoet\Automation\Engine\Workflows;
|
namespace MailPoet\Automation\Engine\Workflows;
|
||||||
|
|
||||||
|
use MailPoet\Validator\Schema\ObjectSchema;
|
||||||
|
|
||||||
interface Step {
|
interface Step {
|
||||||
public function getKey(): string;
|
public function getKey(): string;
|
||||||
|
|
||||||
public function getName(): string;
|
public function getName(): string;
|
||||||
|
|
||||||
|
public function getArgsSchema(): ObjectSchema;
|
||||||
}
|
}
|
||||||
|
@@ -8,6 +8,8 @@ use MailPoet\Automation\Engine\Data\Workflow;
|
|||||||
use MailPoet\Automation\Engine\Data\WorkflowRun;
|
use MailPoet\Automation\Engine\Data\WorkflowRun;
|
||||||
use MailPoet\Automation\Engine\Hooks;
|
use MailPoet\Automation\Engine\Hooks;
|
||||||
use MailPoet\Automation\Engine\Workflows\Action;
|
use MailPoet\Automation\Engine\Workflows\Action;
|
||||||
|
use MailPoet\Validator\Builder;
|
||||||
|
use MailPoet\Validator\Schema\ObjectSchema;
|
||||||
|
|
||||||
class DelayAction implements Action {
|
class DelayAction implements Action {
|
||||||
/** @var ActionScheduler */
|
/** @var ActionScheduler */
|
||||||
@@ -27,6 +29,13 @@ class DelayAction implements Action {
|
|||||||
return __('Delay', 'mailpoet');
|
return __('Delay', 'mailpoet');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getArgsSchema(): ObjectSchema {
|
||||||
|
return Builder::object([
|
||||||
|
'delay' => Builder::integer()->minimum(1),
|
||||||
|
'delay_type' => Builder::string()->default('HOURS'),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
public function run(Workflow $workflow, WorkflowRun $workflowRun, Step $step): void {
|
public function run(Workflow $workflow, WorkflowRun $workflowRun, Step $step): void {
|
||||||
$this->actionScheduler->schedule(time() + $this->calculateSeconds($step), Hooks::WORKFLOW_STEP, [
|
$this->actionScheduler->schedule(time() + $this->calculateSeconds($step), Hooks::WORKFLOW_STEP, [
|
||||||
[
|
[
|
||||||
|
@@ -15,10 +15,16 @@ use MailPoet\InvalidStateException;
|
|||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
use MailPoet\Newsletter\Scheduler\AutomationEmailScheduler;
|
use MailPoet\Newsletter\Scheduler\AutomationEmailScheduler;
|
||||||
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Subscribers\SubscriberSegmentRepository;
|
use MailPoet\Subscribers\SubscriberSegmentRepository;
|
||||||
|
use MailPoet\Validator\Builder;
|
||||||
|
use MailPoet\Validator\Schema\ObjectSchema;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
|
|
||||||
class SendEmailAction implements Action {
|
class SendEmailAction implements Action {
|
||||||
|
/** @var SettingsController */
|
||||||
|
private $settings;
|
||||||
|
|
||||||
/** @var NewslettersRepository */
|
/** @var NewslettersRepository */
|
||||||
private $newslettersRepository;
|
private $newslettersRepository;
|
||||||
|
|
||||||
@@ -32,11 +38,13 @@ class SendEmailAction implements Action {
|
|||||||
private $automationEmailScheduler;
|
private $automationEmailScheduler;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
|
SettingsController $settings,
|
||||||
NewslettersRepository $newslettersRepository,
|
NewslettersRepository $newslettersRepository,
|
||||||
ScheduledTasksRepository $scheduledTasksRepository,
|
ScheduledTasksRepository $scheduledTasksRepository,
|
||||||
SubscriberSegmentRepository $subscriberSegmentRepository,
|
SubscriberSegmentRepository $subscriberSegmentRepository,
|
||||||
AutomationEmailScheduler $automationEmailScheduler
|
AutomationEmailScheduler $automationEmailScheduler
|
||||||
) {
|
) {
|
||||||
|
$this->settings = $settings;
|
||||||
$this->newslettersRepository = $newslettersRepository;
|
$this->newslettersRepository = $newslettersRepository;
|
||||||
$this->scheduledTasksRepository = $scheduledTasksRepository;
|
$this->scheduledTasksRepository = $scheduledTasksRepository;
|
||||||
$this->subscriberSegmentRepository = $subscriberSegmentRepository;
|
$this->subscriberSegmentRepository = $subscriberSegmentRepository;
|
||||||
@@ -51,6 +59,15 @@ class SendEmailAction implements Action {
|
|||||||
return __('Send email', 'mailpoet');
|
return __('Send email', 'mailpoet');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getArgsSchema(): ObjectSchema {
|
||||||
|
return Builder::object([
|
||||||
|
'subject' => Builder::string()->default(__('Subject', 'mailpoet')),
|
||||||
|
'preheader' => Builder::string(),
|
||||||
|
'from_name' => Builder::string()->default($this->settings->get('sender.name')),
|
||||||
|
'email' => Builder::string()->default($this->settings->get('sender.address')),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
public function isValid(array $subjects, Step $step, Workflow $workflow): bool {
|
public function isValid(array $subjects, Step $step, Workflow $workflow): bool {
|
||||||
try {
|
try {
|
||||||
$this->getEmailForStep($step);
|
$this->getEmailForStep($step);
|
||||||
|
@@ -8,6 +8,8 @@ use MailPoet\Automation\Integrations\MailPoet\Subjects\SegmentSubject;
|
|||||||
use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject;
|
use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject;
|
||||||
use MailPoet\Entities\SubscriberSegmentEntity;
|
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||||
use MailPoet\InvalidStateException;
|
use MailPoet\InvalidStateException;
|
||||||
|
use MailPoet\Validator\Builder;
|
||||||
|
use MailPoet\Validator\Schema\ObjectSchema;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
class SegmentSubscribedTrigger implements Trigger {
|
class SegmentSubscribedTrigger implements Trigger {
|
||||||
@@ -28,6 +30,10 @@ class SegmentSubscribedTrigger implements Trigger {
|
|||||||
return __('Subscribed to segment');
|
return __('Subscribed to segment');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getArgsSchema(): ObjectSchema {
|
||||||
|
return Builder::object();
|
||||||
|
}
|
||||||
|
|
||||||
public function registerHooks(): void {
|
public function registerHooks(): void {
|
||||||
$this->wp->addAction('mailpoet_segment_subscribed', [$this, 'handleSubscription'], 10, 2);
|
$this->wp->addAction('mailpoet_segment_subscribed', [$this, 'handleSubscription'], 10, 2);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user