mirror of https://github.com/MISP/MISP
chg: [restSearch] Improved meta-search code
- Correctly returns nothing if search on metas does not return anything - Renamed `orgc.sector` into `org.sector` while still being `orgc` behind the hood - Removed duplicated codepull/5381/head
parent
8e60c3d8d4
commit
437490872b
|
@ -4283,23 +4283,7 @@ class Attribute extends AppModel
|
|||
}
|
||||
|
||||
$subqueryElements = $this->Event->harvestSubqueryElements($filters);
|
||||
if (!empty($subqueryElements['galaxy'])) {
|
||||
$this->GalaxyCluster = ClassRegistry::init('GalaxyCluster');
|
||||
$tagsFromGalaxyMeta = $this->GalaxyCluster->getClusterTagsFromMeta($subqueryElements['galaxy']);
|
||||
if (!empty($filters['tags'])) {
|
||||
$filters['tags'][] = $tagsFromGalaxyMeta;
|
||||
} else {
|
||||
$filters['tags'] = $tagsFromGalaxyMeta;
|
||||
}
|
||||
}
|
||||
if (!empty($subqueryElements['orgc'])) {
|
||||
$orgcIdsFromMeta = $this->Event->Orgc->getOrgIdsFromMeta($subqueryElements['orgc']);
|
||||
if (!empty($filters['org'])) {
|
||||
$filters['org'][] = $orgcIdsFromMeta;
|
||||
} else {
|
||||
$filters['org'] = $orgcIdsFromMeta;
|
||||
}
|
||||
}
|
||||
$filters = $this->Event>addFiltersFromSubqueryElements($filters, $subqueryElements);
|
||||
|
||||
$conditions = $this->buildFilterConditions($user, $filters);
|
||||
$params = array(
|
||||
|
|
|
@ -6749,23 +6749,7 @@ class Event extends AppModel
|
|||
}
|
||||
|
||||
$subqueryElements = $this->harvestSubqueryElements($filters);
|
||||
if (!empty($subqueryElements['galaxy'])) {
|
||||
$this->GalaxyCluster = ClassRegistry::init('GalaxyCluster');
|
||||
$tagsFromGalaxyMeta = $this->GalaxyCluster->getClusterTagsFromMeta($subqueryElements['galaxy']);
|
||||
if (!empty($filters['tags'])) {
|
||||
$filters['tags'][] = $tagsFromGalaxyMeta;
|
||||
} else {
|
||||
$filters['tags'] = $tagsFromGalaxyMeta;
|
||||
}
|
||||
}
|
||||
if (!empty($subqueryElements['orgc'])) {
|
||||
$orgcIdsFromMeta = $this->Orgc->getOrgIdsFromMeta($subqueryElements['orgc']);
|
||||
if (!empty($filters['org'])) {
|
||||
$filters['org'][] = $orgcIdsFromMeta;
|
||||
} else {
|
||||
$filters['org'] = $orgcIdsFromMeta;
|
||||
}
|
||||
}
|
||||
$filters = $this->addFiltersFromSubqueryElements($filters, $subqueryElements);
|
||||
|
||||
$filters['include_attribute_count'] = 1;
|
||||
$eventid = $this->filterEventIds($user, $filters, $elementCounter);
|
||||
|
@ -6974,11 +6958,11 @@ class Event extends AppModel
|
|||
{
|
||||
$acceptedRules = array(
|
||||
'galaxy' => 1,
|
||||
'orgc' => array('sector', 'local', 'nationality')
|
||||
'org' => array('sector', 'local', 'nationality')
|
||||
);
|
||||
$subqueryElement = array(
|
||||
'galaxy' => array(),
|
||||
'orgc' => array(),
|
||||
'org' => array(),
|
||||
);
|
||||
foreach($options as $rule => $value) {
|
||||
$split = explode(".", $rule, 2);
|
||||
|
@ -6996,4 +6980,30 @@ class Event extends AppModel
|
|||
}
|
||||
return $subqueryElement;
|
||||
}
|
||||
|
||||
public function addFiltersFromSubqueryElements($filters, $subqueryElements)
|
||||
{
|
||||
if (!empty($subqueryElements['galaxy'])) {
|
||||
$this->GalaxyCluster = ClassRegistry::init('GalaxyCluster');
|
||||
$tagsFromGalaxyMeta = $this->GalaxyCluster->getClusterTagsFromMeta($subqueryElements['galaxy']);
|
||||
if (empty($tagsFromGalaxyMeta)) {
|
||||
$filters['eventid'] = -1;
|
||||
}
|
||||
if (!empty($filters['tags'])) {
|
||||
$filters['tags'][] = $tagsFromGalaxyMeta;
|
||||
} else {
|
||||
$filters['tags'] = $tagsFromGalaxyMeta;
|
||||
}
|
||||
}
|
||||
if (!empty($subqueryElements['org'])) {
|
||||
$Organisation = ClassRegistry::init('Organisation');
|
||||
$orgcIdsFromMeta = $Organisation->getOrgIdsFromMeta($subqueryElements['org']);
|
||||
if (!empty($filters['org'])) {
|
||||
$filters['org'][] = $orgcIdsFromMeta;
|
||||
} else {
|
||||
$filters['org'] = $orgcIdsFromMeta;
|
||||
}
|
||||
}
|
||||
return $filters;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -423,6 +423,9 @@ class Organisation extends AppModel
|
|||
'fields' => array('id'),
|
||||
'recursive' => -1
|
||||
));
|
||||
if (empty($orgIds)) {
|
||||
return array(-1);
|
||||
}
|
||||
return array_values($orgIds);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue