Source
xxxxxxxxxx
* Gathers host group data, sorts according to search pattern and sets editable flag if necessary.
<?php
/*
** Zabbix
** 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 General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** 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 General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
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->disableSIDValidation();
$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' => [],
'groups' => [],
'templates' => [],
'total_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)
];
if ($this->search !== '') {
list($data['hosts'], $data['total_hosts_cnt']) = $this->getHostsData();
list($data['groups'], $data['total_groups_cnt']) = $this->getHostGroupsData();