fix: [API] don't allow the same event tag to be added multiple times via an /events/add call, fixes #3507

pull/3510/head
iglocska 2018-07-23 23:34:17 +02:00
parent ee9d120a76
commit 55ef377eee
1 changed files with 15 additions and 2 deletions

View File

@ -2644,13 +2644,18 @@ class Event extends AppModel
$data['Event']['orgc_id'] = $user['org_id'];
}
$event_tag_ids = array();
if (isset($data['Event']['EventTag'])) {
if (isset($data['Event']['EventTag']['id'])) {
$data['Event']['EventTag'] = array($data['Event']['EventTag']);
}
$eventTags = array();
foreach ($data['Event']['EventTag'] as $k => $tag) {
$eventTags[] = array('tag_id' => $this->EventTag->Tag->captureTag($data['Event']['EventTag'][$k]['Tag'], $user));
$temp = $this->EventTag->Tag->captureTag($data['Event']['EventTag'][$k]['Tag'], $user);
if ($temp && !in_array($temp, $event_tag_ids)) {
$eventTags[] = array('tag_id' => $temp);
$event_tag_ids[] = $temp;
}
unset($data['Event']['EventTag'][$k]);
}
$data['Event']['EventTag'] = $eventTags;
@ -2663,8 +2668,9 @@ class Event extends AppModel
}
foreach ($data['Event']['Tag'] as $tag) {
$tag_id = $this->EventTag->Tag->captureTag($tag, $user);
if ($tag_id) {
if ($tag_id && !in_array($tag_id, $event_tag_ids)) {
$data['Event']['EventTag'][] = array('tag_id' => $tag_id);
$event_tag_ids[] = $tag_id;
}
}
unset($data['Event']['Tag']);
@ -4067,6 +4073,13 @@ class Event extends AppModel
if (!$this->__fTool->validateRouter($object['type'], $object['value'])) {
$object['validationIssue'] = true;
}
} else {
if (!$this->__wTool) {
$this->__wTool = new ValidationWarningTool();
}
if (!$this->__wTool->validateRouter($object['type'], $object['value'])) {
$object['validationIssue'] = true;
}
}
}
$object = $this->Warninglist->checkForWarning($object, $eventWarnings, $warningLists);