From c2b9cfd1587de97e21c82645bfbc90b83517c6c2 Mon Sep 17 00:00:00 2001 From: "Paul S. Owen" Date: Wed, 16 Apr 2003 12:09:29 +0000 Subject: [PATCH] Enable multiple forum, user and group selection, tidy up logging, add details of affected forums git-svn-id: file:///svn/phpbb/trunk@3850 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/admin_permissions.php | 197 ++++++++++++++++++++++--------- phpBB/language/en/lang_admin.php | 26 ++-- 2 files changed, 152 insertions(+), 71 deletions(-) diff --git a/phpBB/adm/admin_permissions.php b/phpBB/adm/admin_permissions.php index befd8aeaaa..b67315f150 100644 --- a/phpBB/adm/admin_permissions.php +++ b/phpBB/adm/admin_permissions.php @@ -240,20 +240,40 @@ switch ($submit) // Logging ... first grab user or groupnames ... - $sql = ($ug_type == 'group') ? 'SELECT group_name as name FROM ' . GROUPS_TABLE . ' WHERE group_id' : 'SELECT username as name FROM ' . USERS_TABLE . ' WHERE user_id'; + $sql = ($ug_type == 'group') ? 'SELECT group_name as name, group_type FROM ' . GROUPS_TABLE . ' WHERE group_id' : 'SELECT username as name FROM ' . USERS_TABLE . ' WHERE user_id'; $sql .= ' IN (' . implode(', ', array_map('intval', $ug_data)) . ')'; $result = $db->sql_query($sql); $l_ug_list = ''; while ($row = $db->sql_fetchrow($result)) { - $l_ug_list .= (($ug_list != '') ? ', ' : '') . $row['name']; + $l_ug_list .= (($l_ug_list != '') ? ', ' : '') . ((isset($row['group_type']) && $row['group_type'] == GROUP_SPECIAL) ? '' . $user->lang['G_' . $row['name']] . '' : $row['name']); } $db->sql_freeresult($result); foreach (array_keys($auth_settings) as $submode) { - add_log('admin', 'LOG_ACL_' . strtoupper($submode) . '_ADD', $l_ug_list); + if (!in_array(0, $forum_id[$submode])) + { + // Grab the forum details if non-zero forum_id + $sql = 'SELECT forum_name + FROM ' . FORUMS_TABLE . " + WHERE forum_id IN ($sql_forum_id)"; + $result = $db->sql_query($sql); + + $l_forum_list = ''; + while ($row = $db->sql_fetchrow($result)) + { + $l_forum_list .= (($l_forum_list != '') ? ', ' : '') . $row['forum_name']; + } + $db->sql_freeresult($result); + + add_log('admin', 'LOG_ACL_' . strtoupper($submode) . '_ADD', $l_forum_list, $l_ug_list); + } + else + { + add_log('admin', 'LOG_ACL_' . strtoupper($submode) . '_ADD', $l_ug_list); + } } unset($l_ug_list); } @@ -297,19 +317,39 @@ switch ($submit) // Logging ... first grab user or groupnames ... - $sql = ($ug_type == 'group') ? 'SELECT group_name as name FROM ' . GROUPS_TABLE . ' WHERE group_id' : 'SELECT username as name FROM ' . USERS_TABLE . ' WHERE user_id'; + $sql = ($ug_type == 'group') ? 'SELECT group_name as name, group_type FROM ' . GROUPS_TABLE . ' WHERE group_id' : 'SELECT username as name FROM ' . USERS_TABLE . ' WHERE user_id'; $sql .= ' IN (' . implode(', ', array_map('intval', $ug_data)) . ')'; $result = $db->sql_query($sql); $l_ug_list = ''; while ($row = $db->sql_fetchrow($result)) { - $l_ug_list .= (($ug_list != '') ? ', ' : '') . $row['name']; + $l_ug_list .= (($l_ug_list != '') ? ', ' : '') . ((isset($row['group_type']) && $row['group_type'] == GROUP_SPECIAL) ? '' . $user->lang['G_' . $row['name']] . '' : $row['name']); } $db->sql_freeresult($result); - add_log('admin', 'LOG_ACL_' . strtoupper($which_mode) . '_DEL', $l_ug_list); + // Grab the forum details if non-zero forum_id + if (!in_array(0, $forum_id[$which_mode])) + { + $sql = 'SELECT forum_name + FROM ' . FORUMS_TABLE . " + WHERE forum_id IN ($sql_forum_id)"; + $result = $db->sql_query($sql); + + $l_forum_list = ''; + while ($row = $db->sql_fetchrow($result)) + { + $l_forum_list .= (($l_forum_list != '') ? ', ' : '') . $row['forum_name']; + } + $db->sql_freeresult($result); + + add_log('admin', 'LOG_ACL_' . strtoupper($which_mode) . '_DEL', $l_forum_list, $l_ug_list); + } + else + { + add_log('admin', 'LOG_ACL_' . strtoupper($which_mode) . '_DEL', $l_ug_list); + } trigger_error($user->lang['AUTH_UPDATED']); break; @@ -409,11 +449,14 @@ if (in_array($mode, array('user', 'group', 'forum', 'mod')) && empty($submit)) lang['LOOK_UP_FORUM']; ?> -      +?>  + + +   lang['LOOK_UP_USER']; ?> - ', '_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;" /> + + lang['LOOK_UP_GROUP']; ?> + + +    -      +  
"> - + + + + - - - - + +?> @@ -522,9 +573,13 @@ if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || (!strstr($su
lang['MANAGE_USERS']; ?>
lang['MANAGE_USERS']; ?>
 
