mirror of https://github.com/MISP/MISP
chg: [object:mergeAttributesIntoObject] Improved logic of template canditates
Extended support of `multiple` check counting the amount of time a type can be used as wellfeature/better-logic-for-merge-attribute-into-object
parent
a55a19cd09
commit
b54d6a2c28
|
@ -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'])) {
|
||||
|
|
Loading…
Reference in New Issue