diff --git a/phpBB/adm/admin_permissions.php b/phpBB/adm/admin_permissions.php index d0755d94d0..a6596dc854 100644 --- a/phpBB/adm/admin_permissions.php +++ b/phpBB/adm/admin_permissions.php @@ -42,10 +42,10 @@ require('pagestart.' . $phpEx); // Grab and set some basic parameters // // 'mode' determines what we're altering; administrators, users, deps, etc. -// 'type' is used primarily for deps and contains the original 'mode' // 'submit' is used to determine what we're doing ... special format $mode = (isset($_REQUEST['mode'])) ? htmlspecialchars($_REQUEST['mode']) : ''; -$type = (isset($_REQUEST['type'])) ? htmlspecialchars($_REQUEST['type']) : ''; +$submode= (isset($_REQUEST['submode'])) ? htmlspecialchars($_REQUEST['submode']) : ''; +$which_mode = (!empty($submode) && $submode != $mode) ? $submode : $mode; $submit = array_values(preg_grep('#^submit_(.*)$#i', array_keys($_POST))); $submit = (sizeof($submit)) ? substr($submit[0], strpos($submit[0], '_') + 1) : ''; @@ -54,12 +54,7 @@ $submit = (sizeof($submit)) ? substr($submit[0], strpos($submit[0], '_') + 1) : // // 'auth_settings' contains the submitted option settings assigned to options, should be an // associative array with integer values -// 'auth_setting' contains the value of the submitted 'auth_option', an integer value used -// mainly by deps mode -// 'auth_option' contains a single auth_option string, used mainly by deps mode -$auth_settings = (isset($_POST['settings'])) ? array_map('intval', $_POST['settings']) : ''; -$auth_option = (isset($_REQUEST['option'])) ? htmlspecialchars($_REQUEST['option']) : ''; -$auth_setting = (isset($_REQUEST['setting'])) ? intval($_REQUEST['setting']) : ''; +$auth_settings = (isset($_POST['settings'])) ? $_POST['settings'] : ''; // Forum, User or Group information @@ -69,7 +64,17 @@ $auth_setting = (isset($_REQUEST['setting'])) ? intval($_REQUEST['setting']) : ' // 'forum_id' contains the list of forums, 0 is used for "All forums", can be array or scalar $ug_type = (isset($_REQUEST['ug_type'])) ? htmlspecialchars($_REQUEST['ug_type']) : ''; $ug_data = (isset($_POST['ug_data'])) ? $_POST['ug_data'] : ''; -$forum_id = (isset($_REQUEST['f'])) ? ((is_array($_REQUEST['f'])) ? array_map('intval', $_REQUEST['f']) : intval($_REQUEST['f'])) : 0; + +if (isset($_REQUEST['f'])) +{ + $forum_id = (is_array($_REQUEST['f'])) ? $_REQUEST['f'] : intval($_REQUEST['f']); +} + +if (!isset($forum_id[$which_mode])) +{ + $forum_id[$which_mode][] = 0; +} +$sql_forum_id = implode(', ', array_map('intval', $forum_id[$which_mode])); // Instantiate a new auth admin object in readiness @@ -137,19 +142,26 @@ if (!$auth->acl_get($which_acl)) // Are we setting deps? If we are we need to re-run the mode match above for the // relevant 'new' mode -if ($mode == 'deps') +if (!empty($submode)) { - switch ($type) + switch ($submode) { + case 'forum': + $l_title_explain = $user->lang['PERMISSIONS_EXPLAIN']; + $which_acl = 'a_auth'; + $sql_option_mode = 'f'; + break; + case 'mod': - case 'supermod': + $l_title_explain = $user->lang['MODERATORS_EXPLAIN']; $which_acl = 'a_authmods'; $sql_option_mode = 'm'; break; - case 'admin': - $which_acl = 'a_authadmins'; - $sql_option_mode = 'a'; + case 'supermod': + $l_title_explain = $user->lang['SUPER_MODERATORS_EXPLAIN']; + $which_acl = 'a_authmods'; + $sql_option_mode = 'm'; break; } @@ -167,158 +179,88 @@ switch ($submit) { case 'update': - switch ($mode) + print_r($auth_settings); + + // Here we decide which depedencies we are looking for ... if all the submitted + // settings are the same we look for a dependency of "All options". This allows + // for situations where for example changing permissions for all options to the + // same setting (e.g. 'unset' or 'no') could lead to forum view permissions being + // changed to 'unset'. When all options do not have the same setting we lookup + // dependencies for the given range of options and settings and those where + // "Any option" has been specified for the current range of settings + + // No dependencies exist or we've already shown 'em ... so now + // we go ahead and update the permission sets + echo "DONE"; + exit; + + // If we are submitting with dependencies first we set the original options + if (isset($_POST['skipdeps'])) { - case 'deps': - $forum_id = (!is_array($forum_id)) ? array($forum_id) : $forum_id; - $auth_settings_ary = $db->sql_escape(serialize($auth_settings)); - - $sql = ''; - foreach ($forum_id as $id) - { - switch (SQL_LAYER) - { - case 'mysql': - case 'mysql4': - $sql .= (($sql != '') ? ', ' : '') . "('$option', $auth_setting, $id, '$auth_settings_ary')"; - break; - - case 'mssql': - $sql .= (($sql != '') ? ' UNION ALL ' : '') . " SELECT '$option', $auth_setting, $id, '$auth_settings_ary'"; - break; - - default: - $sql = "INSERT INTO " . ACL_DEPS_TABLE . " (auth_option, auth_setting, forum_id, auth_deps) - VALUES ('$option', $auth_setting, $id, '$auth_settings_ary')"; - $result = $db->sql_query($sql); - $sql = ''; - } - } - - if ($sql != '') - { - echo $sql = "INSERT INTO " . ACL_DEPS_TABLE . " (auth_option, auth_setting, forum_id, auth_deps) - VALUES $sql"; - $result = $db->sql_query($sql); - } - - unset($auth_settings_ary); - - exit; - break; - - default: - - // User wants to submit these changes ... before we allow this - // we first check to see if any dependencies exist. If they do - // we pull them, and give the user the option of applying them - // or skipping them - $sql_forum = (is_array($forum_id)) ? ' IN (' . implode(', ', $forum_id) . ')' : ' = ' . $forum_id; - - $sql_dep = $sql_global = array(); - foreach ($auth_settings as $option => $setting) - { - $sql_dep[$setting] .= (($sql_dep[$setting] != '') ? ', ' : '') . "'$option'"; - } - - $sql_options = ''; - foreach ($sql_dep as $setting => $options) - { - $sql_options .= (($sql_options != '') ? ' OR ' : '') . " (auth_option IN ($options) AND auth_setting = $setting)"; - } - - $sql = "SELECT auth_deps - FROM " . ACL_DEPS_TABLE . " - WHERE $sql_options"; -// AND forum_id $sql_forum"; - $result = $db->sql_query($sql); - - if ($row = $db->sql_fetchrow($result)) - { - do - { - $temp = unserialize($row['auth_deps']); - foreach ($temp as $option => $setting) - { - $auth_settings[$option] = (!isset($auth_settings[$option]) || $setting < $auth_settings[$option]) ? $setting : $auth_settings[$option]; - } - } - while ($row = $db->sql_fetchrow($result)); - - unset($temp); - unset($option); - unset($setting); - unset($sql_auth_option); - - $sql_option_mode = 'f'; - - } - $db->sql_freeresult($result); - - //print_r($auth_settings); - - //echo "HERE :: UPDATE ACLS"; -/* - // Admin wants subforums to inherit permissions ... so handle this - if (!empty($_POST['inherit'])) - { - array_push($_POST['inherit'], $forum_id); - $forum_id = $_POST['inherit']; - } - - foreach ($ug_data as $id) - { - $auth_admin->acl_set($ug_type, $forum_id, $id, $auth_settings); - } - - cache_moderators(); - - trigger_error($user->lang['AUTH_UPDATED']); -*/ - + foreach ($ug_data as $id) + { + $auth_admin->acl_set($ug_type, $forum_id_deps, $id, $auth_settings_deps); + } } + unset($auth_settings_deps); + unset($forum_id_deps); + + // Admin wants subforums to inherit permissions ... so handle this + if (!empty($_POST['inherit'])) + { + array_push($_POST['inherit'], $forum_id); + $forum_id = $_POST['inherit']; + } + + // This will be either the submitted dependencies or the "original" options + // dependending on whether any dependencies existed and were submitted + if (empty($_POST['skipdeps'])) + { + foreach ($ug_data as $id) + { + $auth_admin->acl_set($ug_type, $forum_id, $id, $auth_settings); + } + } + + cache_moderators(); + + trigger_error($user->lang['AUTH_UPDATED']); break; case 'delete': echo "HERE :: DELETE"; exit; - switch ($mode) +/* + $option_ids = false; + if (!empty($settings) { - case 'deps': - break; + $sql = "SELECT auth_option_id + FROM " . ACL_OPTIONS_TABLE . " + WHERE auth_option LIKE '" . $settings['option'] . "_%'"; + $result = $db->sql_query($sql); - default: -/* $option_ids = false; - if (!empty($settings) + if ($row = $db->sql_fetchrow($result)) + { + $option_ids = array(); + do { - $sql = "SELECT auth_option_id - FROM " . ACL_OPTIONS_TABLE . " - WHERE auth_option LIKE '" . $settings['option'] . "_%'"; - $result = $db->sql_query($sql); - - if ($row = $db->sql_fetchrow($result)) - { - $option_ids = array(); - do - { - $option_ids[] = $row['auth_option_id']; - } - while($row = $db->sql_fetchrow($result)); - } - $db->sql_freeresult($result); + $option_ids[] = $row['auth_option_id']; } - - foreach ($_POST['ug_id'] as $id) - { - $auth_admin->acl_delete($_POST['type'], $forum_id, $id, $option_ids); - } - - cache_moderators(); - - trigger_error($user->lang['AUTH_UPDATED']);*/ - break; + while($row = $db->sql_fetchrow($result)); + } + $db->sql_freeresult($result); } + + foreach ($_POST['ug_id'] as $id) + { + $auth_admin->acl_delete($_POST['type'], $forum_id, $id, $option_ids); + } + + cache_moderators(); + + trigger_error($user->lang['AUTH_UPDATED']); +*/ break; case 'presetsave': @@ -379,7 +321,7 @@ page_header($l_title); // First potential form ... this is for selecting forums, users // or groups. -if (($mode == 'user' || $mode == 'group' || $mode == 'forum' || $mode == 'mod') && empty($submit)) +if (in_array($mode, array('user', 'group', 'forum', 'mod')) && empty($submit)) { ?> @@ -404,7 +346,7 @@ if (($mode == 'user' || $mode == 'group' || $mode == 'forum' || $mode == 'mod')      @@ -413,6 +355,7 @@ if (($mode == 'user' || $mode == 'group' || $mode == 'forum' || $mode == 'mod') break; case 'user': + ?> lang['LOOK_UP_USER']; ?> @@ -466,11 +409,20 @@ if (($mode == 'user' || $mode == 'group' || $mode == 'forum' || $mode == 'mod') // Second possible form, this lists the currently enabled // users/groups for the given mode -if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || (empty($submit) && in_array($mode, array('admin', 'supermod')))) +if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || ($submit != 'options' && empty($submode) && in_array($mode, array('admin', 'supermod')))) { - - // Define appropriate SQL for linking on forums - $sql_forum = (is_array($forum_id)) ? ' IN (' . implode(', ', $forum_id) . ') ' : ' = ' . $forum_id; + // Generate list of forum id's + $s_forum_id = ''; + foreach ($forum_id as $forum_submode => $forum_submode_ids) + { + foreach ($forum_submode_ids as $submode_forum_id) + { + $s_forum_id .= ''; + } + } + unset($forum_submode_ids); + unset($forum_submode); + unset($submode_forum_id); ?> @@ -490,7 +442,7 @@ if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || (empty($subm FROM " . USERS_TABLE . " u, " . ACL_USERS_TABLE . " a, " . ACL_OPTIONS_TABLE . " o WHERE o.auth_option LIKE '" . $sql_option_mode . "_%' AND a.auth_option_id = o.auth_option_id - AND a.forum_id $sql_forum + AND a.forum_id IN ($sql_forum_id) AND u.user_id = a.user_id ORDER BY u.username, u.user_regdate ASC"; $result = $db->sql_query($sql); @@ -510,7 +462,7 @@ if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || (empty($subm -   +   @@ -520,7 +472,7 @@ if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || (empty($subm $sql = "SELECT DISTINCT g.group_id, g.group_name FROM " . GROUPS_TABLE . " g, " . ACL_GROUPS_TABLE . " a, " . ACL_OPTIONS_TABLE . " o WHERE o.auth_option LIKE '" . $sql_option_mode . "_%' - AND a.forum_id $sql_forum + AND a.forum_id IN ($sql_forum_id) AND a.auth_option_id = o.auth_option_id AND g.group_id = a.group_id ORDER BY g.group_type DESC, g.group_name ASC"; @@ -553,7 +505,7 @@ if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || (empty($subm -   +   @@ -568,7 +520,7 @@ if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || (empty($subm -     &mode=searchuser&form=2&field=entries', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;" /> +     &mode=searchuser&form=2&field=entries', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;" /> @@ -580,7 +532,7 @@ if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || (empty($subm -   +   @@ -592,25 +544,28 @@ if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || (empty($subm // End user and group acl selections + + + + // Third possible form, this is the major section of this script. It // handles the entry of permission options for all situations -if (in_array($submit, array('options', 'presetsave', 'presetdel', 'update')) || $mode == 'deps') +if (in_array($submit, array('options', 'presetsave', 'presetdel', 'update')) || !empty($submode)) { - if (!isset($forum_id) && empty($ug_data) && $mode != 'deps') + if (!isset($forum_id) && empty($ug_data)) { trigger_error($user->lang['NO_MODE']); } // Grab the forum details if non-zero forum_id - if ($forum_id != 0) + if (!in_array(0, $forum_id[$which_mode])) { $forum_data = array(); $sql = 'SELECT forum_id, forum_name, parent_id - FROM ' . FORUMS_TABLE . ' - WHERE forum_id'; - $sql .= (is_array($forum_id)) ? ' IN (' . implode(', ', $forum_id) . ')' : ' = ' . $forum_id; + FROM ' . FORUMS_TABLE . " + WHERE forum_id IN ($sql_forum_id)"; $result = $db->sql_query($sql); if (!($forum_data = $db->sql_fetchrow($result))) @@ -623,54 +578,51 @@ if (in_array($submit, array('options', 'presetsave', 'presetdel', 'update')) || // Grab relevant user or group information $ug_ids = $ug_names = $ug_hidden = ''; - if ($mode != 'deps') + $l_no_error = ''; + switch ($ug_type) { - $l_no_error = ''; - switch ($ug_type) - { - case 'user': - $l_no_error = $user->lang['NO_USER']; - $sql = 'SELECT user_id AS id, username AS name - FROM ' . USERS_TABLE . ' - WHERE user_id'; - $sql .= (is_array($ug_data)) ? ' IN (' . implode(', ', $ug_data) . ')' : ' = ' . $ug_data; - break; + case 'user': + $l_no_error = $user->lang['NO_USER']; + $sql = 'SELECT user_id AS id, username AS name + FROM ' . USERS_TABLE . ' + WHERE user_id'; + $sql .= (is_array($ug_data)) ? ' IN (' . implode(', ', $ug_data) . ')' : ' = ' . $ug_data; + break; - case 'username': - $l_no_error = $user->lang['NO_USER']; - $sql = 'SELECT user_id AS id, username AS name - FROM ' . USERS_TABLE . ' - WHERE username'; - $sql .= (is_array($ug_data)) ? ' IN (' . implode(', ', preg_replace('#^[\s]*?(.*?)[\s]*?$#', "'\\1'", $ug_data)) . ')' : ' = ' . "'" . trim($ug_data) . "'"; - break; + case 'username': + $l_no_error = $user->lang['NO_USER']; + $sql = 'SELECT user_id AS id, username AS name + FROM ' . USERS_TABLE . ' + WHERE username'; + $sql .= (is_array($ug_data)) ? ' IN (' . implode(', ', preg_replace('#^[\s]*?(.*?)[\s]*?$#', "'\\1'", $ug_data)) . ')' : ' = ' . "'" . trim($ug_data) . "'"; + break; - case 'group': - $l_no_error = $user->lang['NO_GROUP']; - $sql = 'SELECT group_id AS id, group_name AS name - FROM ' . GROUPS_TABLE . ' - WHERE group_id'; - $sql .= (is_array($ug_data)) ? ' IN (' . implode(', ', $ug_data) . ')' : ' = ' . $ug_data; - break; - } - $result = $db->sql_query($sql); - - if (!$row = $db->sql_fetchrow($result)) - { - trigger_error($l_no_error); - } - unset($l_no_error); - unset($ug_data); - - // Store the user_ids and names for later use - do - { - $ug_names .= (($ug_names != '') ? ', ' : '') . $row['name']; - $ug_ids .= (($ug_ids != '') ? ', ' : '') . $row['id']; - $ug_hidden .= ''; - } - while ($row = $db->sql_fetchrow($result)); - $db->sql_freeresult($result); + case 'group': + $l_no_error = $user->lang['NO_GROUP']; + $sql = 'SELECT group_id AS id, group_name AS name + FROM ' . GROUPS_TABLE . ' + WHERE group_id'; + $sql .= (is_array($ug_data)) ? ' IN (' . implode(', ', $ug_data) . ')' : ' = ' . $ug_data; + break; } + $result = $db->sql_query($sql); + + if (!$row = $db->sql_fetchrow($result)) + { + trigger_error($l_no_error); + } + unset($l_no_error); + unset($ug_data); + + // Store the user_ids and names for later use + do + { + $ug_names .= (($ug_names != '') ? ', ' : '') . $row['name']; + $ug_ids .= (($ug_ids != '') ? ', ' : '') . $row['id']; + $ug_hidden .= ''; + } + while ($row = $db->sql_fetchrow($result)); + $db->sql_freeresult($result); // Grab the list of options ... if we're in deps mode we want all options, @@ -778,66 +730,77 @@ if (in_array($submit, array('options', 'presetsave', 'presetdel', 'update')) || // If we aren't looking @ deps then we try and grab existing sessions for // the given forum and user/group - if ($mode != 'deps' && $auth_settings == '') + if (empty($auth_settings[$which_mode])) { - switch ($ug_type) + if ($which_mode == $mode) { - case 'group': - $sql_table = ACL_GROUPS_TABLE . ' a '; - $sql_join = 'a.group_id'; - break; - - case 'user': - $sql_table = ACL_USERS_TABLE . ' a, '; - $sql_join = 'a.user_id';; - break; - } - - $sql_forum = (is_array($forum_id)) ? ' IN (' . implode(', ', $forum_id) . ')' : ' = ' . $forum_id; - $sql = "SELECT o.auth_option, MIN(a.auth_setting) AS min_auth_setting - FROM $sql_table, " . ACL_OPTIONS_TABLE . " o - WHERE o.auth_option LIKE '" . $sql_option_mode . "_%' - AND a.auth_option_id = o.auth_option_id - AND a.forum_id $sql_forum - AND $sql_join IN ($ug_ids) - GROUP BY o.auth_option"; - $result = $db->sql_query($sql); - - $auth_settings = array(); - while ($row = $db->sql_fetchrow($result)) - { - $auth_settings[$row['auth_option']] = $row['min_auth_setting']; - } - $db->sql_freeresult($result); - } - else if ($mode == 'deps') - { - $sql_forum = (is_array($forum_id)) ? ' IN (' . implode(', ', $forum_id) . ')' : ' = ' . $forum_id; - $sql_auth_option = (preg_match('#^[a-z]_$#', $auth_option)) ? " LIKE '$auth_option%'" : " IN ('" . $auth_option . "', '$sql_option_mode')"; - $sql = "SELECT auth_deps - FROM " . ACL_DEPS_TABLE . " - WHERE auth_option $sql_auth_option - AND forum_id $sql_forum - AND auth_setting = $auth_setting"; - $result = $db->sql_query($sql); - - $auth_settings = (!isset($auth_settings)) ? array() : $auth_settings; - while ($row = $db->sql_fetchrow($result)) - { - $temp = unserialize($row['auth_deps']); - foreach ($temp as $option => $setting) + switch ($ug_type) { - $auth_settings[$option] = (!isset($auth_settings[$option]) || $setting < $auth_settings[$option]) ? $setting : $auth_settings[$option]; + case 'group': + $sql_table = ACL_GROUPS_TABLE . ' a '; + $sql_join = 'a.group_id'; + break; + + case 'user': + $sql_table = ACL_USERS_TABLE . ' a, '; + $sql_join = 'a.user_id';; + break; + } + + $sql = "SELECT o.auth_option, MIN(a.auth_setting) AS min_auth_setting + FROM $sql_table, " . ACL_OPTIONS_TABLE . " o + WHERE o.auth_option LIKE '" . $sql_option_mode . "_%' + AND a.auth_option_id = o.auth_option_id + AND a.forum_id IN ($sql_forum_id) + AND $sql_join IN ($ug_ids) + GROUP BY o.auth_option"; + $result = $db->sql_query($sql); + + $auth_settings[$which_mode] = array(); + while ($row = $db->sql_fetchrow($result)) + { + $auth_settings[$which_mode][$row['auth_option']] = $row['min_auth_setting']; + } + $db->sql_freeresult($result); + } + else + { + // We're looking at a view ... so we'll set all options to ignore + // We could be a little more clever here but the "safe side" looks + // better right now + $auth_settings[$which_mode] = array(); + foreach ($auth_options as $option) + { + $auth_settings[$which_mode][$option['auth_option']] = -1; } } - $db->sql_freeresult($result); - - unset($temp); - unset($option); - unset($setting); - unset($sql_auth_option); } + // Should we display a dropdown for views? + $view_options = ''; + if (in_array($mode, array('admin', 'supermod', 'mod'))) + { + $view_options .= ''; + $view_options .= (!empty($submode) && $mode != $submode) ? '' : ''; + $view_ary = array( + 'admin' => array('forum' => 'a_auth', 'mod' => 'a_modauth', 'supermod' => 'a_modauth'), + 'supermod' => array('forum' => 'a_auth'), + 'mod' => array('forum' => 'a_auth') + ); + + foreach ($view_ary[$mode] as $which_submode => $which_acl) + { + if ($auth->acl_get($which_acl)) + { + $view_options .= ''; + } + + } + unset($view_ary); + } + +// print_r($auth_settings); + ?> +

