Use Populator to add group and event to available options
[MAILPOET-4934]
This commit is contained in:
@ -50,6 +50,10 @@ export function EditNewsletter(): JSX.Element {
|
|||||||
|
|
||||||
const createEmail = useCallback(async () => {
|
const createEmail = useCallback(async () => {
|
||||||
setRedirectToTemplateSelection(true);
|
setRedirectToTemplateSelection(true);
|
||||||
|
const options = {
|
||||||
|
automationId,
|
||||||
|
automationStepId,
|
||||||
|
};
|
||||||
const response = await MailPoet.Ajax.post({
|
const response = await MailPoet.Ajax.post({
|
||||||
api_version: window.mailpoet_api_version,
|
api_version: window.mailpoet_api_version,
|
||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
@ -57,10 +61,7 @@ export function EditNewsletter(): JSX.Element {
|
|||||||
data: {
|
data: {
|
||||||
type: 'automation',
|
type: 'automation',
|
||||||
subject: '',
|
subject: '',
|
||||||
options: {
|
options,
|
||||||
automationId,
|
|
||||||
automationStepId,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -193,46 +193,49 @@ class SendEmailAction implements Action {
|
|||||||
$email->setReplyToName($args['reply_to_name'] ?? '');
|
$email->setReplyToName($args['reply_to_name'] ?? '');
|
||||||
$email->setReplyToAddress($args['reply_to_address'] ?? '');
|
$email->setReplyToAddress($args['reply_to_address'] ?? '');
|
||||||
$email->setGaCampaign($args['ga_campaign'] ?? '');
|
$email->setGaCampaign($args['ga_campaign'] ?? '');
|
||||||
if ($this->automationHasWooCommerceTrigger($automation)) {
|
$this->storeNewsletterOption(
|
||||||
$this->storeNewsletterOption($email, NewsletterOptionFieldEntity::NAME_GROUP, 'woocommerce');
|
$email,
|
||||||
}
|
NewsletterOptionFieldEntity::NAME_GROUP,
|
||||||
if ($this->automationHasAbandonedCartTrigger($automation)) {
|
$this->automationHasWooCommerceTrigger($automation) ? 'woocommerce' : null
|
||||||
$this->storeNewsletterOption($email, NewsletterOptionFieldEntity::NAME_EVENT, 'woocommerce_abandoned_shopping_cart');
|
);
|
||||||
}
|
$this->storeNewsletterOption(
|
||||||
|
$email,
|
||||||
|
NewsletterOptionFieldEntity::NAME_EVENT,
|
||||||
|
$this->automationHasAbandonedCartTrigger($automation) ? 'woocommerce_abandoned_shopping_cart' : null
|
||||||
|
);
|
||||||
|
|
||||||
$this->newslettersRepository->persist($email);
|
$this->newslettersRepository->persist($email);
|
||||||
$this->newslettersRepository->flush();
|
$this->newslettersRepository->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function storeNewsletterOption(NewsletterEntity $newsletter, string $optionName, string $optionValue): void {
|
private function storeNewsletterOption(NewsletterEntity $newsletter, string $optionName, string $optionValue = null): void {
|
||||||
$options = $newsletter->getOptions()->toArray();
|
$options = $newsletter->getOptions()->toArray();
|
||||||
foreach ($options as $option) {
|
foreach ($options as $key => $option) {
|
||||||
if ($option->getName() === $optionName) {
|
if ($option->getName() === $optionName) {
|
||||||
$option->setValue($optionValue);
|
if ($optionValue) {
|
||||||
|
$option->setValue($optionValue);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$newsletter->getOptions()->remove($key);
|
||||||
|
$this->newsletterOptionsRepository->remove($option);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$optionField = $this->newsletterOptionFieldsRepository->findOneBy([
|
if (!$optionValue) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$field = $this->newsletterOptionFieldsRepository->findOneBy([
|
||||||
'name' => $optionName,
|
'name' => $optionName,
|
||||||
'newsletterType' => $newsletter->getType(),
|
'newsletterType' => $newsletter->getType(),
|
||||||
]);
|
]);
|
||||||
|
if (!$field) {
|
||||||
if (!$optionField) {
|
return;
|
||||||
$optionField = new NewsletterOptionFieldEntity();
|
|
||||||
$optionField->setName($optionName);
|
|
||||||
$optionField->setNewsletterType($newsletter->getType());
|
|
||||||
$this->newsletterOptionFieldsRepository->persist($optionField);
|
|
||||||
}
|
|
||||||
$option = $this->newsletterOptionsRepository->findOneBy([
|
|
||||||
'newsletter' => $newsletter,
|
|
||||||
'optionField' => $optionField,
|
|
||||||
]);
|
|
||||||
if (!$option instanceof NewsletterOptionEntity) {
|
|
||||||
$option = new NewsletterOptionEntity($newsletter, $optionField);
|
|
||||||
$newsletter->getOptions()->add($option);
|
|
||||||
$this->newsletterOptionsRepository->persist($option);
|
|
||||||
}
|
}
|
||||||
|
$option = new NewsletterOptionEntity($newsletter, $field);
|
||||||
$option->setValue($optionValue);
|
$option->setValue($optionValue);
|
||||||
|
$this->newsletterOptionsRepository->persist($option);
|
||||||
$newsletter->getOptions()->add($option);
|
$newsletter->getOptions()->add($option);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -430,10 +430,26 @@ class Populator {
|
|||||||
'name' => 'group',
|
'name' => 'group',
|
||||||
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC,
|
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'name' => 'group',
|
||||||
|
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'group',
|
||||||
|
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION_TRANSACTIONAL,
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'name' => 'event',
|
'name' => 'event',
|
||||||
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC,
|
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'name' => 'event',
|
||||||
|
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'event',
|
||||||
|
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION_TRANSACTIONAL,
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'name' => 'sendTo',
|
'name' => 'sendTo',
|
||||||
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC,
|
'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC,
|
||||||
|
Reference in New Issue
Block a user