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']; ?>
+
+