Source
xxxxxxxxxx
<?php
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
class CControllerSearch extends CController {
/**
* Identifies whether the current user admin.
*
* @var bool
*/
private $admin;
/**
* Search string.
*
* @var string
*/
private $search;
/**
* Limit search string.
*
* @var int
*/
private $limit;
protected function init() {
$this->disableCsrfValidation();
$this->admin = in_array($this->getUserType(), [
USER_TYPE_ZABBIX_ADMIN,
USER_TYPE_SUPER_ADMIN
]);
}
protected function checkInput() {
$ret = $this->validateInput(['search' => 'string']);
if (!$ret) {
$this->setResponse(new CControllerResponseFatal());
}
return $ret;
}
protected function checkPermissions() {
return ($this->getUserType() >= USER_TYPE_ZABBIX_USER);
}
protected function doAction() {
$this->search = trim($this->getInput('search', ''));
$this->limit = CWebUser::$data['rows_per_page'];
$data = [
'search' => _('Search pattern is empty'),
'admin' => $this->admin,
'hosts' => [],
'template_groups' => [],
'host_groups' => [],
'templates' => [],
'total_host_groups_cnt' => 0,
'total_template_groups_cnt' => 0,
'total_hosts_cnt' => 0,
'total_templates_cnt' => 0,
'allowed_ui_hosts' => $this->checkAccess(CRoleHelper::UI_MONITORING_HOSTS),
'allowed_ui_conf_hosts' => $this->checkAccess(CRoleHelper::UI_CONFIGURATION_HOSTS),
'allowed_ui_latest_data' => $this->checkAccess(CRoleHelper::UI_MONITORING_LATEST_DATA),
'allowed_ui_problems' => $this->checkAccess(CRoleHelper::UI_MONITORING_PROBLEMS),
'allowed_ui_conf_templates' => $this->checkAccess(CRoleHelper::UI_CONFIGURATION_TEMPLATES),
'allowed_ui_conf_host_groups' => $this->checkAccess(CRoleHelper::UI_CONFIGURATION_HOST_GROUPS),
'allowed_ui_conf_template_groups' => $this->checkAccess(CRoleHelper::UI_CONFIGURATION_TEMPLATE_GROUPS)
];
if ($this->search !== '') {
[$data['hosts'], $data['total_hosts_cnt']] = $this->getHostsData();
[$data['template_groups'], $data['total_template_groups_cnt']] = $this->getTemplateGroupsData();
[$data['host_groups'], $data['total_host_groups_cnt']] = $this->getHostGroupsData();