<?php declare(strict_types = 0);
class CControllerTemplateGroupList extends CController {
protected function init(): void {
$this->disableCsrfValidation();
protected function checkInput(): bool {
'filter_name' => 'string',
'sortorder' => 'in '.ZBX_SORT_UP.','.ZBX_SORT_DOWN,
$ret = $this->validateInput($fields);
$this->setResponse(new CControllerResponseFatal());
protected function checkPermissions(): bool {
return $this->checkAccess(CRoleHelper::UI_CONFIGURATION_TEMPLATE_GROUPS);
protected function doAction(): void {
$sort_field = $this->getInput('sort', CProfile::get('web.templategroups.sort', 'name'));
$sort_order = $this->getInput('sortorder', CProfile::get('web.templategroups.sortorder', ZBX_SORT_UP));
CProfile::update('web.templategroups.sort', $sort_field, PROFILE_TYPE_STR);
CProfile::update('web.templategroups.sortorder', $sort_order, PROFILE_TYPE_STR);
if ($this->hasInput('filter_set')) {
CProfile::update('web.templategroups.filter_name', $this->getInput('filter_name', ''), PROFILE_TYPE_STR);
elseif ($this->hasInput('filter_rst')) {
CProfile::delete('web.templategroups.filter_name');
'name' => CProfile::get('web.templategroups.filter_name', '')
'sortorder' => $sort_order,
'profileIdx' => 'web.templategroups.filter',
'active_tab' => CProfile::get('web.templategroups.filter.active', 1),
'max_in_table' => CSettingsHelper::get(CSettingsHelper::MAX_IN_TABLE)
'allowed_ui_conf_templates' => CWebUser::checkAccess(CRoleHelper::UI_CONFIGURATION_TEMPLATES)
$limit = CSettingsHelper::get(CSettingsHelper::SEARCH_LIMIT) + 1;
$groups = API::TemplateGroup()->get([
'output' => ['groupid', $sort_field],
'name' => $filter['name'] === '' ? null : $filter['name']
'sortfield' => $sort_field,
CArrayHelper::sort($groups, [['field' => $sort_field, 'order' => $sort_order]]);
$page_num = $this->getInput('page', 1);
CPagerHelper::savePage('templategroup.list', $page_num);
$data['paging'] = CPagerHelper::paginate($page_num, $groups, $sort_order,
(new CUrl('zabbix.php'))->setArgument('action', $this->getAction())