chg: [object:mergeAttributesIntoObject] Improved logic of template canditates

Extended support of `multiple` check counting the amount of time a type can be used as well
feature/better-logic-for-merge-attribute-into-object
Sami Mokaddem 2024-04-18 14:15:57 +02:00
parent a55a19cd09
commit b54d6a2c28
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
1 changed files with 16 additions and 7 deletions

View File

@ -308,22 +308,31 @@ class ObjectTemplate extends AppModel
$to_return['invalidTypes'] = array();
$to_return['invalidTypesMultiple'] = array();
foreach ($template['ObjectTemplateElement'] as $templateElement) {
$valid_types[$templateElement['type']] = $templateElement['multiple'];
if ($templateElement['multiple']) {
$valid_types[$templateElement['type']] = true;
}
if (!isset($valid_types[$templateElement['type']])) {
$valid_types[$templateElement['type']] = 0;
}
if ($valid_types[$templateElement['type']] !== true) {
$valid_types[$templateElement['type']] += 1;
}
}
$check_for_multiple_type = array();
foreach ($attributeTypes as $attributeType) {
if (isset($valid_types[$attributeType])) {
if (!$valid_types[$attributeType]) { // is not multiple
if (isset($check_for_multiple_type[$attributeType])) {
$to_return['invalidTypesMultiple'][] = $attributeType;
} else {
$check_for_multiple_type[$attributeType] = 1;
}
if ($valid_types[$attributeType] !== true) { // is not multiple
$check_for_multiple_type[$attributeType] = 1;
}
} else {
$to_return['invalidTypes'][] = $attributeType;
}
}
foreach ($check_for_multiple_type as $type => $count) {
if ($valid_types[$attributeType] < $count) {
$to_return['invalidTypesMultiple'][] = $attributeType;
}
}
$to_return['invalidTypes'] = array_unique($to_return['invalidTypes'], SORT_REGULAR);
$to_return['invalidTypesMultiple'] = array_unique($to_return['invalidTypesMultiple'], SORT_REGULAR);
if (!empty($to_return['invalidTypesMultiple'])) {