don't search setting when using specific search and not settings: specified

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2022-04-03 18:54:37 +02:00
parent 7779ec376a
commit a4b780e7f7
2 changed files with 36 additions and 30 deletions

View File

@@ -223,7 +223,10 @@ class Ajax
$result = []; $result = [];
// settings // settings
$result_settings = GlobalSearch::searchSettings($searchtext, $this->userinfo); $result_settings = [];
if (isset($this->userinfo['adminsession']) && $this->userinfo['adminsession'] == 1 && $this->userinfo['change_serversettings'] == 1) {
$result_settings = GlobalSearch::searchSettings($searchtext, $this->userinfo);
}
// all searchable entities // all searchable entities
$result_entities = GlobalSearch::searchGlobal($searchtext, $this->userinfo); $result_entities = GlobalSearch::searchGlobal($searchtext, $this->userinfo);

View File

@@ -32,36 +32,39 @@ class GlobalSearch
$stparts = explode(" ", $searchtext); $stparts = explode(" ", $searchtext);
foreach ($stparts as $searchtext) { foreach ($stparts as $searchtext) {
$searchtext = trim($searchtext); $searchtext = trim($searchtext);
if (preg_match('/^([a-z]+):$/', $searchtext, $matches)) {
// settings (if allowed) // only search settings if specific search is 'settings', else skip
if (isset($userinfo['adminsession']) && $userinfo['adminsession'] == 1 && $userinfo['change_serversettings'] == 1) { if ($matches[1] == 'settings') {
continue;
$settings_data = PhpHelper::loadConfigArrayDir(Froxlor::getInstallDir() . '/actions/admin/settings/'); } else {
$results = array(); break;
if (!isset($processed['settings'])) {
$processed['settings'] = [];
} }
PhpHelper::recursive_array_search($searchtext, $settings_data, $results); }
foreach ($results as $pathkey) { $settings_data = PhpHelper::loadConfigArrayDir(Froxlor::getInstallDir() . '/actions/admin/settings/');
$pk = explode(".", $pathkey); $results = array();
if (count($pk) > 4) { if (!isset($processed['settings'])) {
$settingkey = $pk[0] . '.' . $pk[1] . '.' . $pk[2] . '.' . $pk[3]; $processed['settings'] = [];
if (is_array($processed['settings']) && !array_key_exists($settingkey, $processed['settings'])) { }
$processed['settings'][$settingkey] = true; PhpHelper::recursive_array_search($searchtext, $settings_data, $results);
$sresult = $settings_data[$pk[0]][$pk[1]][$pk[2]][$pk[3]]; foreach ($results as $pathkey) {
if ($sresult['type'] != 'hidden') { $pk = explode(".", $pathkey);
if (!isset($result['settings'])) { if (count($pk) > 4) {
$result['settings'] = []; $settingkey = $pk[0] . '.' . $pk[1] . '.' . $pk[2] . '.' . $pk[3];
} if (is_array($processed['settings']) && !array_key_exists($settingkey, $processed['settings'])) {
$result['settings'][] = [ $processed['settings'][$settingkey] = true;
'title' => (is_array($sresult['label']) ? $sresult['label']['title'] : $sresult['label']), $sresult = $settings_data[$pk[0]][$pk[1]][$pk[2]][$pk[3]];
'href' => 'admin_settings.php?page=overview&part=' . $pk[1] . '&em=' . $pk[3] if ($sresult['type'] != 'hidden') {
]; if (!isset($result['settings'])) {
} // not hidden $result['settings'] = [];
} // if not processed }
} // correct settingkey $result['settings'][] = [
} // foreach 'title' => (is_array($sresult['label']) ? $sresult['label']['title'] : $sresult['label']),
} // admin + change_serversetting 'href' => 'admin_settings.php?page=overview&part=' . $pk[1] . '&em=' . $pk[3]
];
} // not hidden
} // if not processed
} // correct settingkey
} // foreach
} // foreach } // foreach
} // searchtext min 3 chars } // searchtext min 3 chars
return $result; return $result;