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['invalidTypes'] = array();
|
||||||
$to_return['invalidTypesMultiple'] = array();
|
$to_return['invalidTypesMultiple'] = array();
|
||||||
foreach ($template['ObjectTemplateElement'] as $templateElement) {
|
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();
|
$check_for_multiple_type = array();
|
||||||
foreach ($attributeTypes as $attributeType) {
|
foreach ($attributeTypes as $attributeType) {
|
||||||
if (isset($valid_types[$attributeType])) {
|
if (isset($valid_types[$attributeType])) {
|
||||||
if (!$valid_types[$attributeType]) { // is not multiple
|
if ($valid_types[$attributeType] !== true) { // is not multiple
|
||||||
if (isset($check_for_multiple_type[$attributeType])) {
|
$check_for_multiple_type[$attributeType] = 1;
|
||||||
$to_return['invalidTypesMultiple'][] = $attributeType;
|
|
||||||
} else {
|
|
||||||
$check_for_multiple_type[$attributeType] = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$to_return['invalidTypes'][] = $attributeType;
|
$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['invalidTypes'] = array_unique($to_return['invalidTypes'], SORT_REGULAR);
|
||||||
$to_return['invalidTypesMultiple'] = array_unique($to_return['invalidTypesMultiple'], SORT_REGULAR);
|
$to_return['invalidTypesMultiple'] = array_unique($to_return['invalidTypesMultiple'], SORT_REGULAR);
|
||||||
if (!empty($to_return['invalidTypesMultiple'])) {
|
if (!empty($to_return['invalidTypesMultiple'])) {
|
||||||
|
|
Loading…
Reference in New Issue