diff --git a/mailpoet/assets/js/src/automation/integrations/mailpoet/steps/send_email/edit/edit_newsletter.tsx b/mailpoet/assets/js/src/automation/integrations/mailpoet/steps/send_email/edit/edit_newsletter.tsx index d227319a01..4f3e88fdfa 100644 --- a/mailpoet/assets/js/src/automation/integrations/mailpoet/steps/send_email/edit/edit_newsletter.tsx +++ b/mailpoet/assets/js/src/automation/integrations/mailpoet/steps/send_email/edit/edit_newsletter.tsx @@ -50,6 +50,10 @@ export function EditNewsletter(): JSX.Element { const createEmail = useCallback(async () => { setRedirectToTemplateSelection(true); + const options = { + automationId, + automationStepId, + }; const response = await MailPoet.Ajax.post({ api_version: window.mailpoet_api_version, endpoint: 'newsletters', @@ -57,10 +61,7 @@ export function EditNewsletter(): JSX.Element { data: { type: 'automation', subject: '', - options: { - automationId, - automationStepId, - }, + options, }, }); diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/Actions/SendEmailAction.php b/mailpoet/lib/Automation/Integrations/MailPoet/Actions/SendEmailAction.php index f40449457a..627d6e58e8 100644 --- a/mailpoet/lib/Automation/Integrations/MailPoet/Actions/SendEmailAction.php +++ b/mailpoet/lib/Automation/Integrations/MailPoet/Actions/SendEmailAction.php @@ -193,46 +193,49 @@ class SendEmailAction implements Action { $email->setReplyToName($args['reply_to_name'] ?? ''); $email->setReplyToAddress($args['reply_to_address'] ?? ''); $email->setGaCampaign($args['ga_campaign'] ?? ''); - if ($this->automationHasWooCommerceTrigger($automation)) { - $this->storeNewsletterOption($email, NewsletterOptionFieldEntity::NAME_GROUP, 'woocommerce'); - } - if ($this->automationHasAbandonedCartTrigger($automation)) { - $this->storeNewsletterOption($email, NewsletterOptionFieldEntity::NAME_EVENT, 'woocommerce_abandoned_shopping_cart'); - } + $this->storeNewsletterOption( + $email, + NewsletterOptionFieldEntity::NAME_GROUP, + $this->automationHasWooCommerceTrigger($automation) ? 'woocommerce' : null + ); + $this->storeNewsletterOption( + $email, + NewsletterOptionFieldEntity::NAME_EVENT, + $this->automationHasAbandonedCartTrigger($automation) ? 'woocommerce_abandoned_shopping_cart' : null + ); + $this->newslettersRepository->persist($email); $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(); - foreach ($options as $option) { + foreach ($options as $key => $option) { if ($option->getName() === $optionName) { - $option->setValue($optionValue); + if ($optionValue) { + $option->setValue($optionValue); + return; + } + $newsletter->getOptions()->remove($key); + $this->newsletterOptionsRepository->remove($option); return; } } - $optionField = $this->newsletterOptionFieldsRepository->findOneBy([ + if (!$optionValue) { + return; + } + + $field = $this->newsletterOptionFieldsRepository->findOneBy([ 'name' => $optionName, 'newsletterType' => $newsletter->getType(), ]); - - if (!$optionField) { - $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); + if (!$field) { + return; } + $option = new NewsletterOptionEntity($newsletter, $field); $option->setValue($optionValue); + $this->newsletterOptionsRepository->persist($option); $newsletter->getOptions()->add($option); } diff --git a/mailpoet/lib/Config/Populator.php b/mailpoet/lib/Config/Populator.php index 64a12017cf..fbd9f8fb92 100644 --- a/mailpoet/lib/Config/Populator.php +++ b/mailpoet/lib/Config/Populator.php @@ -430,10 +430,26 @@ class Populator { 'name' => 'group', 'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC, ], + [ + 'name' => 'group', + 'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION, + ], + [ + 'name' => 'group', + 'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION_TRANSACTIONAL, + ], [ 'name' => 'event', 'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC, ], + [ + 'name' => 'event', + 'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION, + ], + [ + 'name' => 'event', + 'newsletter_type' => NewsletterEntity::TYPE_AUTOMATION_TRANSACTIONAL, + ], [ 'name' => 'sendTo', 'newsletter_type' => NewsletterEntity::TYPE_AUTOMATIC,