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 code
pull/5381/head
mokaddem 2019-11-08 11:37:43 +01:00
parent 8e60c3d8d4
commit 437490872b
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
3 changed files with 33 additions and 36 deletions

View File

@ -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(

View File

@ -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;
}
}

View File

@ -423,6 +423,9 @@ class Organisation extends AppModel
'fields' => array('id'),
'recursive' => -1
));
if (empty($orgIds)) {
return array(-1);
}
return array_values($orgIds);
}
}