From c2b9cfd1587de97e21c82645bfbc90b83517c6c2 Mon Sep 17 00:00:00 2001 From: "Paul S. Owen" Date: Wed, 16 Apr 2003 12:09:29 +0000 Subject: 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 ++++++++++++++++++++++++++++------------ 1 file changed, 138 insertions(+), 59 deletions(-) (limited to 'phpBB/adm') 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); - -?>:

+ +?>

-- cgit v1.2.1
lang['MANAGE_GROUPS']; ?>
lang['MANAGE_GROUPS']; ?>
  lang['ADD_GROUPS']; ?>