Add schema definition for automation steps
[MAILPOET-4515]
This commit is contained in:
@@ -2,8 +2,12 @@
|
||||
|
||||
namespace MailPoet\Automation\Engine\Workflows;
|
||||
|
||||
use MailPoet\Validator\Schema\ObjectSchema;
|
||||
|
||||
interface Step {
|
||||
public function getKey(): 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\Hooks;
|
||||
use MailPoet\Automation\Engine\Workflows\Action;
|
||||
use MailPoet\Validator\Builder;
|
||||
use MailPoet\Validator\Schema\ObjectSchema;
|
||||
|
||||
class DelayAction implements Action {
|
||||
/** @var ActionScheduler */
|
||||
@@ -27,6 +29,13 @@ class DelayAction implements Action {
|
||||
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 {
|
||||
$this->actionScheduler->schedule(time() + $this->calculateSeconds($step), Hooks::WORKFLOW_STEP, [
|
||||
[
|
||||
|
@@ -15,10 +15,16 @@ use MailPoet\InvalidStateException;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Newsletter\Scheduler\AutomationEmailScheduler;
|
||||
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Subscribers\SubscriberSegmentRepository;
|
||||
use MailPoet\Validator\Builder;
|
||||
use MailPoet\Validator\Schema\ObjectSchema;
|
||||
use Throwable;
|
||||
|
||||
class SendEmailAction implements Action {
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
/** @var NewslettersRepository */
|
||||
private $newslettersRepository;
|
||||
|
||||
@@ -32,11 +38,13 @@ class SendEmailAction implements Action {
|
||||
private $automationEmailScheduler;
|
||||
|
||||
public function __construct(
|
||||
SettingsController $settings,
|
||||
NewslettersRepository $newslettersRepository,
|
||||
ScheduledTasksRepository $scheduledTasksRepository,
|
||||
SubscriberSegmentRepository $subscriberSegmentRepository,
|
||||
AutomationEmailScheduler $automationEmailScheduler
|
||||
) {
|
||||
$this->settings = $settings;
|
||||
$this->newslettersRepository = $newslettersRepository;
|
||||
$this->scheduledTasksRepository = $scheduledTasksRepository;
|
||||
$this->subscriberSegmentRepository = $subscriberSegmentRepository;
|
||||
@@ -51,6 +59,15 @@ class SendEmailAction implements Action {
|
||||
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 {
|
||||
try {
|
||||
$this->getEmailForStep($step);
|
||||
|
@@ -8,6 +8,8 @@ use MailPoet\Automation\Integrations\MailPoet\Subjects\SegmentSubject;
|
||||
use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject;
|
||||
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||
use MailPoet\InvalidStateException;
|
||||
use MailPoet\Validator\Builder;
|
||||
use MailPoet\Validator\Schema\ObjectSchema;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class SegmentSubscribedTrigger implements Trigger {
|
||||
@@ -28,6 +30,10 @@ class SegmentSubscribedTrigger implements Trigger {
|
||||
return __('Subscribed to segment');
|
||||
}
|
||||
|
||||
public function getArgsSchema(): ObjectSchema {
|
||||
return Builder::object();
|
||||
}
|
||||
|
||||
public function registerHooks(): void {
|
||||
$this->wp->addAction('mailpoet_segment_subscribed', [$this, 'handleSubscription'], 10, 2);
|
||||
}
|
||||
|
Reference in New Issue
Block a user