lang['ACL_EXPLAIN']; ?>

+

+
"> -

Warning!

- -

A number of dependencies have been set for the changes you have requested. You can skip setting these dependences if you wish by clicking the appropriate checkbox. You can also modify the dependencies as required. Clicking update will commit your previous setting changes and those listed below (unless you choose to skip them).

- - - -">
- -
"> +
-' . ((!empty($user->lang['acl_' . $option['auth_option']])) ? $user->lang['acl_' . $option['auth_option']] : (($option['auth_option'] == $sql_option_mode . '_') ? 'Any option' : ucfirst(preg_replace('#.*?_#', '', $option['auth_option'])))) . ''; - } - unset($auth_options); - unset($option); - - - // Define the Yes, No, Unset selections - $values = array(ACL_NO => $user->lang['NO'], ACL_YES => $user->lang['YES'], ACL_UNSET => $user->lang['UNSET']); - foreach ($values as $value => $option) - { - $dep_auth_values .= ''; - } - unset($values); - unset($option); - - - // We've grabbed the list of options for this mode now we need to - // grab the list of options we can set dependencies for - $founder_sql = ($user->data['user_founder']) ? ' AND founder_only <> 1' : ''; - $sql = "SELECT auth_option - FROM " . ACL_OPTIONS_TABLE . " - WHERE auth_option LIKE 'f_%' - AND auth_option <> 'f_' - $founder_sql"; - $result = $db->sql_query($sql); - - $auth_options = array(); - while ($row = $db->sql_fetchrow($result)) - { - $auth_options[] = $row; - } - $db->sql_freeresult($result); - -?> - - - - - - - - - - @@ -1038,30 +921,52 @@ if (in_array($submit, array('options', 'presetsave', 'presetdel', 'update')) || + - - -
 
