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,10 +63,14 @@ class DynamicSegmentsResponseBuilder {
}
if (($filter['segmentType'] === DynamicSegmentFilterData::TYPE_EMAIL)) {
// compatibility with older filters
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_OPENED) || ($filter['action'] === EmailAction::ACTION_NOT_OPENED))) {
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']);
}
} else {
$filter['newsletter_id'] = intval($filter['newsletter_id']);
}
if ($filter['action'] === EmailAction::ACTION_NOT_OPENED) {
// convert not opened

View File

@@ -147,14 +147,22 @@ class FilterDataMapper {
'connect' => $data['connect'],
]);
}
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']),
'connect' => $data['connect'],
'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;
$action = $data['action'];
if (isset($data['link_id'])) {