Refactor getting segments from form body to form entity
[MAILPOET-3297]
This commit is contained in:
committed by
Veljko V
parent
36a7cc0b25
commit
af574f7e1b
@ -211,18 +211,10 @@ class Forms extends APIEndpoint {
|
||||
// or if it's selected by the admin
|
||||
$formEntity = new FormEntity($name);
|
||||
$formEntity->setBody($body);
|
||||
$listSelectionBlocks = $formEntity->getBlocksByType(FormEntity::SEGMENT_SELECTION_BLOCK_TYPE);
|
||||
$listSelection = [];
|
||||
foreach ($listSelectionBlocks as $listSelectionBlock) {
|
||||
$listSelection = array_unique(
|
||||
array_merge(
|
||||
$listSelection, array_column($listSelectionBlock['params']['values'] ?? [], 'id')
|
||||
)
|
||||
);
|
||||
}
|
||||
$listSelection = $formEntity->getSegmentBlocksSegmentIds();
|
||||
|
||||
// check list selection
|
||||
if (count($listSelectionBlocks)) {
|
||||
if (count($listSelection)) {
|
||||
$settings['segments_selected_by'] = 'user';
|
||||
$settings['segments'] = $listSelection;
|
||||
} else {
|
||||
|
@ -177,4 +177,17 @@ class FormEntity {
|
||||
}
|
||||
return $found;
|
||||
}
|
||||
|
||||
public function getSegmentBlocksSegmentIds(): array {
|
||||
$listSelectionBlocks = $this->getBlocksByType(FormEntity::SEGMENT_SELECTION_BLOCK_TYPE);
|
||||
$listSelection = [];
|
||||
foreach ($listSelectionBlocks as $listSelectionBlock) {
|
||||
$listSelection = array_unique(
|
||||
array_merge(
|
||||
$listSelection, array_column($listSelectionBlock['params']['values'] ?? [], 'id')
|
||||
)
|
||||
);
|
||||
}
|
||||
return $listSelection;
|
||||
}
|
||||
}
|
||||
|
@ -68,4 +68,23 @@ class FormEntityTest extends \MailPoetUnitTest {
|
||||
expect($columns)->count(1);
|
||||
expect($columns[0]['body'])->count(2);
|
||||
}
|
||||
|
||||
public function testGetSegmentSelectionSegmentIds() {
|
||||
$formEntity = new FormEntity('Test' );
|
||||
$formEntity->setBody($this->body);
|
||||
$segmentIds = $formEntity->getSegmentBlocksSegmentIds();
|
||||
expect($segmentIds)->isEmpty();
|
||||
|
||||
// Add segment selection block to second columns
|
||||
$body = $this->body;
|
||||
$body[0]['body'][1]['body'][] = [
|
||||
'type' => 'segment',
|
||||
'params' => [
|
||||
'values' => [['id' => 1], ['id' => 3]],
|
||||
],
|
||||
];
|
||||
$formEntity->setBody($body);
|
||||
$segmentIds = $formEntity->getSegmentBlocksSegmentIds();
|
||||
expect($segmentIds)->equals([1, 3]);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user