} elseif (isset($_REQUEST['user_medias']) && isset($_REQUEST['disable_media'])) { if (isset($_REQUEST['user_medias'][$_REQUEST['disable_media']])) { $_REQUEST['user_medias'][$_REQUEST['disable_media']]['active'] = 1; } } elseif (isset($_REQUEST['del_user_media'])) { $user_medias_to_del = get_request('user_medias_to_del', array()); foreach ($user_medias_to_del as $mediaid) { if (isset($_REQUEST['user_medias'][$mediaid])) { unset($_REQUEST['user_medias'][$mediaid]); } } } elseif (isset($_REQUEST['cancel'])) { ob_end_clean(); redirect(CWebUser::$data['last_page']['url']); } elseif (isset($_REQUEST['save'])) { $auth_type = get_user_system_auth(CWebUser::$data['userid']); if ($auth_type != ZBX_AUTH_INTERNAL) { $_REQUEST['password1'] = $_REQUEST['password2'] = null; } else { $_REQUEST['password1'] = get_request('password1', null); $_REQUEST['password2'] = get_request('password2', null); } if ($_REQUEST['password1'] != $_REQUEST['password2']) { show_error_message(_('Cannot update user. Both passwords must be equal.')); } elseif (isset($_REQUEST['password1']) && CWebUser::$data['alias'] == ZBX_GUEST_USER && !zbx_empty($_REQUEST['password1'])) { show_error_message(_('For guest, password must be empty')); } elseif (isset($_REQUEST['password1']) && CWebUser::$data['alias'] != ZBX_GUEST_USER && zbx_empty($_REQUEST['password1'])) { show_error_message(_('Password should not be empty')); } else { $user = array(); $user['userid'] = CWebUser::$data['userid'];
} } else { if (isset($_REQUEST['del_user_media'])) { $user_medias_to_del = get_request('user_medias_to_del', array()); foreach ($user_medias_to_del as $mediaid) { if (isset($_REQUEST['user_medias'][$mediaid])) { unset($_REQUEST['user_medias'][$mediaid]); } } } else { if (isset($_REQUEST['cancel'])) { ob_end_clean(); redirect($USER_DETAILS['last_page']['url']); } else { if (isset($_REQUEST['save'])) { $auth_type = get_user_system_auth($USER_DETAILS['userid']); if (ZBX_AUTH_INTERNAL != $auth_type) { $_REQUEST['password1'] = $_REQUEST['password2'] = null; } else { $_REQUEST['password1'] = get_request('password1', null); $_REQUEST['password2'] = get_request('password2', null); } if ($_REQUEST['password1'] != $_REQUEST['password2']) { show_error_message(S_CANNOT_UPDATE_USER_BOTH_PASSWORDS); } else { if (isset($_REQUEST['password1']) && $USER_DETAILS['alias'] == ZBX_GUEST_USER && !zbx_empty($_REQUEST['password1'])) { show_error_message(S_FOR_GUEST_PASSWORD_MUST_BE_EMPTY); } else { if (isset($_REQUEST['password1']) && $USER_DETAILS['alias'] != ZBX_GUEST_USER && zbx_empty($_REQUEST['password1'])) { show_error_message(S_PASSWORD_SHOULD_NOT_BE_EMPTY); } else {
function insert_user_form($userid, $profile = 0) { global $ZBX_LOCALES; global $USER_DETAILS; $config = select_config(); $frm_title = S_USER; if (isset($userid)) { /* if(bccomp($userid,$USER_DETAILS['userid'])==0) $profile = 1;*/ $user = get_user_by_userid($userid); $frm_title = S_USER . ' "' . $user['alias'] . '"'; } if (isset($userid) && (!isset($_REQUEST['form_refresh']) || isset($_REQUEST['register']))) { $alias = $user['alias']; $name = $user['name']; $surname = $user['surname']; $password = null; $password1 = null; $password2 = null; $url = $user['url']; $autologin = $user['autologin']; $autologout = $user['autologout']; $lang = $user['lang']; $theme = $user['theme']; $refresh = $user['refresh']; $user_type = $user['type']; $user_groups = array(); $user_medias = array(); $sql = 'SELECT g.* ' . ' FROM usrgrp g, users_groups ug ' . ' WHERE ug.usrgrpid=g.usrgrpid ' . ' AND ug.userid=' . $userid; $db_user_groups = DBselect($sql); while ($db_group = DBfetch($db_user_groups)) { $user_groups[$db_group['usrgrpid']] = $db_group['name']; } $db_medias = DBselect('SELECT m.* FROM media m WHERE m.userid=' . $userid); while ($db_media = DBfetch($db_medias)) { $user_medias[] = array('mediaid' => $db_media['mediaid'], 'mediatypeid' => $db_media['mediatypeid'], 'period' => $db_media['period'], 'sendto' => $db_media['sendto'], 'severity' => $db_media['severity'], 'active' => $db_media['active']); } $new_group_id = 0; $new_group_name = ''; } else { $alias = get_request('alias', ''); $name = get_request('name', ''); $surname = get_request('surname', ''); $password = null; $password1 = get_request('password1', ''); $password2 = get_request('password2', ''); $url = get_request('url', ''); $autologin = get_request('autologin', 0); $autologout = get_request('autologout', 90); $lang = get_request('lang', 'en_gb'); $theme = get_request('theme', 'default.css'); $refresh = get_request('refresh', 30); $user_type = get_request('user_type', USER_TYPE_ZABBIX_USER); $user_groups = get_request('user_groups', array()); $change_password = get_request('change_password', null); $user_medias = get_request('user_medias', array()); $new_group_id = get_request('new_group_id', 0); $new_group_name = get_request('new_group_name', ''); } if ($autologin) { $autologout = 0; zbx_add_post_js("document.getElementById('autologout_visible').disabled = true;"); } else { if (isset($_REQUEST['autologout']) && $autologout < 90) { $autologout = 90; } } $perm_details = get_request('perm_details', 0); $media_types = array(); $media_type_ids = array(); foreach ($user_medias as $one_media) { $media_type_ids[$one_media['mediatypeid']] = 1; } if (count($media_type_ids) > 0) { $db_media_types = DBselect('SELECT mt.mediatypeid, mt.description ' . ' FROM media_type mt ' . ' WHERE mt.mediatypeid IN (' . implode(',', array_keys($media_type_ids)) . ')'); while ($db_media_type = DBfetch($db_media_types)) { $media_types[$db_media_type['mediatypeid']] = $db_media_type['description']; } } $frmUser = new CFormTable($frm_title); $frmUser->SetName('user_form'); $frmUser->SetHelp('web.users.php'); $frmUser->addVar('config', get_request('config', 0)); if (isset($userid)) { $frmUser->addVar('userid', $userid); } if ($profile == 0) { $frmUser->addRow(S_ALIAS, new CTextBox('alias', $alias, 40)); $frmUser->addRow(S_NAME, new CTextBox('name', $name, 40)); $frmUser->addRow(S_SURNAME, new CTextBox('surname', $surname, 40)); } $auth_type = isset($userid) ? get_user_system_auth($userid) : $config['authentication_type']; if (ZBX_AUTH_INTERNAL == $auth_type) { if (!isset($userid) || isset($change_password)) { $frmUser->addRow(S_PASSWORD, new CPassBox('password1', $password1, 20)); $frmUser->addRow(S_PASSWORD_ONCE_AGAIN, new CPassBox('password2', $password2, 20)); if (isset($change_password)) { $frmUser->addVar('change_password', $change_password); } } else { $passwd_but = new CButton('change_password', S_CHANGE_PASSWORD); if ($alias == ZBX_GUEST_USER) { $passwd_but->addOption('disabled', 'disabled'); } $frmUser->addRow(S_PASSWORD, $passwd_but); } } else { if (!isset($userid) || isset($change_password)) { $frmUser->addVar('password1', ''); $frmUser->addVar('password2', ''); } } if ($profile == 0) { global $USER_DETAILS; $frmUser->addVar('user_groups', $user_groups); if (isset($userid) && bccomp($USER_DETAILS['userid'], $userid) == 0) { $frmUser->addVar('user_type', $user_type); } else { $cmbUserType = new CComboBox('user_type', $user_type, $perm_details ? 'submit();' : null); $cmbUserType->addItem(USER_TYPE_ZABBIX_USER, user_type2str(USER_TYPE_ZABBIX_USER)); $cmbUserType->addItem(USER_TYPE_ZABBIX_ADMIN, user_type2str(USER_TYPE_ZABBIX_ADMIN)); $cmbUserType->addItem(USER_TYPE_SUPER_ADMIN, user_type2str(USER_TYPE_SUPER_ADMIN)); $frmUser->addRow(S_USER_TYPE, $cmbUserType); } $lstGroups = new CListBox('user_groups_to_del[]'); $lstGroups->options['style'] = 'width: 320px'; foreach ($user_groups as $groupid => $group_name) { $lstGroups->addItem($groupid, $group_name); } $frmUser->addRow(S_GROUPS, array($lstGroups, BR(), new CButton('add_group', S_ADD, 'return PopUp("popup_usrgrp.php?dstfrm=' . $frmUser->GetName() . '&list_name=user_groups_to_del[]&var_name=user_groups",450, 450);'), SPACE, count($user_groups) > 0 ? new CButton('del_user_group', S_DELETE_SELECTED) : null)); $frmUser->addVar('user_medias', $user_medias); $media_table = new CTableInfo(S_NO_MEDIA_DEFINED); foreach ($user_medias as $id => $one_media) { if (!isset($one_media["active"]) || $one_media["active"] == 0) { $status = new CLink(S_ENABLED, '#', 'enabled'); $status->OnClick("return create_var('" . $frmUser->GetName() . "','disable_media'," . $id . ", true);"); } else { $status = new CLink(S_DISABLED, '#', 'disabled'); $status->OnClick("return create_var('" . $frmUser->GetName() . "','enable_media'," . $id . ", true);"); } $media_url = '?dstfrm=' . $frmUser->GetName() . '&media=' . $id . '&mediatypeid=' . $one_media['mediatypeid'] . '&sendto=' . $one_media['sendto'] . '&period=' . $one_media['period'] . '&severity=' . $one_media['severity'] . '&active=' . $one_media['active']; $media_table->addRow(array(new CCheckBox('user_medias_to_del[' . $id . ']', null, null, $id), new CSpan($media_types[$one_media['mediatypeid']], 'nowrap'), new CSpan($one_media['sendto'], 'nowrap'), new CSpan($one_media['period'], 'nowrap'), media_severity2str($one_media['severity']), $status, new CButton('edit_media', S_EDIT, 'javascript: return PopUp("popup_media.php' . $media_url . '",550,400);'))); } $frmUser->addRow(S_MEDIA, array($media_table, new CButton('add_media', S_ADD, 'javascript: return PopUp("popup_media.php?dstfrm=' . $frmUser->GetName() . '",550,400);'), SPACE, count($user_medias) > 0 ? new CButton('del_user_media', S_DELETE_SELECTED) : null)); } $cmbLang = new CComboBox('lang', $lang); foreach ($ZBX_LOCALES as $loc_id => $loc_name) { $cmbLang->addItem($loc_id, $loc_name); } $frmUser->addRow(S_LANGUAGE, $cmbLang); $cmbTheme = new CComboBox('theme', $theme); $cmbTheme->addItem(ZBX_DEFAULT_CSS, S_SYSTEM_DEFAULT); $cmbTheme->addItem('css_ob.css', S_ORIGINAL_BLUE); $cmbTheme->addItem('css_bb.css', S_BLACK_AND_BLUE); $frmUser->addRow(S_THEME, $cmbTheme); $chkbx_autologin = new CCheckBox("autologin", $autologin, new CScript("var autologout_visible = document.getElementById('autologout_visible');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar autologout = document.getElementById('autologout');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.checked) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (autologout_visible.checked) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tautologout_visible.checked = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tautologout_visible.onclick();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tautologout_visible.disabled = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tautologout_visible.disabled = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}"), 1); $chkbx_autologin->AddOption('autocomplete', 'off'); $frmUser->AddRow(S_AUTO_LOGIN, $chkbx_autologin); $autologoutCheckBox = new CCheckBox('autologout_visible', isset($autologout) && $autologout != 0 ? 'yes' : 'no', new CScript("var autologout = document.getElementById('autologout');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.checked) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tautologout.disabled = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tautologout.disabled = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}")); // if autologout is disabled if (isset($autologout) && $autologout == 0) { zbx_add_post_js('document.getElementById("autologout").disabled = true;'); } $autologoutTextBox = new CNumericBox("autologout", $autologout == 0 ? '90' : $autologout, 4); $frmUser->AddRow(S_AUTO_LOGOUT, array($autologoutCheckBox, $autologoutTextBox)); $frmUser->AddRow(S_URL_AFTER_LOGIN, new CTextBox("url", $url, 50)); $frmUser->AddRow(S_SCREEN_REFRESH, new CNumericBox("refresh", $refresh, 4)); if (0 == $profile) { $frmUser->addVar('perm_details', $perm_details); $link = new CLink($perm_details ? S_HIDE : S_SHOW, '#', 'action'); $link->OnClick("return create_var('" . $frmUser->GetName() . "','perm_details'," . ($perm_details ? 0 : 1) . ", true);"); $resources_list = array(S_RIGHTS_OF_RESOURCES, SPACE . '(', $link, ')'); $frmUser->addSpanRow($resources_list, 'right_header'); if ($perm_details) { $group_ids = array_keys($user_groups); if (count($group_ids) == 0) { $group_ids = array(-1); } $db_rights = DBselect('SELECT * FROM rights r WHERE ' . DBcondition('r.groupid', $group_ids)); $tmp_perm = array(); while ($db_right = DBfetch($db_rights)) { if (isset($tmp_perm[$db_right['id']])) { $tmp_perm[$db_right['id']] = min($tmp_perm[$db_right['id']], $db_right['permission']); } else { $tmp_perm[$db_right['id']] = $db_right['permission']; } } $user_rights = array(); foreach ($tmp_perm as $id => $perm) { array_push($user_rights, array('id' => $id, 'permission' => $perm)); } //SDI($user_rights); //SDI($user_type); $frmUser->addSpanRow(get_rights_of_elements_table($user_rights, $user_type)); } } $frmUser->addItemToBottomRow(new CButton('save', S_SAVE)); if (isset($userid) && $profile == 0) { $frmUser->addItemToBottomRow(SPACE); $delete_b = new CButtonDelete("Delete selected user?", url_param("form") . url_param("config") . url_param("userid")); if (bccomp($USER_DETAILS['userid'], $userid) == 0) { $delete_b->addOption('disabled', 'disabled'); } $frmUser->addItemToBottomRow($delete_b); } $frmUser->addItemToBottomRow(SPACE); $frmUser->addItemToBottomRow(new CButtonCancel(url_param("config"))); $frmUser->Show(); }
function getUserFormData($userid, $isProfile = false) { $config = select_config(); $data = array('is_profile' => $isProfile); if (isset($userid)) { $options = array('userids' => $userid, 'output' => API_OUTPUT_EXTEND); if ($data['is_profile']) { $options['nodeids'] = id2nodeid($userid); } $users = API::User()->get($options); $user = reset($users); $data['auth_type'] = get_user_system_auth($userid); } else { $data['auth_type'] = $config['authentication_type']; } if (isset($userid) && (!isset($_REQUEST['form_refresh']) || isset($_REQUEST['register']))) { $data['alias'] = $user['alias']; $data['name'] = $user['name']; $data['surname'] = $user['surname']; $data['password1'] = null; $data['password2'] = null; $data['url'] = $user['url']; $data['autologin'] = $user['autologin']; $data['autologout'] = $user['autologout']; $data['lang'] = $user['lang']; $data['theme'] = $user['theme']; $data['refresh'] = $user['refresh']; $data['rows_per_page'] = $user['rows_per_page']; $data['user_type'] = $user['type']; $data['messages'] = getMessageSettings(); $userGroups = API::UserGroup()->get(array('userids' => $userid, 'output' => 'usrgrpid')); $userGroup = zbx_objectValues($userGroups, 'usrgrpid'); $data['user_groups'] = zbx_toHash($userGroup); $data['user_medias'] = array(); $dbMedia = DBselect('SELECT m.mediaid,m.mediatypeid,m.period,m.sendto,m.severity,m.active' . ' FROM media m' . ' WHERE m.userid=' . zbx_dbstr($userid)); while ($dbMedium = DBfetch($dbMedia)) { $data['user_medias'][] = $dbMedium; } if ($data['autologout'] > 0) { $_REQUEST['autologout'] = $data['autologout']; } } else { $data['alias'] = get_request('alias', ''); $data['name'] = get_request('name', ''); $data['surname'] = get_request('surname', ''); $data['password1'] = get_request('password1', ''); $data['password2'] = get_request('password2', ''); $data['url'] = get_request('url', ''); $data['autologin'] = get_request('autologin', 0); $data['autologout'] = get_request('autologout', 900); $data['lang'] = get_request('lang', 'en_gb'); $data['theme'] = get_request('theme', THEME_DEFAULT); $data['refresh'] = get_request('refresh', 30); $data['rows_per_page'] = get_request('rows_per_page', 50); $data['user_type'] = get_request('user_type', USER_TYPE_ZABBIX_USER); $data['user_groups'] = get_request('user_groups', array()); $data['change_password'] = get_request('change_password', null); $data['user_medias'] = get_request('user_medias', array()); // set messages $data['messages'] = get_request('messages', array()); if (!isset($data['messages']['enabled'])) { $data['messages']['enabled'] = 0; } if (!isset($data['messages']['sounds.recovery'])) { $data['messages']['sounds.recovery'] = 'alarm_ok.wav'; } if (!isset($data['messages']['triggers.recovery'])) { $data['messages']['triggers.recovery'] = 0; } if (!isset($data['messages']['triggers.severities'])) { $data['messages']['triggers.severities'] = array(); } $data['messages'] = array_merge(getMessageSettings(), $data['messages']); } // set autologout if ($data['autologin'] || !isset($data['autologout'])) { $data['autologout'] = 0; } // set media types if (!empty($data['user_medias'])) { $mediaTypeDescriptions = array(); $dbMediaTypes = DBselect('SELECT mt.mediatypeid,mt.description FROM media_type mt WHERE ' . dbConditionInt('mt.mediatypeid', zbx_objectValues($data['user_medias'], 'mediatypeid'))); while ($dbMediaType = DBfetch($dbMediaTypes)) { $mediaTypeDescriptions[$dbMediaType['mediatypeid']] = $dbMediaType['description']; } foreach ($data['user_medias'] as &$media) { $media['description'] = $mediaTypeDescriptions[$media['mediatypeid']]; } unset($media); CArrayHelper::sort($data['user_medias'], array('description', 'sendto')); } // set user rights if (!$data['is_profile']) { $data['groups'] = API::UserGroup()->get(array('usrgrpids' => $data['user_groups'], 'output' => array('usrgrpid', 'name'))); order_result($data['groups'], 'name'); $group_ids = array_values($data['user_groups']); if (count($group_ids) == 0) { $group_ids = array(-1); } $db_rights = DBselect('SELECT r.* FROM rights r WHERE ' . dbConditionInt('r.groupid', $group_ids)); // deny beat all, read-write beat read $tmp_permitions = array(); while ($db_right = DBfetch($db_rights)) { if (isset($tmp_permitions[$db_right['id']]) && $tmp_permitions[$db_right['id']] != PERM_DENY) { $tmp_permitions[$db_right['id']] = $db_right['permission'] == PERM_DENY ? PERM_DENY : max($tmp_permitions[$db_right['id']], $db_right['permission']); } else { $tmp_permitions[$db_right['id']] = $db_right['permission']; } } $data['user_rights'] = array(); foreach ($tmp_permitions as $id => $permition) { array_push($data['user_rights'], array('id' => $id, 'permission' => $permition)); } } return $data; }
$_REQUEST['user_medias'] = get_request('user_medias', array()); array_push($_REQUEST['user_medias'], $_REQUEST['new_media']); } else { if (isset($_REQUEST['user_medias']) && isset($_REQUEST['enable_media'])) { if (isset($_REQUEST['user_medias'][$_REQUEST['enable_media']])) { $_REQUEST['user_medias'][$_REQUEST['enable_media']]['active'] = 0; } } else { if (isset($_REQUEST['user_medias']) && isset($_REQUEST['disable_media'])) { if (isset($_REQUEST['user_medias'][$_REQUEST['disable_media']])) { $_REQUEST['user_medias'][$_REQUEST['disable_media']]['active'] = 1; } } else { if (isset($_REQUEST['save'])) { $config = select_config(); $auth_type = isset($_REQUEST['userid']) ? get_user_system_auth($_REQUEST['userid']) : $config['authentication_type']; if (isset($_REQUEST['userid']) && ZBX_AUTH_INTERNAL != $auth_type) { $_REQUEST['password1'] = $_REQUEST['password2'] = null; } else { if (!isset($_REQUEST['userid']) && ZBX_AUTH_INTERNAL != $auth_type) { $_REQUEST['password1'] = $_REQUEST['password2'] = 'zabbix'; } else { $_REQUEST['password1'] = get_request('password1', null); $_REQUEST['password2'] = get_request('password2', null); } } if ($_REQUEST['password1'] != $_REQUEST['password2']) { if (isset($_REQUEST['userid'])) { show_error_message(S_CANNOT_UPDATE_USER_BOTH_PASSWORDS); } else { show_error_message(S_CANNOT_ADD_USER_BOTH_PASSWORDS_MUST);
function getUserForm($userid, $profile = 0) { global $ZBX_LOCALES; global $USER_DETAILS; $config = select_config(); $frm_title = S_USER; if (isset($userid)) { /* if(bccomp($userid,$USER_DETAILS['userid'])==0) $profile = 1;*/ $options = array('userids' => $userid, 'output' => API_OUTPUT_EXTEND); if ($profile) { $options['nodeids'] = id2nodeid($userid); } $users = CUser::get($options); $user = reset($users); $frm_title = S_USER . ' "' . $user['alias'] . '"'; } if (isset($userid) && (!isset($_REQUEST['form_refresh']) || isset($_REQUEST['register']))) { $alias = $user['alias']; $name = $user['name']; $surname = $user['surname']; $password = null; $password1 = null; $password2 = null; $url = $user['url']; $autologin = $user['autologin']; $autologout = $user['autologout']; $lang = $user['lang']; $theme = $user['theme']; $refresh = $user['refresh']; $rows_per_page = $user['rows_per_page']; $user_type = $user['type']; if ($autologout > 0) { $_REQUEST['autologout'] = $autologout; } $user_groups = array(); $user_medias = array(); $options = array('userids' => $userid, 'output' => API_OUTPUT_SHORTEN); $user_groups = CUserGroup::get($options); $user_groups = zbx_objectValues($user_groups, 'usrgrpid'); $user_groups = zbx_toHash($user_groups); $db_medias = DBselect('SELECT m.* FROM media m WHERE m.userid=' . $userid); while ($db_media = DBfetch($db_medias)) { $user_medias[] = array('mediaid' => $db_media['mediaid'], 'mediatypeid' => $db_media['mediatypeid'], 'period' => $db_media['period'], 'sendto' => $db_media['sendto'], 'severity' => $db_media['severity'], 'active' => $db_media['active']); } $messages = getMessageSettings(); } else { $alias = get_request('alias', ''); $name = get_request('name', ''); $surname = get_request('surname', ''); $password = null; $password1 = get_request('password1', ''); $password2 = get_request('password2', ''); $url = get_request('url', ''); $autologin = get_request('autologin', 0); $autologout = get_request('autologout', 90); $lang = get_request('lang', 'en_gb'); $theme = get_request('theme', 'default.css'); $refresh = get_request('refresh', 30); $rows_per_page = get_request('rows_per_page', 50); $user_type = get_request('user_type', USER_TYPE_ZABBIX_USER); $user_groups = get_request('user_groups', array()); $change_password = get_request('change_password', null); $user_medias = get_request('user_medias', array()); $messages = get_request('messages', array()); if (!isset($messages['enabled'])) { $messages['enabled'] = 0; } if (!isset($messages['sounds.recovery'])) { $messages['sounds.recovery'] = 0; } if (!isset($messages['triggers.recovery'])) { $messages['triggers.recovery'] = 0; } if (!isset($messages['triggers.severities'])) { $messages['triggers.severities'] = array(); } $pMsgs = getMessageSettings(); $messages = array_merge($pMsgs, $messages); } if ($autologin || !isset($_REQUEST['autologout'])) { $autologout = 0; } else { if (isset($_REQUEST['autologout']) && $autologout < 90) { $autologout = 90; } } $perm_details = get_request('perm_details', 0); $media_types = array(); $media_type_ids = array(); foreach ($user_medias as $one_media) { $media_type_ids[$one_media['mediatypeid']] = 1; } if (count($media_type_ids) > 0) { $sql = 'SELECT mt.mediatypeid, mt.description ' . ' FROM media_type mt ' . ' WHERE mt.mediatypeid IN (' . implode(',', array_keys($media_type_ids)) . ')'; $db_media_types = DBselect($sql); while ($db_media_type = DBfetch($db_media_types)) { $media_types[$db_media_type['mediatypeid']] = $db_media_type['description']; } } $frmUser = new CFormTable($frm_title); $frmUser->setName('user_form'); $frmUser->setHelp('web.users.php'); $frmUser->addVar('config', get_request('config', 0)); if (isset($userid)) { $frmUser->addVar('userid', $userid); } if ($profile == 0) { $frmUser->addRow(S_ALIAS, new CTextBox('alias', $alias, 40)); $frmUser->addRow(S_NAME, new CTextBox('name', $name, 40)); $frmUser->addRow(S_SURNAME, new CTextBox('surname', $surname, 40)); } $auth_type = isset($userid) ? get_user_system_auth($userid) : $config['authentication_type']; if (ZBX_AUTH_INTERNAL == $auth_type) { if (!isset($userid) || isset($change_password)) { $frmUser->addRow(S_PASSWORD, new CPassBox('password1', $password1, 20)); $frmUser->addRow(S_PASSWORD_ONCE_AGAIN, new CPassBox('password2', $password2, 20)); if (isset($change_password)) { $frmUser->addVar('change_password', $change_password); } } else { $passwd_but = new CButton('change_password', S_CHANGE_PASSWORD); if ($alias == ZBX_GUEST_USER) { $passwd_but->setAttribute('disabled', 'disabled'); } $frmUser->addRow(S_PASSWORD, $passwd_but); } } if ($profile == 0) { $frmUser->addVar('user_groups', $user_groups); if (isset($userid) && bccomp($USER_DETAILS['userid'], $userid) == 0) { $frmUser->addVar('user_type', $user_type); } else { $cmbUserType = new CComboBox('user_type', $user_type, $perm_details ? 'submit();' : null); $cmbUserType->addItem(USER_TYPE_ZABBIX_USER, user_type2str(USER_TYPE_ZABBIX_USER)); $cmbUserType->addItem(USER_TYPE_ZABBIX_ADMIN, user_type2str(USER_TYPE_ZABBIX_ADMIN)); $cmbUserType->addItem(USER_TYPE_SUPER_ADMIN, user_type2str(USER_TYPE_SUPER_ADMIN)); $frmUser->addRow(S_USER_TYPE, $cmbUserType); } $lstGroups = new CListBox('user_groups_to_del[]', null, 10); $lstGroups->attributes['style'] = 'width: 320px'; $options = array('usrgrpids' => $user_groups, 'output' => API_OUTPUT_EXTEND); $groups = CUserGroup::get($options); order_result($groups, 'name'); foreach ($groups as $num => $group) { $lstGroups->addItem($group['usrgrpid'], $group['name']); } $frmUser->addRow(S_GROUPS, array($lstGroups, BR(), new CButton('add_group', S_ADD, 'return PopUp("popup_usrgrp.php?dstfrm=' . $frmUser->getName() . '&list_name=user_groups_to_del[]&var_name=user_groups",450, 450);'), SPACE, count($user_groups) > 0 ? new CButton('del_user_group', S_DELETE_SELECTED) : null)); } $cmbLang = new CComboBox('lang', $lang); foreach ($ZBX_LOCALES as $loc_id => $loc_name) { $cmbLang->addItem($loc_id, $loc_name); } $frmUser->addRow(S_LANGUAGE, $cmbLang); $cmbTheme = new CComboBox('theme', $theme); $cmbTheme->addItem(ZBX_DEFAULT_CSS, S_SYSTEM_DEFAULT); $cmbTheme->addItem('css_ob.css', S_ORIGINAL_BLUE); $cmbTheme->addItem('css_bb.css', S_BLACK_AND_BLUE); $cmbTheme->addItem('css_od.css', S_DARK_ORANGE); $frmUser->addRow(S_THEME, $cmbTheme); $script = "javascript:\n\t\t\tvar autologout_visible = document.getElementById('autologout_visible');\n\t\t\tvar autologout = document.getElementById('autologout');\n\t\t\tif(this.checked){\n\t\t\t\tif(autologout_visible.checked){\n\t\t\t\t\tautologout_visible.checked = false;\n\t\t\t\t\tautologout_visible.onclick();\n\t\t\t\t}\n\t\t\t\tautologout_visible.disabled = true;\n\t\t\t}\n\t\t\telse{\n\t\t\t\tautologout_visible.disabled = false;\n\t\t\t}"; $chkbx_autologin = new CCheckBox("autologin", $autologin, $script, 1); $chkbx_autologin->setAttribute('autocomplete', 'off'); $frmUser->addRow(S_AUTO_LOGIN, $chkbx_autologin); $script = "javascript: var autologout = document.getElementById('autologout');\n\t\t\t\t\tif(this.checked) autologout.disabled = false;\n\t\t\t\t\telse autologout.disabled = true;"; $autologoutCheckBox = new CCheckBox('autologout_visible', $autologout == 0 ? 'no' : 'yes', $script); $autologoutTextBox = new CNumericBox("autologout", $autologout == 0 ? '90' : $autologout, 4); // if autologout is disabled if ($autologout == 0) { $autologoutTextBox->setAttribute('disabled', 'disabled'); } if ($autologin != 0) { $autologoutCheckBox->setAttribute('disabled', 'disabled'); } $frmUser->addRow(S_AUTO_LOGOUT, array($autologoutCheckBox, $autologoutTextBox)); $frmUser->addRow(S_SCREEN_REFRESH, new CNumericBox('refresh', $refresh, 4)); $frmUser->addRow(S_ROWS_PER_PAGE, new CNumericBox('rows_per_page', $rows_per_page, 6)); $frmUser->addRow(S_URL_AFTER_LOGIN, new CTextBox("url", $url, 50)); //view Media Settings for users above "User" +++ if (uint_in_array($USER_DETAILS['type'], array(USER_TYPE_ZABBIX_ADMIN, USER_TYPE_SUPER_ADMIN))) { $frmUser->addVar('user_medias', $user_medias); $media_table = new CTableInfo(S_NO_MEDIA_DEFINED); foreach ($user_medias as $id => $one_media) { if (!isset($one_media['active']) || $one_media['active'] == 0) { $status = new CLink(S_ENABLED, '#', 'enabled'); $status->onClick('return create_var("' . $frmUser->getName() . '","disable_media",' . $id . ', true);'); } else { $status = new CLink(S_DISABLED, '#', 'disabled'); $status->onClick('return create_var("' . $frmUser->getName() . '","enable_media",' . $id . ', true);'); } $media_url = '?dstfrm=' . $frmUser->getName() . '&media=' . $id . '&mediatypeid=' . $one_media['mediatypeid'] . '&sendto=' . urlencode($one_media['sendto']) . '&period=' . $one_media['period'] . '&severity=' . $one_media['severity'] . '&active=' . $one_media['active']; $media_table->addRow(array(new CCheckBox('user_medias_to_del[' . $id . ']', null, null, $id), new CSpan($media_types[$one_media['mediatypeid']], 'nowrap'), new CSpan($one_media['sendto'], 'nowrap'), new CSpan($one_media['period'], 'nowrap'), media_severity2str($one_media['severity']), $status, new CButton('edit_media', S_EDIT, 'javascript: return PopUp("popup_media.php' . $media_url . '",550,400);'))); } $frmUser->addRow(S_MEDIA, array($media_table, new CButton('add_media', S_ADD, 'javascript: return PopUp("popup_media.php?dstfrm=' . $frmUser->getName() . '",550,400);'), SPACE, count($user_medias) > 0 ? new CButton('del_user_media', S_DELETE_SELECTED) : null)); } if (0 == $profile) { $frmUser->addVar('perm_details', $perm_details); $link = new CSpan($perm_details ? S_HIDE : S_SHOW, 'link'); $link->onClick("return create_var('" . $frmUser->getName() . "','perm_details'," . ($perm_details ? 0 : 1) . ", true);"); $resources_list = array(S_RIGHTS_OF_RESOURCES, SPACE . '(', $link, ')'); $frmUser->addSpanRow($resources_list, 'right_header'); if ($perm_details) { $group_ids = array_values($user_groups); if (count($group_ids) == 0) { $group_ids = array(-1); } $db_rights = DBselect('SELECT * FROM rights r WHERE ' . DBcondition('r.groupid', $group_ids)); $tmp_perm = array(); while ($db_right = DBfetch($db_rights)) { if (isset($tmp_perm[$db_right['id']])) { $tmp_perm[$db_right['id']] = min($tmp_perm[$db_right['id']], $db_right['permission']); } else { $tmp_perm[$db_right['id']] = $db_right['permission']; } } $user_rights = array(); foreach ($tmp_perm as $id => $perm) { array_push($user_rights, array('id' => $id, 'permission' => $perm)); } //SDI($user_rights); //SDI($user_type); $frmUser->addSpanRow(get_rights_of_elements_table($user_rights, $user_type)); } } if ($profile) { $msgVisibility = array('1' => array('messages[timeout]', 'messages[sounds.repeat]', 'messages[sounds.recovery]', 'messages[triggers.recovery]', 'timeout_row', 'repeat_row', 'triggers_row')); $frmUser->addRow(S_GUI_MESSAGING, new CCheckBox('messages[enabled]', $messages['enabled'], null, 1)); $newRow = $frmUser->addRow(S_MESSAGE_TIMEOUT . SPACE . '(' . S_SECONDS_SMALL . ')', new CNumericBox("messages[timeout]", $messages['timeout'], 5)); $newRow->setAttribute('id', 'timeout_row'); $repeatSound = new CComboBox('messages[sounds.repeat]', $messages['sounds.repeat'], 'javascript: if(IE) submit();'); $repeatSound->setAttribute('id', 'messages[sounds.repeat]'); $repeatSound->addItem(1, S_ONCE); $repeatSound->addItem(10, '10 ' . S_SECONDS); $repeatSound->addItem(-1, S_MESSAGE_TIMEOUT); $newRow = $frmUser->addRow(S_PLAY_SOUND, $repeatSound); $newRow->setAttribute('id', 'repeat_row'); // trigger sounds $severities = array(TRIGGER_SEVERITY_NOT_CLASSIFIED, TRIGGER_SEVERITY_INFORMATION, TRIGGER_SEVERITY_WARNING, TRIGGER_SEVERITY_AVERAGE, TRIGGER_SEVERITY_HIGH, TRIGGER_SEVERITY_DISASTER); $zbxSounds = getSounds(); $triggers = new CTable('', 'invisible'); $soundList = new CComboBox('messages[sounds.recovery]', $messages['sounds.recovery']); foreach ($zbxSounds as $filename => $file) { $soundList->addItem($file, $filename); } $resolved = array(new CCheckBox('messages[triggers.recovery]', $messages['triggers.recovery'], null, 1), S_RECOVERY, $soundList, new CButton('start', S_PLAY, "javascript: testUserSound('messages[sounds.recovery]');", false), new CButton('stop', S_STOP, 'javascript: AudioList.stopAll();', false)); $triggers->addRow($resolved); foreach ($severities as $snum => $severity) { $soundList = new CComboBox('messages[sounds.' . $severity . ']', $messages['sounds.' . $severity]); foreach ($zbxSounds as $filename => $file) { $soundList->addItem($file, $filename); } $triggers->addRow(array(new CCheckBox('messages[triggers.severities][' . $severity . ']', isset($messages['triggers.severities'][$severity]), null, 1), getSeverityCaption($severity), $soundList, new CButton('start', S_PLAY, "javascript: testUserSound('messages[sounds." . $severity . "]');", false), new CButton('stop', S_STOP, 'javascript: AudioList.stopAll();', false))); zbx_subarray_push($msgVisibility, 1, 'messages[triggers.severities][' . $severity . ']'); zbx_subarray_push($msgVisibility, 1, 'messages[sounds.' . $severity . ']'); } $newRow = $frmUser->addRow(S_TRIGGER_SEVERITY, $triggers); $newRow->setAttribute('id', 'triggers_row'); zbx_add_post_js("var userMessageSwitcher = new CViewSwitcher('messages[enabled]', 'click', " . zbx_jsvalue($msgVisibility, true) . ");"); } $frmUser->addItemToBottomRow(new CButton('save', S_SAVE)); if (isset($userid) && $profile == 0) { $frmUser->addItemToBottomRow(SPACE); $delete_b = new CButtonDelete(S_DELETE_SELECTED_USER_Q, url_param("form") . url_param("config") . url_param("userid")); if (bccomp($USER_DETAILS['userid'], $userid) == 0) { $delete_b->setAttribute('disabled', 'disabled'); } $frmUser->addItemToBottomRow($delete_b); } $frmUser->addItemToBottomRow(SPACE); $frmUser->addItemToBottomRow(new CButtonCancel(url_param("config"))); return $frmUser; }