function getUserFormData($userid, $isProfile = false) { $config = select_config(); $data = array('is_profile' => $isProfile); if (isset($userid)) { $users = API::User()->get(array('userids' => $userid, 'output' => API_OUTPUT_EXTEND)); $user = reset($users); } 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' => array('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'] = getRequest('alias', ''); $data['name'] = getRequest('name', ''); $data['surname'] = getRequest('surname', ''); $data['password1'] = getRequest('password1', ''); $data['password2'] = getRequest('password2', ''); $data['url'] = getRequest('url', ''); $data['autologin'] = getRequest('autologin', 0); $data['autologout'] = getRequest('autologout', 900); $data['lang'] = getRequest('lang', 'en_gb'); $data['theme'] = getRequest('theme', THEME_DEFAULT); $data['refresh'] = getRequest('refresh', 30); $data['rows_per_page'] = getRequest('rows_per_page', 50); $data['user_type'] = getRequest('user_type', USER_TYPE_ZABBIX_USER); $data['user_groups'] = getRequest('user_groups', array()); $data['change_password'] = getRequest('change_password'); $data['user_medias'] = getRequest('user_medias', array()); // set messages $data['messages'] = getRequest('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']); } // authentication type if ($data['user_groups']) { $data['auth_type'] = getGroupAuthenticationType($data['user_groups'], GROUP_GUI_ACCESS_INTERNAL); } else { $data['auth_type'] = $userid === null ? $config['authentication_type'] : getUserAuthenticationType($userid, GROUP_GUI_ACCESS_INTERNAL); } // 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; }
array_push($_REQUEST['user_medias'], $_REQUEST['new_media']); } elseif (isset($_REQUEST['user_medias']) && isset($_REQUEST['enable_media'])) { if (isset($_REQUEST['user_medias'][$_REQUEST['enable_media']])) { $_REQUEST['user_medias'][$_REQUEST['enable_media']]['active'] = 0; } } 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 (hasRequest('add') || hasRequest('update')) { $config = select_config(); $isValid = true; $usrgrps = getRequest('user_groups', array()); // authentication type if ($usrgrps) { $authType = getGroupAuthenticationType($usrgrps, GROUP_GUI_ACCESS_INTERNAL); } else { $authType = hasRequest('userid') ? getUserAuthenticationType(getRequest('userid'), GROUP_GUI_ACCESS_INTERNAL) : $config['authentication_type']; } // password validation if ($authType != ZBX_AUTH_INTERNAL) { if (hasRequest('password1')) { show_error_message(_s('Password is unavailable for users with %1$s.', authentication2str($authType))); $isValid = false; } else { if (hasRequest('userid')) { $_REQUEST['password1'] = null; $_REQUEST['password2'] = null; } else { $_REQUEST['password1'] = 'zabbix'; $_REQUEST['password2'] = 'zabbix';