Changing option:
To value:
Will set options in:
lang['PRESETS']; ?>:
- - - - - - + + +
 lang['OPTION']; ?>  lang['YES']; ?>  lang['NO']; ?>  lang['UNSET']; ?> 
+ + + + + + + lang['acl_' . $auth_options[$i]['auth_option']])) ? $user->lang['acl_' . $auth_options[$i]['auth_option']] : ucfirst(preg_replace('#.*?_#', '', $auth_options[$i]['auth_option'])); + $s_auth_option = '[' . $which_mode . '][' . $auth_options[$i]['auth_option'] . ']'; // Which option should we select? - $selected_yes = (isset($auth_settings[$auth_options[$i]['auth_option']]) && $auth_settings[$auth_options[$i]['auth_option']] == ACL_YES) ? ' checked="checked"' : ''; - $selected_no = (isset($auth_settings[$auth_options[$i]['auth_option']]) && $auth_settings[$auth_options[$i]['auth_option']] == ACL_NO) ? ' checked="checked"' : ''; - $selected_unset = (!isset($auth_settings[$auth_options[$i]['auth_option']]) || $auth_settings[$auth_options[$i]['auth_option']] == ACL_UNSET) ? ' checked="checked"' : ''; - - - // Output dependency links? - $dep_x_yes = $dep_x_no = $dep_x_unset = $dep_x_open = $dep_x_close = ''; - if (in_array($mode, array('admin', 'supermod', 'mod')) && $auth->acl_get('a_deps') && $submit != 'update') - { - $dep_x_open = ' X'; - - $dep_x_yes = $dep_x_open . ACL_YES . $dep_x_close; - $dep_x_no = $dep_x_open . ACL_NO . $dep_x_close; - $dep_x_unset = $dep_x_open . ACL_UNSET . $dep_x_close; - } + $selected_yes = (isset($auth_settings[$which_mode][$auth_options[$i]['auth_option']]) && $auth_settings[$which_mode][$auth_options[$i]['auth_option']] == ACL_YES) ? ' checked="checked"' : ''; + $selected_no = (isset($auth_settings[$which_mode][$auth_options[$i]['auth_option']]) && $auth_settings[$which_mode][$auth_options[$i]['auth_option']] == ACL_NO) ? ' checked="checked"' : ''; + $selected_unset = (!isset($auth_settings[$which_mode][$auth_options[$i]['auth_option']]) || $auth_settings[$which_mode][$auth_options[$i]['auth_option']] == ACL_UNSET) ? ' checked="checked"' : ''; + $selected_ignore = (isset($auth_settings[$which_mode][$auth_options[$i]['auth_option']]) && $auth_settings[$which_mode][$auth_options[$i]['auth_option']] == -1) ? ' checked="checked"' : ''; ?> - + - + + + + - lang['ACL_SUBFORUMS']; ?> -
 lang['OPTION']; ?>  lang['YES']; ?>  lang['UNSET']; ?>  lang['NO']; ?>   
  /> /> /> /> /> /> />
