From 638719e2b9d0553a7d42f07dd49c7a4fed178f7f Mon Sep 17 00:00:00 2001 From: Pavel Dohnal Date: Thu, 9 Dec 2021 10:39:36 +0100 Subject: [PATCH] Replace not opened by opened none of [MAILPOET-3950] --- .../dynamic/dynamic_segments_filters/email.tsx | 2 -- .../dynamic/privacy_protection_notice.tsx | 1 - assets/js/src/segments/dynamic/types.ts | 1 - .../DynamicSegmentsResponseBuilder.php | 15 ++++++++++++--- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/assets/js/src/segments/dynamic/dynamic_segments_filters/email.tsx b/assets/js/src/segments/dynamic/dynamic_segments_filters/email.tsx index b7a7d2a843..9927c384c8 100644 --- a/assets/js/src/segments/dynamic/dynamic_segments_filters/email.tsx +++ b/assets/js/src/segments/dynamic/dynamic_segments_filters/email.tsx @@ -16,7 +16,6 @@ export const EmailSegmentOptions = [ { value: EmailActionTypes.MACHINE_OPENS_ABSOLUTE_COUNT, label: MailPoet.I18n.t('emailActionMachineOpensAbsoluteCount'), group: SegmentTypes.Email }, { value: EmailActionTypes.OPENED, label: MailPoet.I18n.t('emailActionOpened'), group: SegmentTypes.Email }, { value: EmailActionTypes.MACHINE_OPENED, label: MailPoet.I18n.t('emailActionMachineOpened'), group: SegmentTypes.Email }, - { value: EmailActionTypes.NOT_OPENED, label: MailPoet.I18n.t('emailActionNotOpened'), group: SegmentTypes.Email }, { value: EmailActionTypes.CLICKED, label: MailPoet.I18n.t('emailActionClicked'), group: SegmentTypes.Email }, { value: EmailActionTypes.CLICKED_ANY, label: MailPoet.I18n.t('emailActionClickedAnyEmail'), group: SegmentTypes.Email }, { value: EmailActionTypes.NOT_CLICKED, label: MailPoet.I18n.t('emailActionNotClicked'), group: SegmentTypes.Email }, @@ -59,7 +58,6 @@ const componentsMap = { [EmailActionTypes.NOT_CLICKED]: EmailStatisticsFields, [EmailActionTypes.OPENED]: EmailStatisticsFields, [EmailActionTypes.MACHINE_OPENED]: EmailStatisticsFields, - [EmailActionTypes.NOT_OPENED]: EmailStatisticsFields, [EmailActionTypes.CLICKED_ANY]: null, }; diff --git a/assets/js/src/segments/dynamic/privacy_protection_notice.tsx b/assets/js/src/segments/dynamic/privacy_protection_notice.tsx index 8efe1a581e..ac959c7a3d 100644 --- a/assets/js/src/segments/dynamic/privacy_protection_notice.tsx +++ b/assets/js/src/segments/dynamic/privacy_protection_notice.tsx @@ -15,7 +15,6 @@ const PrivacyProtectionNotice: React.FunctionComponent = () => { EmailActionTypes.OPENS_ABSOLUTE_COUNT, EmailActionTypes.MACHINE_OPENED, EmailActionTypes.MACHINE_OPENS_ABSOLUTE_COUNT, - EmailActionTypes.NOT_OPENED, ]; let containsOpensFilter = false; diff --git a/assets/js/src/segments/dynamic/types.ts b/assets/js/src/segments/dynamic/types.ts index 0f2f90232c..95096f2d4c 100644 --- a/assets/js/src/segments/dynamic/types.ts +++ b/assets/js/src/segments/dynamic/types.ts @@ -11,7 +11,6 @@ export enum EmailActionTypes { MACHINE_OPENS_ABSOLUTE_COUNT = 'machineOpensAbsoluteCount', OPENED = 'opened', MACHINE_OPENED = 'machineOpened', - NOT_OPENED = 'notOpened', CLICKED = 'clicked', CLICKED_ANY = 'clickedAny', NOT_CLICKED = 'notClicked', diff --git a/lib/API/JSON/ResponseBuilders/DynamicSegmentsResponseBuilder.php b/lib/API/JSON/ResponseBuilders/DynamicSegmentsResponseBuilder.php index 140555c8a6..e7c3f1fa2f 100644 --- a/lib/API/JSON/ResponseBuilders/DynamicSegmentsResponseBuilder.php +++ b/lib/API/JSON/ResponseBuilders/DynamicSegmentsResponseBuilder.php @@ -5,6 +5,7 @@ namespace MailPoet\API\JSON\ResponseBuilders; use MailPoet\Entities\DynamicSegmentFilterData; use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SubscriberEntity; +use MailPoet\Segments\DynamicSegments\Filters\EmailAction; use MailPoet\Segments\SegmentDependencyValidator; use MailPoet\Segments\SegmentSubscribersRepository; use MailPoet\Subscribers\SubscribersCountsController; @@ -60,10 +61,18 @@ class DynamicSegmentsResponseBuilder { // new filters are always array, they support multiple values, the old didn't convert old filters to new format $filter['wordpressRole'] = [$filter['wordpressRole']]; } - if (($filter['segmentType'] === DynamicSegmentFilterData::TYPE_EMAIL) && isset($filter['newsletter_id']) && !isset($filter['newsletters'])) { + if (($filter['segmentType'] === DynamicSegmentFilterData::TYPE_EMAIL)) { // compatibility with older filters - $filter['newsletters'] = [intval($filter['newsletter_id'])]; - unset($filter['newsletter_id']); + if (isset($filter['newsletter_id']) && !isset($filter['newsletters'])) { + // make sure the newsletters are an array + $filter['newsletters'] = [intval($filter['newsletter_id'])]; + unset($filter['newsletter_id']); + } + if ($filter['action'] === EmailAction::ACTION_NOT_OPENED) { + // convert not opened + $filter['action'] = EmailAction::ACTION_OPENED; + $filter['operator'] = DynamicSegmentFilterData::OPERATOR_NONE; + } } $filters[] = $filter; }