1<?php 2/* 3** Zabbix 4** Copyright (C) 2001-2021 Zabbix SIA 5** 6** This program is free software; you can redistribute it and/or modify 7** it under the terms of the GNU General Public License as published by 8** the Free Software Foundation; either version 2 of the License, or 9** (at your option) any later version. 10** 11** This program is distributed in the hope that it will be useful, 12** but WITHOUT ANY WARRANTY; without even the implied warranty of 13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14** GNU General Public License for more details. 15** 16** You should have received a copy of the GNU General Public License 17** along with this program; if not, write to the Free Software 18** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19**/ 20 21$widget = (new CWidget()) 22 ->setTitle(_('User groups')) 23 ->setControls((new CForm('get')) 24 ->cleanItems() 25 ->addItem((new CList())->addItem(new CSubmit('form', _('Create user group')))) 26 ); 27 28// create form 29$userGroupsForm = (new CForm())->setName('userGroupsForm'); 30 31// create user group table 32$userGroupTable = (new CTableInfo()) 33 ->setHeader([ 34 (new CColHeader( 35 (new CCheckBox('all_groups'))->onClick("checkAll('".$userGroupsForm->getName()."','all_groups','group_groupid');") 36 ))->addClass(ZBX_STYLE_CELL_WIDTH), 37 make_sorting_header(_('Name'), 'name', $data['sort'], $data['sortorder'], 'usergrps.php'), 38 '#', 39 _('Members'), 40 _('Frontend access'), 41 _('Debug mode'), 42 _('Status') 43 ]); 44 45foreach ($this->data['usergroups'] as $usrgrp) { 46 $userGroupId = $usrgrp['usrgrpid']; 47 48 $debugMode = ($usrgrp['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) 49 ? (new CLink(_('Enabled'), 'usergrps.php?action=usergroup.massdisabledebug&usrgrpid='.$userGroupId)) 50 ->addClass(ZBX_STYLE_LINK_ACTION) 51 ->addClass(ZBX_STYLE_ORANGE) 52 ->addSID() 53 : (new CLink(_('Disabled'), 'usergrps.php?action=usergroup.massenabledebug&usrgrpid='.$userGroupId)) 54 ->addClass(ZBX_STYLE_LINK_ACTION) 55 ->addClass(ZBX_STYLE_GREEN) 56 ->addSID(); 57 58 // gui access 59 $guiAccess = user_auth_type2str($usrgrp['gui_access']); 60 $guiAccessStyle = ZBX_STYLE_LINK_ACTION.' '.ZBX_STYLE_GREEN; 61 if ($usrgrp['gui_access'] == GROUP_GUI_ACCESS_INTERNAL) { 62 $guiAccessStyle = ZBX_STYLE_LINK_ACTION.' '.ZBX_STYLE_ORANGE; 63 } 64 if ($usrgrp['gui_access'] == GROUP_GUI_ACCESS_DISABLED) { 65 $guiAccessStyle = ZBX_STYLE_LINK_ACTION.' '.ZBX_STYLE_RED; 66 } 67 68 if (granted2update_group($userGroupId)) { 69 $nextGuiAuth = ($usrgrp['gui_access'] + 1 > GROUP_GUI_ACCESS_DISABLED) 70 ? GROUP_GUI_ACCESS_SYSTEM 71 : $usrgrp['gui_access'] + 1; 72 73 $guiAccess = (new CLink( 74 $guiAccess, 75 'usergrps.php?action=usergroup.set_gui_access&set_gui_access='.$nextGuiAuth.'&usrgrpid='.$userGroupId 76 )) 77 ->addClass($guiAccessStyle) 78 ->addSID(); 79 80 $usersStatus = ($usrgrp['users_status'] == GROUP_STATUS_ENABLED) 81 ? (new CLink(_('Enabled'), 'usergrps.php?action=usergroup.massdisable&usrgrpid='.$userGroupId)) 82 ->addClass(ZBX_STYLE_LINK_ACTION) 83 ->addClass(ZBX_STYLE_GREEN) 84 ->addSID() 85 : (new CLink(_('Disabled'), 'usergrps.php?action=usergroup.massenable&usrgrpid='.$userGroupId)) 86 ->addClass(ZBX_STYLE_LINK_ACTION) 87 ->addClass(ZBX_STYLE_RED) 88 ->addSID(); 89 } 90 else { 91 $guiAccess = (new CSpan($guiAccess))->addClass($guiAccessStyle); 92 $usersStatus = ($usrgrp['users_status'] == GROUP_STATUS_ENABLED) 93 ? (new CSpan(_('Enabled')))->addClass(ZBX_STYLE_GREEN) 94 : (new CSpan(_('Disabled')))->addClass(ZBX_STYLE_RED); 95 } 96 97 if (isset($usrgrp['users'])) { 98 $userGroupUsers = $usrgrp['users']; 99 order_result($userGroupUsers, 'alias'); 100 101 $users = []; 102 $i = 0; 103 104 foreach ($userGroupUsers as $user) { 105 $i++; 106 107 if ($i > $this->data['config']['max_in_table']) { 108 $users[] = ' …'; 109 110 break; 111 } 112 113 if ($users) { 114 $users[] = ', '; 115 } 116 117 $users[] = (new CLink(getUserFullname($user), 'users.php?form=update&userid='.$user['userid'])) 118 ->addClass(ZBX_STYLE_LINK_ALT) 119 ->addClass($user['gui_access'] == GROUP_GUI_ACCESS_DISABLED || $user['users_status'] == GROUP_STATUS_DISABLED 120 ? ZBX_STYLE_RED 121 : ZBX_STYLE_GREEN); 122 } 123 } 124 125 $name = new CLink($usrgrp['name'], 'usergrps.php?form=update&usrgrpid='.$userGroupId); 126 127 $userGroupTable->addRow([ 128 new CCheckBox('group_groupid['.$userGroupId.']', $userGroupId), 129 (new CCol($name))->addClass(ZBX_STYLE_NOWRAP), 130 [new CLink(_('Users'), 'users.php?filter_usrgrpid='.$userGroupId), CViewHelper::showNum(count($usrgrp['users']))], 131 $users, 132 $guiAccess, 133 $debugMode, 134 $usersStatus 135 ]); 136} 137 138// append table to form 139$userGroupsForm->addItem([ 140 $userGroupTable, 141 $this->data['paging'], 142 new CActionButtonList('action', 'group_groupid', [ 143 'usergroup.massenable' => ['name' => _('Enable'), 'confirm' => _('Enable selected groups?')], 144 'usergroup.massdisable' => ['name' => _('Disable'), 'confirm' => _('Disable selected groups?')], 145 'usergroup.massenabledebug' => ['name' => _('Enable debug mode'), 146 'confirm' => _('Enable debug mode in selected groups?') 147 ], 148 'usergroup.massdisabledebug' => ['name' => _('Disable debug mode'), 149 'confirm' => _('Disable debug mode in selected groups?') 150 ], 151 'usergroup.massdelete' => ['name' => _('Delete'), 'confirm' => _('Delete selected groups?')] 152 ]) 153]); 154 155// append form to widget 156$widget->addItem($userGroupsForm); 157 158return $widget; 159