diff --git a/src/www/system_groupmanager_addprivs.php b/src/www/system_groupmanager_addprivs.php index 87cf7e42a..ee7232f9e 100644 --- a/src/www/system_groupmanager_addprivs.php +++ b/src/www/system_groupmanager_addprivs.php @@ -32,189 +32,136 @@ function cpusercmp($a, $b) return strcasecmp($a['name'], $b['name']); } -function admin_groups_sort() -{ - global $config; - - if (!is_array($config['system']['group'])) { - return; - } - - usort($config['system']['group'], "cpusercmp"); -} - require_once("guiconfig.inc"); + +if ($_SERVER['REQUEST_METHOD'] === 'GET') { + if (isset($config['system']['group'][$_GET['groupid']])) { + $groupid = $_GET['groupid']; + $a_group = & $config['system']['group'][$groupid]; + } else { + redirectHeader("system_groupmanager.php"); + exit; + } +} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') { + if (isset($config['system']['group'][$_POST['groupid']])) { + $groupid = $_POST['groupid']; + $a_group = & $config['system']['group'][$groupid]; + + $input_errors = array(); + $pconfig = $_POST; + + /* input validation */ + $reqdfields = explode(" ", "sysprivs"); + $reqdfieldsn = array(gettext("Selected priveleges")); + + do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); + + if (count($input_errors) == 0) { + if (!is_array($pconfig['sysprivs'])) { + $pconfig['sysprivs'] = array(); + } + + if (!isset($a_group['priv']) || !count($a_group['priv'])) { + $a_group['priv'] = $pconfig['sysprivs']; + } else { + $a_group['priv'] = array_merge($a_group['priv'], $pconfig['sysprivs']); + } + + if (is_array($a_group['member'])) { + foreach ($a_group['member'] as $uid) { + $user = getUserEntryByUID($uid); + if ($user) { + local_user_set($user); + } + } + } + + if (isset($config['system']['group']) && is_array($config['system']['group'])) { + usort($config['system']['group'], "cpusercmp"); + } + + write_config(); + redirectHeader("system_groupmanager.php?act=edit&groupid={$groupid}"); + exit; + } + } else { + redirectHeader("system_groupmanager.php"); + exit; + } +} + $pgtitle = array(gettext('System'), gettext('Groups'), gettext('Privileges')); -if (is_numericint($_GET['groupid'])) { - $groupid = $_GET['groupid']; -} -if (isset($_POST['groupid']) && is_numericint($_POST['groupid'])) { - $groupid = $_POST['groupid']; -} - -$a_group = & $config['system']['group'][$groupid]; - -if (!is_array($a_group)) { - redirectHeader("system_groupmanager.php?id={$groupid}"); - exit; -} - -if (!is_array($a_group['priv'])) { +if (!isset($a_group['priv']) || !is_array($a_group['priv'])) { $a_group['priv'] = array(); } -if ($_POST) { - unset($input_errors); - $pconfig = $_POST; - - /* input validation */ - $reqdfields = explode(" ", "sysprivs"); - $reqdfieldsn = array(gettext("Selected priveleges")); - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); - - if (!$input_errors) { - if (!is_array($pconfig['sysprivs'])) { - $pconfig['sysprivs'] = array(); - } - - if (!count($a_group['priv'])) { - $a_group['priv'] = $pconfig['sysprivs']; - } else { - $a_group['priv'] = array_merge($a_group['priv'], $pconfig['sysprivs']); - } - - if (is_array($a_group['member'])) { - foreach ($a_group['member'] as $uid) { - $user = getUserEntryByUID($uid); - if ($user) { - local_user_set($user); - } - } - } - - admin_groups_sort(); - - $retval = write_config(); - $savemsg = get_std_save_message(); - - redirectHeader("system_groupmanager.php?act=edit&id={$groupid}"); - exit; - } -} - include("head.inc"); ?> -
+ +