chg: [event] Deduplicate tags for extended view

pull/6259/head
Jakub Onderka 2020-08-31 15:29:28 +02:00
parent 8f806c4f1b
commit 076322230f
1 changed files with 14 additions and 5 deletions

View File

@ -2433,24 +2433,33 @@ class Event extends AppModel
return $event;
}
private function __mergeExtensions($user, $uuid, $event)
private function __mergeExtensions(array $user, $uuid, array $event)
{
$extensions = $this->fetchEvent($user, array('eventsExtendingUuid' => $uuid));
$thingsToMerge = array('Attribute', 'Object', 'ShadowAttribute', 'EventTag', 'Galaxy', 'RelatedEvent');
foreach ($extensions as $k2 => $extensionEvent) {
foreach ($extensions as $extensionEvent) {
$eventMeta = array(
'id' => $extensionEvent['Event']['id'],
'info' => $extensionEvent['Event']['info'],
'Orgc' => array(
'id' => $extensionEvent['Orgc']['id'],
'name' => $extensionEvent['Orgc']['name'],
'uuid' => $extensionEvent['Orgc']['uuid']
)
'uuid' => $extensionEvent['Orgc']['uuid'],
),
);
$event['Event']['extensionEvents'][$eventMeta['id']] = $eventMeta;
$thingsToMerge = array('Attribute', 'Object', 'ShadowAttribute', 'Galaxy', 'RelatedEvent');
foreach ($thingsToMerge as $thingToMerge) {
$event[$thingToMerge] = array_merge($event[$thingToMerge], $extensionEvent[$thingToMerge]);
}
// Merge just tags that are not already in main event
foreach ($extensionEvent['EventTag'] as $eventTag) {
foreach ($event['EventTag'] as $eT) {
if ($eT['Tag']['id'] == $eventTag['Tag']['id']) {
continue 2; // tag already exists, skip
}
}
$event['EventTag'][] = $eventTag;
}
}
return $event;
}