|
From: Meik S. <acy...@us...> - 2005-08-18 23:31:33
|
Update of /cvsroot/phpbb/phpBB2/includes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25044/includes Modified Files: functions_user.php Log Message: - fixed some bugs in group functions Index: functions_user.php =================================================================== RCS file: /cvsroot/phpbb/phpBB2/includes/functions_user.php,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -r1.48 -r1.49 *** functions_user.php 10 Jul 2005 20:38:03 -0000 1.48 --- functions_user.php 18 Aug 2005 12:50:29 -0000 1.49 *************** *** 257,261 **** ); ! if ($group_id == $group_id_ary[$group_name]) { $sql_ary['group_id'] = $new_group_id; --- 257,261 ---- ); ! if ($new_group_id == $group_id_ary[$group_name]) { $sql_ary['group_id'] = $new_group_id; *************** *** 1212,1216 **** * Add user(s) to group */ ! function group_user_add($group_id, $user_id_ary = false, $username_ary = false, $group_name = false, $default = false, $leader = 0) { global $db, $auth; --- 1212,1216 ---- * Add user(s) to group */ ! function group_user_add($group_id, $user_id_ary = false, $username_ary = false, $group_name = false, $default = false, $leader = 0, $pending = 0) { global $db, $auth; *************** *** 1244,1248 **** // Do all the users exist in this group? $add_id_ary = array_diff($user_id_ary, $add_id_ary); - unset($id_ary); // If we have no users --- 1244,1247 ---- *************** *** 1262,1267 **** case 'mssql': case 'sqlite': ! $sql = 'INSERT INTO ' . USER_GROUP_TABLE . " (user_id, group_id, group_leader) ! VALUES " . implode(', ', preg_replace('#^([0-9]+)$#', "(\\1, $group_id, $leader)", $add_id_ary)); $db->sql_query($sql); break; --- 1261,1266 ---- case 'mssql': case 'sqlite': ! $sql = 'INSERT INTO ' . USER_GROUP_TABLE . " (user_id, group_id, group_leader, user_pending) ! VALUES " . implode(', ', preg_replace('#^([0-9]+)$#', "(\\1, $group_id, $leader, $pending)", $add_id_ary)); $db->sql_query($sql); break; *************** *** 1270,1275 **** foreach ($add_id_ary as $user_id) { ! $sql = 'INSERT INTO ' . USER_GROUP_TABLE . " (user_id, group_id, group_leader) ! VALUES ($user_id, $group_id, $leader)"; $db->sql_query($sql); } --- 1269,1274 ---- foreach ($add_id_ary as $user_id) { ! $sql = 'INSERT INTO ' . USER_GROUP_TABLE . " (user_id, group_id, group_leader, user_pending) ! VALUES ($user_id, $group_id, $leader, $pending)"; $db->sql_query($sql); } *************** *** 1330,1333 **** --- 1329,1333 ---- trigger_error("Could not obtain group attributes for group_id $group_id", E_USER_ERROR); } + $db->sql_freeresult($result); if (!$group_avatar_width) *************** *** 1383,1386 **** --- 1383,1388 ---- trigger_error("Could not obtain name of group $group_id", E_USER_ERROR); } + + $db->sql_freeresult($result); } *************** *** 1395,1400 **** add_log('admin', $log, $group_name, implode(', ', $username_ary)); ! unset($username_ary); ! unset($user_id_ary); return false; --- 1397,1401 ---- add_log('admin', $log, $group_name, implode(', ', $username_ary)); ! unset($username_ary, $user_id_ary); return false; *************** *** 1436,1441 **** $db->sql_freeresult($result); // What special group memberships exist for these users? ! $sql = 'SELECT g.group_id, g.group_name, ug.user_id FROM ' . USER_GROUP_TABLE . ' ug, ' . GROUPS_TABLE . ' g WHERE ug.user_id IN (' . implode(', ', $user_id_ary) . ") --- 1437,1455 ---- $db->sql_freeresult($result); + // Get users default groups - we only need to reset default group membership if the group from which the user gets removed is set as default + $sql = 'SELECT user_id, group_id + FROM ' . USERS_TABLE . ' + WHERE user_id IN (' . implode(', ', $user_id_ary) . ")"; + $result = $db->sql_query($sql); + + $default_groups = array(); + while ($row = $db->sql_fetchrow($result)) + { + $default_groups[$row['user_id']] = $row['group_id']; + } + $db->sql_freeresult($result); + // What special group memberships exist for these users? ! $sql = 'SELECT g.group_id, g.group_name, ug.user_id FROM ' . USER_GROUP_TABLE . ' ug, ' . GROUPS_TABLE . ' g WHERE ug.user_id IN (' . implode(', ', $user_id_ary) . ") *************** *** 1449,1453 **** while ($row = $db->sql_fetchrow($result)) { ! if (!isset($temp_ary[$row['user_id']]) || array_search($row['group_name'], $group_order) < $temp_ary[$row['user_id']]) { $temp_ary[$row['user_id']] = $row['group_id']; --- 1463,1467 ---- while ($row = $db->sql_fetchrow($result)) { ! if ($default_groups[$row['user_id']] == $group_id && (!isset($temp_ary[$row['user_id']]) || array_search($row['group_name'], $group_order) < $temp_ary[$row['user_id']])) { $temp_ary[$row['user_id']] = $row['group_id']; *************** *** 1465,1469 **** foreach ($special_group_data as $gid => $default_data_ary) { ! if ($sql_where = implode(', ', $sql_where_ary[$gid])) { $sql_set = ''; --- 1479,1483 ---- foreach ($special_group_data as $gid => $default_data_ary) { ! if (isset($sql_where_ary[$gid]) && $sql_where = implode(', ', $sql_where_ary[$gid])) { $sql_set = ''; *************** *** 1676,1681 **** * or checking if a specified user is in a specified group * ! * Note: Extend select statement as needed ! * Note2: Never use this more than once... first group your users/groups */ function group_memberships($group_id_ary = false, $user_id_ary = false, $return_bool = false) --- 1690,1694 ---- * or checking if a specified user is in a specified group * ! * Note: Never use this more than once... first group your users/groups */ function group_memberships($group_id_ary = false, $user_id_ary = false, $return_bool = false) *************** *** 1688,1711 **** } ! $sql = 'SELECT group_id, user_id ! FROM ' . USER_GROUP_TABLE . ' ! WHERE '; if ($group_id_ary && $user_id_ary) { ! $sql .= " group_id " . ((is_array($group_id_ary)) ? ' IN (' . implode(', ', $group_id_ary) . ')' : " = $group_id_ary") . " ! AND user_id " . ((is_array($user_id_ary)) ? ' IN (' . implode(', ', $user_id_ary) . ')' : " = $user_id_ary"); } else if ($group_id) { ! $sql .= " group_id " . ((is_array($group_id_ary)) ? ' IN (' . implode(', ', $group_id_ary) . ')' : " = $group_id_ary"); } else if ($user_id_ary) { ! $sql .= " user_id " . ((is_array($user_id_ary)) ? ' IN (' . implode(', ', $user_id_ary) . ')' : " = $user_id_ary"); } $result = ($return_bool) ? $db->sql_query_limit($sql, 1) : $db->sql_query($sql); ! $row = $db->sql_fetchrow($result); --- 1701,1724 ---- } ! $sql = 'SELECT ug.*, u.username, u.user_email ! FROM ' . USER_GROUP_TABLE . ' ug, ' . USERS_TABLE . ' u ! WHERE ug.user_id = u.user_id AND '; if ($group_id_ary && $user_id_ary) { ! $sql .= " ug.group_id " . ((is_array($group_id_ary)) ? ' IN (' . implode(', ', $group_id_ary) . ')' : " = $group_id_ary") . " ! AND ug.user_id " . ((is_array($user_id_ary)) ? ' IN (' . implode(', ', $user_id_ary) . ')' : " = $user_id_ary"); } else if ($group_id) { ! $sql .= " ug.group_id " . ((is_array($group_id_ary)) ? ' IN (' . implode(', ', $group_id_ary) . ')' : " = $group_id_ary"); } else if ($user_id_ary) { ! $sql .= " ug.user_id " . ((is_array($user_id_ary)) ? ' IN (' . implode(', ', $user_id_ary) . ')' : " = $user_id_ary"); } $result = ($return_bool) ? $db->sql_query_limit($sql, 1) : $db->sql_query($sql); ! $row = $db->sql_fetchrow($result); *************** *** 1716,1728 **** } ! $result = array(); do { ! $result[] = $row; } while ($row = $db->sql_fetchrow($result)); ! ! return $result; } --- 1729,1748 ---- } ! if (!$row) ! { ! return false; ! } ! ! $return = array(); do { ! $return[] = $row; } while ($row = $db->sql_fetchrow($result)); ! ! $db->sql_freeresult($result); ! ! return $return; } |