"> - + + + + - - - - +?> @@ -584,7 +622,21 @@ if ((in_array($submit, array('usergroups', 'delete', 'cancel'))) || (!strstr($su - + @@ -616,25 +668,37 @@ if (in_array($submit, array('add_options', 'edit_options', 'presetsave', 'preset } + $forum_list = ''; // Grab the forum details if non-zero forum_id 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 IN ($sql_forum_id)"; $result = $db->sql_query($sql); - if (!($forum_data = $db->sql_fetchrow($result))) + if (!($row = $db->sql_fetchrow($result))) { trigger_error($user->lang['NO_FORUM']); } + + // If we have more than one forum we want a list of all their names + // so loop through all results. We don't need all the data though + // since cascading/inheritance is only applicable if a single forum + // was selected + $forum_data = $row; + + do + { + $forum_list .= (($forum_list != '') ? ', ' : '') . '' . $row['forum_name'] . ''; + } + while ($row = $db->sql_fetchrow($result)); $db->sql_freeresult($result); } // Grab relevant user or group information - $ug_ids = $ug_names = $ug_hidden = $l_no_error = ''; + $ug_ids = $l_ug_list = $ug_hidden = $l_no_error = ''; switch ($ug_type) { case 'user': @@ -649,7 +713,7 @@ if (in_array($submit, array('add_options', 'edit_options', 'presetsave', 'preset case 'group': $l_no_error = $user->lang['NO_GROUP']; - $sql = 'SELECT group_id AS id, group_name AS name + $sql = 'SELECT group_id AS id, group_name AS name, group_type FROM ' . GROUPS_TABLE . ' WHERE group_id'; $sql .= (is_array($ug_data)) ? ' IN (' . implode(', ', $ug_data) . ')' : ' = ' . $ug_data; @@ -666,7 +730,7 @@ if (in_array($submit, array('add_options', 'edit_options', 'presetsave', 'preset // Store the user_ids and names for later use do { - $ug_names .= (($ug_names != '') ? ', ' : '') . $row['name']; + $l_ug_list .= (($l_ug_list != '') ? ', ' : '') . ((isset($row['group_type']) && $row['group_type'] == GROUP_SPECIAL) ? '' . $user->lang['G_' . $row['name']] : '' . $row['name']) . ''; $ug_ids .= (($ug_ids != '') ? ', ' : '') . $row['id']; $ug_hidden .= ''; } @@ -955,16 +1019,31 @@ if (in_array($submit, array('add_options', 'edit_options', 'presetsave', 'preset

-

' . $user->lang[$l_selected_forums] . ': ' . $forum_list . '

