Introduce subject entry to carry subject & payload data
[MAILPOET-4629]
This commit is contained in:
@@ -2,10 +2,12 @@
|
||||
|
||||
namespace MailPoet\Automation\Engine\Control;
|
||||
|
||||
use MailPoet\Automation\Engine\Data\Subject as SubjectData;
|
||||
use MailPoet\Automation\Engine\Data\SubjectEntry;
|
||||
use MailPoet\Automation\Engine\Exceptions;
|
||||
use MailPoet\Automation\Engine\Registry;
|
||||
use MailPoet\Automation\Engine\Workflows\Payload;
|
||||
use MailPoet\Automation\Engine\Workflows\Subject;
|
||||
use Throwable;
|
||||
|
||||
class SubjectLoader {
|
||||
/** @var Registry */
|
||||
@@ -17,17 +19,28 @@ class SubjectLoader {
|
||||
$this->registry = $registry;
|
||||
}
|
||||
|
||||
public function loadSubject(string $key, array $args): Subject {
|
||||
/**
|
||||
* @param SubjectData[] $subjectData
|
||||
* @return SubjectEntry<Subject<Payload>>[]
|
||||
*/
|
||||
public function getSubjectsEntries(array $subjectData): array {
|
||||
$subjectEntries = [];
|
||||
foreach ($subjectData as $data) {
|
||||
$subjectEntries[] = $this->getSubjectEntry($data);
|
||||
}
|
||||
return $subjectEntries;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SubjectData $subjectData
|
||||
* @return SubjectEntry<Subject<Payload>>
|
||||
*/
|
||||
public function getSubjectEntry(SubjectData $subjectData): SubjectEntry {
|
||||
$key = $subjectData->getKey();
|
||||
$subject = $this->registry->getSubject($key);
|
||||
if (!$subject) {
|
||||
throw Exceptions::subjectNotFound($key);
|
||||
}
|
||||
|
||||
try {
|
||||
$subject->load($args);
|
||||
} catch (Throwable $e) {
|
||||
throw Exceptions::subjectLoadFailed($key, $args);
|
||||
}
|
||||
return $subject;
|
||||
return new SubjectEntry($subject, $subjectData);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user