aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/admin/admin_permissions.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/admin/admin_permissions.php')
-rw-r--r--phpBB/admin/admin_permissions.php253
1 files changed, 235 insertions, 18 deletions
diff --git a/phpBB/admin/admin_permissions.php b/phpBB/admin/admin_permissions.php
index 7dfa0b597e..0c90f8aa34 100644
--- a/phpBB/admin/admin_permissions.php
+++ b/phpBB/admin/admin_permissions.php
@@ -21,14 +21,15 @@
if ( !empty($setmodules) )
{
- if ( !$acl->get_acl_admin('forums') )
+ if ( !$acl->get_acl_admin('auth') )
{
return;
}
$filename = basename(__FILE__);
$module['Forums']['Permissions'] = $filename . $SID . '&mode=forums';
- $module['General']['Set_Administrators'] = $filename . $SID . '&mode=admins';
+ $module['Forums']['Moderators'] = $filename . $SID . '&mode=moderators';
+ $module['General']['Administrators'] = $filename . $SID . '&mode=administrators';
return;
}
@@ -44,7 +45,7 @@ require('pagestart.' . $phpEx);
//
// Do we have forum admin permissions?
//
-if ( !$acl->get_acl_admin('forums') )
+if ( !$acl->get_acl_admin('auth') )
{
message_die(MESSAGE, $lang['No_admin']);
}
@@ -55,7 +56,6 @@ if ( !$acl->get_acl_admin('forums') )
if ( isset($HTTP_GET_VARS['f']) || isset($HTTP_POST_VARS['f']) )
{
$forum_id = ( isset($HTTP_POST_VARS['f']) ) ? intval($HTTP_POST_VARS['f']) : intval($HTTP_GET_VARS['f']);
-
$forum_sql = " WHERE forum_id = $forum_id";
}
else
@@ -64,31 +64,248 @@ else
$forum_sql = '';
}
+$mode = ( isset($HTTP_GET_VARS['mode']) ) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
+
//
// Start program proper
//
+switch ( $mode )
+{
+ case 'forums':
+ $l_title = $lang['Permissions'];
+ $l_title_explain = $lang['Permissions_explain'];
+ break;
+ case 'moderators':
+ $l_title = $lang['Moderators'];
+ $l_title_explain = $lang['Moderators_explain'];
+ break;
+ case 'administrators':
+ $l_title = $lang['Administrators'];
+ $l_title_explain = $lang['Administrators_explain'];
+ break;
+}
//
// Get required information, either all forums if
// no id was specified or just the requsted if it
// was
//
-if ( !empty($forum_id) )
+if ( !empty($forum_id) || $mode == 'administrators' )
{
//
- // Output the selection table if no forum id was
- // specified
+ // Clear some vars, grab some info if relevant ...
//
- $template->set_filenames(array(
- "body" => "admin/auth_select_body.tpl")
- );
+ $s_hidden_fields = '';
+ if ( !empty($forum_id) )
+ {
+ $sql = "SELECT forum_name
+ FROM " . FORUMS_TABLE . "
+ WHERE forum_id = $forum_id";
+ $result = $db->sql_query($sql);
+
+ $forum_info = $db->sql_fetchrow($result);
+
+ $l_title .= ' : <i>' . $forum_info['forum_name'] . '</i>';
+ $s_hidden_fields = '<input type="hidden" name="f" value="' . $forum_id .'" />';
+ }
+
+ //
+ // Generate header
+ //
+ page_header($lang['Forums']);
- $select_list = '<select name=f">';
- for($i = 0; $i < count($forum_rows); $i++)
+?>
+
+<h1><?php echo $l_title; ?></h1>
+
+<p><?php echo $l_title_explain; ?></p>
+
+<?php
+
+ switch ( $mode )
{
- $select_list .= '<option value="' . $forum_rows[$i]['forum_id'] . '">' . $forum_rows[$i]['forum_name'] . '</option>';
+ case 'forums':
+
+?>
+
+<form method="post" action="<?php echo "admin_permissions.$phpEx$SID&amp;mode=$mode"; ?>">
+
+<h3><?php echo $lang['Allowed_users']; ?></h3>
+
+<select name="user_allowed"><?php echo $user_allowed_options; ?></select>
+
+<p>[ <a href=""><?php echo $lang['Advanced']; ?></a> ]</p>
+
+<h3><?php echo $lang['Allowed_groups']; ?></h3>
+
+<select name="group_allowed"><?php echo $group_allowed_options; ?></select>
+
+<p>[ <a href=""><?php echo $lang['Advanced']; ?></a> ]</p>
+
+<h3><?php echo $lang['Disallowed_users']; ?></h3>
+
+<select name="user_disallowed"><?php echo $user_disallowed_options; ?></select>
+
+<p>[ <a href=""><?php echo $lang['Advanced']; ?></a> ]</p>
+
+<h3><?php echo $lang['Disallowed_groups']; ?></h3>
+
+<select name="group_disallowed"><?php echo $group_disallowed_options; ?></select>
+
+<p>[ <a href=""><?php echo $lang['Advanced']; ?></a> ]</p>
+
+<?php
+ break;
+
+ case 'moderators':
+ $sql = "SELECT auth_option
+ FROM " . ACL_OPTIONS_TABLE . "
+ WHERE auth_type LIKE 'mod'";
+ $result = $db->sql_query($sql);
+
+ $auth_options = array();
+ while ( $row = $db->sql_fetchrow($result) )
+ {
+ $auth_options[] = $row;
+ }
+
+ $sql = "SELECT u.user_id, u.username, ao.auth_option
+ FROM " . USERS_TABLE . " u, " . ACL_USERS_TABLE . " au, " . ACL_OPTIONS_TABLE . " ao
+ WHERE ao.auth_type LIKE 'mod'
+ AND au.auth_option_id = ao.auth_option_id
+ AND au.forum_id = $forum_id
+ AND u.user_id = au.user_id
+ ORDER BY u.username, u.user_regdate ASC";
+ $result = $db->sql_query($sql);
+
+ $auth_users = array();
+ while ( $row = $db->sql_fetchrow($result) )
+ {
+ $auth_users[$row['auth_option']] .= '<option value="' . $row['user_id'] . '">' . $row['username'] . '</option>';
+ }
+
+ $sql = "SELECT g.group_id, g.group_name, ao.auth_option
+ FROM " . GROUPS_TABLE . " g, " . ACL_GROUPS_TABLE . " ag, " . ACL_OPTIONS_TABLE . " ao
+ WHERE ao.auth_type LIKE 'mod'
+ AND ag.auth_option_id = ao.auth_option_id
+ AND ag.forum_id = $forum_id
+ AND g.group_id = ag.group_id
+ ORDER BY g.group_name ASC";
+ $result = $db->sql_query($sql);
+
+ $auth_groups = array();
+ while ( $row = $db->sql_fetchrow($result) )
+ {
+ $auth_groups[$row['auth_option']] .= '<option value="' . $row['group_id'] . '">' . $row['group_name'] . '</option>';
+ }
+
+?>
+
+<table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
+ <tr>
+ <th>Setting</th>
+ <th>Users</th>
+ <th>Groups</th>
+ </tr>
+<?php
+ for($i = 0; $i < sizeof($auth_options); $i++)
+ {
+ $cell_bg = ( $cell_bg == 'row1' ) ? 'row2' : 'row1';
+
+?>
+ <tr>
+ <td class="<?php echo $cell_bg; ?>" align="center"><?php echo $auth_options[$i]['auth_option']; ?></td>
+ <td class="<?php echo $cell_bg; ?>" align="center"><select name="option[<?php echo $auth_options[$i]['auth_option']; ?>]" multiple="multiple"><?php echo $auth_users[$auth_options[$i]['auth_option']]; ?></select></td>
+ <td class="<?php echo $cell_bg; ?>" align="center"><select name="option[<?php echo $auth_options[$i]['auth_option']; ?>]" multiple="multiple"><?php echo $auth_groups[$auth_options[$i]['auth_option']]; ?></select></td>
+ </tr>
+
+<?php
+ }
+
+?>
+</table>
+
+<?php
+ break;
+
+ case 'administrators':
+ $sql = "SELECT auth_option
+ FROM " . ACL_OPTIONS_TABLE . "
+ WHERE auth_type LIKE 'admin'";
+ $result = $db->sql_query($sql);
+
+ $auth_options = array();
+ while ( $row = $db->sql_fetchrow($result) )
+ {
+ $auth_options[] = $row;
+ }
+
+ $sql = "SELECT u.user_id, u.username, ao.auth_option
+ FROM " . USERS_TABLE . " u, " . ACL_USERS_TABLE . " au, " . ACL_OPTIONS_TABLE . " ao
+ WHERE ao.auth_type LIKE 'admin'
+ AND au.auth_option_id = ao.auth_option_id
+ AND u.user_id = au.user_id
+ ORDER BY u.username, u.user_regdate ASC";
+ $result = $db->sql_query($sql);
+
+ $auth_users = array();
+ while ( $row = $db->sql_fetchrow($result) )
+ {
+ $auth_users[$row['auth_option']] .= '<option value="' . $row['user_id'] . '">' . $row['username'] . '</option>';
+ }
+
+ $sql = "SELECT g.group_id, g.group_name, ao.auth_option
+ FROM " . GROUPS_TABLE . " g, " . ACL_GROUPS_TABLE . " ag, " . ACL_OPTIONS_TABLE . " ao
+ WHERE ao.auth_type LIKE 'admin'
+ AND ag.auth_option_id = ao.auth_option_id
+ AND g.group_id = ag.group_id
+ ORDER BY g.group_name ASC";
+ $result = $db->sql_query($sql);
+
+ $auth_groups = array();
+ while ( $row = $db->sql_fetchrow($result) )
+ {
+ $auth_groups[$row['auth_option']] .= '<option value="' . $row['group_id'] . '">' . ( ( $row['group_name'] == 'ADMINISTRATORS' ) ? $lang['Admin_group'] : $row['group_name'] ) . '</option>';
+ }
+
+?>
+
+<table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
+ <tr>
+ <th>Setting</th>
+ <th>Users</th>
+ <th>Groups</th>
+ </tr>
+<?php
+ for($i = 0; $i < sizeof($auth_options); $i++)
+ {
+ $cell_bg = ( $cell_bg == 'row1' ) ? 'row2' : 'row1';
+
+ $l_can_cell = ( !empty($lang['acl_admin_' . $auth_options[$i]['auth_option']]) ) ? $lang['acl_admin_' . $auth_options[$i]['auth_option']] : $auth_options[$i]['auth_option'];
+
+?>
+ <tr>
+ <td class="<?php echo $cell_bg; ?>"><?php echo $l_can_cell; ?></td>
+ <td class="<?php echo $cell_bg; ?>" align="center"><?php if ( !empty($auth_users[$auth_options[$i]['auth_option']]) ) { ?><select name="user_option[<?php echo $auth_options[$i]['auth_option']; ?>]"><?php echo $auth_users[$auth_options[$i]['auth_option']]; ?></select><?php } else { ?>&nbsp;<?php } ?></td>
+ <td class="<?php echo $cell_bg; ?>" align="center"><?php if ( !empty($auth_groups[$auth_options[$i]['auth_option']]) ) { ?><select name="group_option[<?php echo $auth_options[$i]['auth_option']; ?>]"><?php echo $auth_groups[$auth_options[$i]['auth_option']]; ?></select><?php } else { ?>&nbsp;<?php } ?></td>
+ </tr>
+
+<?php
+ }
+
+?>
+</table>
+<?php
+ break;
}
- $select_list .= '</select>';
+
+
+?>
+
+<?php echo $s_hidden_fields; ?></form>
+
+<?php
+
}
else
{
@@ -108,16 +325,16 @@ else
?>
-<h1><?php echo $lang['Permissions']; ?></h1>
+<h1><?php echo $l_title; ?></h1>
-<p><?php echo $lang['Permissions_explain']; ?></p>
+<p><?php echo $l_title_explain ?></p>
-<form method="post" action="<?php echo "admin_permissions.$phpEx$SID"; ?>"><table cellspacing="1" cellpadding="4" border="0" align="center" bgcolor="#98AAB1">
+<form method="post" action="<?php echo "admin_permissions.$phpEx$SID&amp;mode=$mode"; ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
<tr>
<th align="center"><?php echo $lang['Select_a_Forum']; ?></th>
</tr>
<tr>
- <td class="row1" align="center">&nbsp;<select name="f"><?php echo $select_list; ?></select>&nbsp;&nbsp;<input type="submit" value="<?php echo $lang['Look_up_Forum']; ?>" class="mainoption" />&nbsp;</td>
+ <td class="row1" align="center">&nbsp;<select name="f"><?php echo $select_list; ?></select> &nbsp;<input type="submit" value="<?php echo $lang['Look_up_Forum']; ?>" class="mainoption" />&nbsp;</td>
</tr>
</table></form>