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 22/** 23 * @var CView $this 24 */ 25 26if ($data['uncheck']) { 27 uncheckTableRows('usergroup'); 28} 29 30$widget = (new CWidget()) 31 ->setTitle(_('User groups')) 32 ->setControls((new CTag('nav', true, 33 (new CList()) 34 ->addItem(new CRedirectButton(_('Create user group'), 35 (new CUrl('zabbix.php'))->setArgument('action', 'usergroup.edit')) 36 ) 37 ))->setAttribute('aria-label', _('Content controls')) 38 ) 39 ->addItem((new CFilter((new CUrl('zabbix.php'))->setArgument('action', 'usergroup.list'))) 40 ->addVar('action', 'usergroup.list') 41 ->setProfile($data['profileIdx']) 42 ->setActiveTab($data['active_tab']) 43 ->addFilterTab(_('Filter'), [ 44 (new CFormList())->addRow(_('Name'), 45 (new CTextBox('filter_name', $data['filter']['name'])) 46 ->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH) 47 ->setAttribute('autofocus', 'autofocus') 48 ), 49 (new CFormList())->addRow(_('Status'), 50 (new CRadioButtonList('filter_user_status', (int) $data['filter']['user_status'])) 51 ->addValue(_('Any'), -1) 52 ->addValue(_('Enabled'), GROUP_STATUS_ENABLED) 53 ->addValue(_('Disabled'), GROUP_STATUS_DISABLED) 54 ->setModern(true) 55 ) 56 ]) 57 ); 58 59$form = (new CForm()) 60 ->setName('usergroups_form') 61 ->setId('usergroups'); 62 63$table = (new CTableInfo()) 64 ->setHeader([ 65 (new CColHeader((new CCheckBox('all_groups'))->onClick(sprintf( 66 'checkAll(\'%s\',\'all_groups\',\'usrgrpids\');', $form->getName() 67 ))))->addClass(ZBX_STYLE_CELL_WIDTH), 68 make_sorting_header(_('Name'), 'name', $data['sort'], $data['sortorder'], 69 (new CUrl('zabbix.php')) 70 ->setArgument('action', 'usergroup.list') 71 ->getUrl() 72 ), 73 '#', 74 _('Members'), 75 _('Frontend access'), 76 _('Debug mode'), 77 _('Status') 78 ]); 79 80foreach ($this->data['usergroups'] as $usergroup) { 81 $debug_mode = ($usergroup['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) 82 ? (new CLink(_('Enabled'), (new CUrl('zabbix.php')) 83 ->setArgument('action', 'usergroup.massupdate') 84 ->setArgument('debug_mode', GROUP_DEBUG_MODE_DISABLED) 85 ->setArgument('usrgrpids', [$usergroup['usrgrpid']]) 86 ->getUrl() 87 )) 88 ->addClass(ZBX_STYLE_LINK_ACTION) 89 ->addClass(ZBX_STYLE_ORANGE) 90 ->addSID() 91 : (new CLink(_('Disabled'), (new CUrl('zabbix.php')) 92 ->setArgument('action', 'usergroup.massupdate') 93 ->setArgument('debug_mode', GROUP_DEBUG_MODE_ENABLED) 94 ->setArgument('usrgrpids', [$usergroup['usrgrpid']]) 95 ->getUrl() 96 )) 97 ->addClass(ZBX_STYLE_LINK_ACTION) 98 ->addClass(ZBX_STYLE_GREEN) 99 ->addSID(); 100 101 $gui_access = user_auth_type2str($usergroup['gui_access']); 102 103 if (granted2update_group($usergroup['usrgrpid'])) { 104 $next_gui_auth = ($usergroup['gui_access'] + 1 > GROUP_GUI_ACCESS_DISABLED) 105 ? GROUP_GUI_ACCESS_SYSTEM 106 : $usergroup['gui_access'] + 1; 107 108 $gui_access = (new CLink( 109 $gui_access, 110 (new CUrl('zabbix.php')) 111 ->setArgument('action', 'usergroup.massupdate') 112 ->setArgument('gui_access', $next_gui_auth) 113 ->setArgument('usrgrpids', [$usergroup['usrgrpid']]) 114 ->getUrl() 115 )) 116 ->addClass(ZBX_STYLE_LINK_ACTION) 117 ->addSID(); 118 119 $user_status = ($usergroup['users_status'] == GROUP_STATUS_ENABLED) 120 ? (new CLink(_('Enabled'), (new CUrl('zabbix.php')) 121 ->setArgument('action', 'usergroup.massupdate') 122 ->setArgument('users_status', GROUP_STATUS_DISABLED) 123 ->setArgument('usrgrpids', [$usergroup['usrgrpid']]) 124 ->getUrl() 125 )) 126 ->addClass(ZBX_STYLE_LINK_ACTION) 127 ->addClass(ZBX_STYLE_GREEN) 128 ->addSID() 129 : (new CLink(_('Disabled'), (new CUrl('zabbix.php')) 130 ->setArgument('action', 'usergroup.massupdate') 131 ->setArgument('users_status', GROUP_STATUS_ENABLED) 132 ->setArgument('usrgrpids', [$usergroup['usrgrpid']]) 133 ->getUrl() 134 )) 135 ->addClass(ZBX_STYLE_LINK_ACTION) 136 ->addClass(ZBX_STYLE_RED) 137 ->addSID(); 138 } 139 else { 140 $gui_access = new CSpan($gui_access); 141 $user_status = ($usergroup['users_status'] == GROUP_STATUS_ENABLED) 142 ? (new CSpan(_('Enabled')))->addClass(ZBX_STYLE_GREEN) 143 : (new CSpan(_('Disabled')))->addClass(ZBX_STYLE_RED); 144 } 145 146 if ($usergroup['gui_access'] == GROUP_GUI_ACCESS_INTERNAL) { 147 $gui_access->addClass(ZBX_STYLE_ORANGE); 148 } 149 elseif ($usergroup['gui_access'] == GROUP_GUI_ACCESS_DISABLED) { 150 $gui_access->addClass(ZBX_STYLE_RED); 151 } 152 else { 153 $gui_access->addClass(ZBX_STYLE_GREEN); 154 } 155 156 $users = []; 157 foreach ($usergroup['users'] as $user) { 158 if ($users) { 159 $users[] = ', '; 160 } 161 162 $user_has_access = ($user['gui_access'] != GROUP_GUI_ACCESS_DISABLED 163 && $user['users_status'] != GROUP_STATUS_DISABLED 164 ); 165 166 $user = $data['allowed_ui_users'] 167 ? (new CLink(getUserFullname($user), (new CUrl('zabbix.php')) 168 ->setArgument('action', 'user.edit') 169 ->setArgument('userid', $user['userid']) 170 ->getUrl() 171 )) 172 ->addClass(ZBX_STYLE_LINK_ALT) 173 : new CSpan(getUserFullname($user)); 174 175 $users[] = $user->addClass($user_has_access ? ZBX_STYLE_GREEN : ZBX_STYLE_RED); 176 } 177 178 if (count($usergroup['users']) != $usergroup['user_cnt']) { 179 $users[] = ' …'; 180 } 181 182 $name = new CLink($usergroup['name'], (new CUrl('zabbix.php')) 183 ->setArgument('action', 'usergroup.edit') 184 ->setArgument('usrgrpid', $usergroup['usrgrpid']) 185 ->getUrl() 186 ); 187 188 $table->addRow([ 189 new CCheckBox('usrgrpids['.$usergroup['usrgrpid'].']', $usergroup['usrgrpid']), 190 (new CCol($name))->addClass(ZBX_STYLE_NOWRAP), 191 [ 192 $data['allowed_ui_users'] 193 ? new CLink(_('Users'), (new CUrl('zabbix.php')) 194 ->setArgument('action', 'user.list') 195 ->setArgument('filter_usrgrpid', $usergroup['usrgrpid']) 196 ->getUrl() 197 ) 198 : _('Users'), 199 CViewHelper::showNum($usergroup['user_cnt']) 200 ], 201 $users, 202 $gui_access, 203 $debug_mode, 204 $user_status 205 ]); 206} 207 208$form->addItem([ 209 $table, 210 $this->data['paging'], 211 new CActionButtonList('action', 'usrgrpids', [ 212 ['name' => _('Enable'), 'confirm' => _('Enable selected groups?'), 213 'redirect' => (new CUrl('zabbix.php')) 214 ->setArgument('action', 'usergroup.massupdate') 215 ->setArgument('users_status', GROUP_STATUS_ENABLED) 216 ->getUrl() 217 ], 218 ['name' => _('Disable'), 'confirm' => _('Disable selected groups?'), 219 'redirect' => (new CUrl('zabbix.php')) 220 ->setArgument('action', 'usergroup.massupdate') 221 ->setArgument('users_status', GROUP_STATUS_DISABLED) 222 ->getUrl() 223 ], 224 ['name' => _('Enable debug mode'), 'confirm' => _('Enable debug mode in selected groups?'), 225 'redirect' => (new CUrl('zabbix.php')) 226 ->setArgument('action', 'usergroup.massupdate') 227 ->setArgument('debug_mode', GROUP_DEBUG_MODE_ENABLED) 228 ->getUrl() 229 ], 230 ['name' => _('Disable debug mode'), 'confirm' => _('Disable debug mode in selected groups?'), 231 'redirect' => (new CUrl('zabbix.php')) 232 ->setArgument('action', 'usergroup.massupdate') 233 ->setArgument('debug_mode', GROUP_DEBUG_MODE_DISABLED) 234 ->getUrl() 235 ], 236 'usergroup.delete' => ['name' => _('Delete'), 'confirm' => _('Delete selected groups?')] 237 ], 'usergroup') 238]); 239 240$widget->addItem($form); 241$widget->show(); 242