Fix clicked segments

[MAILPOET-4045]
This commit is contained in:
Pavel Dohnal
2022-01-11 10:30:32 +01:00
committed by Veljko V
parent fc59384616
commit 91c34e43b3
2 changed files with 20 additions and 8 deletions

View File

@@ -63,11 +63,15 @@ class DynamicSegmentsResponseBuilder {
} }
if (($filter['segmentType'] === DynamicSegmentFilterData::TYPE_EMAIL)) { if (($filter['segmentType'] === DynamicSegmentFilterData::TYPE_EMAIL)) {
// compatibility with older filters // compatibility with older filters
if ((($filter['action'] === EmailAction::ACTION_OPENED) || ($filter['action'] === EmailAction::ACTION_NOT_OPENED))) {
if (isset($filter['newsletter_id']) && !isset($filter['newsletters'])) { if (isset($filter['newsletter_id']) && !isset($filter['newsletters'])) {
// make sure the newsletters are an array // make sure the newsletters are an array
$filter['newsletters'] = [intval($filter['newsletter_id'])]; $filter['newsletters'] = [intval($filter['newsletter_id'])];
unset($filter['newsletter_id']); unset($filter['newsletter_id']);
} }
} else {
$filter['newsletter_id'] = intval($filter['newsletter_id']);
}
if ($filter['action'] === EmailAction::ACTION_NOT_OPENED) { if ($filter['action'] === EmailAction::ACTION_NOT_OPENED) {
// convert not opened // convert not opened
$filter['action'] = EmailAction::ACTION_OPENED; $filter['action'] = EmailAction::ACTION_OPENED;

View File

@@ -147,14 +147,22 @@ class FilterDataMapper {
'connect' => $data['connect'], 'connect' => $data['connect'],
]); ]);
} }
if (empty($data['newsletters']) || !is_array($data['newsletters'])) throw new InvalidFilterException('Missing newsletter', InvalidFilterException::MISSING_NEWSLETTER_ID);
$filterData = [ $filterData = [
'newsletters' => array_map(function ($segmentId) {
return intval($segmentId);
}, $data['newsletters']),
'connect' => $data['connect'], 'connect' => $data['connect'],
'operator' => $data['operator'] ?? DynamicSegmentFilterData::OPERATOR_ANY, 'operator' => $data['operator'] ?? DynamicSegmentFilterData::OPERATOR_ANY,
]; ];
if (($data['action'] !== EmailAction::ACTION_OPENED) && ($data['action'] !== EmailAction::ACTION_NOT_OPENED)) {
if (empty($data['newsletter_id'])) throw new InvalidFilterException('Missing newsletter id', InvalidFilterException::MISSING_NEWSLETTER_ID);
$filterData['newsletter_id'] = $data['newsletter_id'];
} else {
if (empty($data['newsletters']) || !is_array($data['newsletters'])) throw new InvalidFilterException('Missing newsletter', InvalidFilterException::MISSING_NEWSLETTER_ID);
$filterData['newsletters'] = array_map(function ($segmentId) {
return intval($segmentId);
}, $data['newsletters']);
}
$filterType = DynamicSegmentFilterData::TYPE_EMAIL; $filterType = DynamicSegmentFilterData::TYPE_EMAIL;
$action = $data['action']; $action = $data['action'];
if (isset($data['link_id'])) { if (isset($data['link_id'])) {