'; + + unset($forum_list); + unset($l_selected_forums); + } + + // Now output the list of users or groups ... these will always exist $l_selected_users = ($ug_type == 'user') ? ((sizeof($ug_data) == 1) ? 'SELECTED_USER' : 'SELECTED_USERS') : ((sizeof($ug_data) == 1) ? 'SELECTED_GROUP' : 'SELECTED_GROUPS'); - echo $user->lang[$l_selected_users]; + echo '

' . $user->lang[$l_selected_users] . ': ' . $l_ug_list . '

'; unset($l_selected_users); unset($ug_data); - -?>:

+ +?>

diff --git a/phpBB/language/en/lang_admin.php b/phpBB/language/en/lang_admin.php index fa9cc02307..537f0e04c1 100644 --- a/phpBB/language/en/lang_admin.php +++ b/phpBB/language/en/lang_admin.php @@ -127,18 +127,18 @@ $lang = array_merge($lang, array( 'LOG_RESYNC_STATS' => 'Post, topic and user stats reset', 'LOG_RESET_DATE' => 'Board start date reset', 'LOG_RESET_ONLINE' => 'Most users online reset', - 'LOG_ACL_MOD_DEL' => 'Removed Moderators
%s', - 'LOG_ACL_MOD_ADD' => 'Added or edited Moderators
%s', - 'LOG_ACL_SUPERMOD_DEL' => 'Removed Super Moderators
%s', - 'LOG_ACL_SUPERMOD_ADD' => 'Added or edited Super Moderators
%s', - 'LOG_ACL_ADMIN_DEL' => 'Removed Administrators
%s', - 'LOG_ACL_ADMIN_ADD' => 'Added or edited Administrators
%s', - 'LOG_ACL_FORUM_DEL' => 'Removed Forum access
%s', - 'LOG_ACL_FORUM_ADD' => 'Added or edited Forum access
%s', - 'LOG_ACL_USER_ADD' => 'Edited User permissions
%s', - 'LOG_ACL_GROUP_ADD' => 'Edited Group permissions
%s', - 'LOG_ACL_PRESET_ADD' => 'Added or edited permission preset
%s', - 'LOG_ACL_PRESET_DEL' => 'Deleted permission preset
%s', + 'LOG_ACL_MOD_DEL' => 'Removed Moderators from %s
* %s', + 'LOG_ACL_MOD_ADD' => 'Added or edited Moderators from %s
* %s', + 'LOG_ACL_SUPERMOD_DEL' => 'Removed Super Moderators
* %s', + 'LOG_ACL_SUPERMOD_ADD' => 'Added or edited Super Moderators
* %s', + 'LOG_ACL_ADMIN_DEL' => 'Removed Administrators
* %s', + 'LOG_ACL_ADMIN_ADD' => 'Added or edited Administrators
* %s', + 'LOG_ACL_FORUM_DEL' => 'Removed Forum access from %s
* %s', + 'LOG_ACL_FORUM_ADD' => 'Added or edited Forum access from %s
* %s', + 'LOG_ACL_USER_ADD' => 'Edited User permissions
* %s', + 'LOG_ACL_GROUP_ADD' => 'Edited Group permissions
* %s', + 'LOG_ACL_PRESET_ADD' => 'Added or edited permission preset
* %s', + 'LOG_ACL_PRESET_DEL' => 'Deleted permission preset
* %s', 'RUN_HOW' => 'When to run', 'RUN_AS_NOW'=> 'Run now', @@ -262,6 +262,8 @@ $lang = array_merge($lang, array( 'SELECTED_USERS' => 'Selected Users', 'SELECTED_GROUP' => 'Selected Group', 'SELECTED_GROUPS' => 'Selected Groups', + 'SELECTED_FORUM' => 'Selected Forum', + 'SELECTED_FORUMS' => 'Selected Forums', 'WILL_SET_OPTIONS' => 'Will set options in', 'ACL_VIEW_FORUM' => 'Forum Options',
lang['MANAGE_GROUPS']; ?>
lang['MANAGE_GROUPS']; ?>
  lang['ADD_GROUPS']; ?>