+
@@ -1145,27 +1050,6 @@ if (in_array($submit, array('options', 'presetsave', 'presetdel', 'update')) || } } - - // Output "Skip dependencies" checkbox - if ($submit == 'update') - { - -?> - - - - - - -acl_gets('a_events', 'a_cron') && $mode != 'deps' && $submit != 'update') { @@ -1184,7 +1068,8 @@ if (in_array($submit, array('options', 'presetsave', 'presetdel', 'update')) || ?>  lang['RUN_AS_EVT']; - } + } + if ($auth->acl_get('a_cron')) { @@ -1202,7 +1087,37 @@ if (in_array($submit, array('options', 'presetsave', 'presetdel', 'update')) || ?> - +
lang['ACL_SUBFORUMS_EXPLAIN']; ?>
- - - -
  ' : ''; ?>   $forum_submode_ids) + { + foreach ($forum_submode_ids as $submode_forum_id) + { + echo ''; + } + } + unset($forum_submode_ids); + unset($forum_submode); + unset($submode_forum_id); + + // Output original settings ... needed when we jump views + foreach ($auth_settings as $auth_submode => $auth_submode_settings) + { + if ($auth_submode != $which_mode) + { + foreach ($auth_submode_settings as $submode_option => $submode_setting) + { + echo ''; + } + } + } + unset($auth_submode); + unset($auth_submode_settings); + unset($auth_submode_option); + unset($auth_submode_setting); + +?>