Register
phpBB.com Wiki · Home Projects Help

root / trunk / phpBB / memberlist.php

1 272 thefinn
<?php
2 7736 acydburn
/**
3 5114 acydburn
*
4 5114 acydburn
* @package phpBB3
5 5114 acydburn
* @version $Id$
6 7736 acydburn
* @copyright (c) 2005 phpBB Group
7 7736 acydburn
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
8 5114 acydburn
*
9 5114 acydburn
*/
10 272 thefinn
11 5114 acydburn
/**
12 5883 acydburn
* @ignore
13 5114 acydburn
*/
14 4975 psotfx
define('IN_PHPBB', true);
15 8572 acydburn
if (!defined('PHPBB_ROOT_PATH')) define('PHPBB_ROOT_PATH', './');
16 8572 acydburn
if (!defined('PHP_EXT')) define('PHP_EXT', substr(strrchr(__FILE__, '.'), 1));
17 8572 acydburn
include(PHPBB_ROOT_PATH . 'common.' . PHP_EXT);
18 8572 acydburn
include(PHPBB_ROOT_PATH . 'includes/functions_display.' . PHP_EXT);
19 646 psotfx
20 272 thefinn
// Start session management
21 5247 acydburn
$user->session_begin();
22 2958 psotfx
$auth->acl($user->data);
23 4970 psotfx
$user->setup(array('memberlist', 'groups'));
24 3969 psotfx
25 3628 psotfx
// Grab data
26 6882 dhn2
$mode		= request_var('mode', '');
27 6882 dhn2
$action		= request_var('action', '');
28 6882 dhn2
$user_id	= request_var('u', ANONYMOUS);
29 6882 dhn2
$username	= request_var('un', '', true);
30 6882 dhn2
$group_id	= request_var('g', 0);
31 6882 dhn2
$topic_id	= request_var('t', 0);
32 3628 psotfx
33 7384 acydburn
// Check our mode...
34 7384 acydburn
if (!in_array($mode, array('', 'group', 'viewprofile', 'email', 'contact', 'searchuser', 'leaders')))
35 7384 acydburn
{
36 7384 acydburn
	trigger_error('NO_MODE');
37 7384 acydburn
}
38 7384 acydburn
39 3953 psotfx
switch ($mode)
40 3589 psotfx
{
41 3953 psotfx
	case 'email':
42 6015 acydburn
	break;
43 3969 psotfx
44 3953 psotfx
	default:
45 4883 acydburn
		// Can this user view profiles/memberlist?
46 3969 psotfx
		if (!$auth->acl_gets('u_viewprofile', 'a_user', 'a_useradd', 'a_userdel'))
47 3953 psotfx
		{
48 3953 psotfx
			if ($user->data['user_id'] != ANONYMOUS)
49 3953 psotfx
			{
50 5138 acydburn
				trigger_error('NO_VIEW_USERS');
51 3953 psotfx
			}
52 3650 psotfx
53 5995 acydburn
			login_box('', ((isset($user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)])) ? $user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)] : $user->lang['LOGIN_EXPLAIN_MEMBERLIST']));
54 3953 psotfx
		}
55 6015 acydburn
	break;
56 3589 psotfx
}
57 3589 psotfx
58 4578 psotfx
$start	= request_var('start', 0);
59 4578 psotfx
$submit = (isset($_POST['submit'])) ? true : false;
60 2849 psotfx
61 6538 acydburn
$default_key = 'c';
62 6538 acydburn
$sort_key = request_var('sk', $default_key);
63 4578 psotfx
$sort_dir = request_var('sd', 'a');
64 2849 psotfx
65 2849 psotfx
66 3589 psotfx
// Grab rank information for later
67 8295 davidmj
$ranks = cache::obtain_ranks();
68 3510 psotfx
69 3510 psotfx
70 3650 psotfx
// What do you want to do today? ... oops, I think that line is taken ...
71 3625 psotfx
switch ($mode)
72 3598 psotfx
{
73 3650 psotfx
	case 'leaders':
74 5160 acydburn
		// Display a listing of board admins, moderators
75 8572 acydburn
		include(PHPBB_ROOT_PATH . 'includes/functions_user.' . PHP_EXT);
76 8120 kellanved
77 5199 acydburn
		$page_title = $user->lang['THE_TEAM'];
78 5160 acydburn
		$template_html = 'memberlist_leaders.html';
79 5160 acydburn
80 4883 acydburn
		$user_ary = $auth->acl_get_list(false, array('a_', 'm_'), false);
81 4758 psotfx
82 6975 acydburn
		$admin_id_ary = $global_mod_id_ary = $mod_id_ary = $forum_id_ary = array();
83 4758 psotfx
		foreach ($user_ary as $forum_id => $forum_ary)
84 4758 psotfx
		{
85 4758 psotfx
			foreach ($forum_ary as $auth_option => $id_ary)
86 4758 psotfx
			{
87 6975 acydburn
				if (!$forum_id)
88 5824 acydburn
				{
89 6975 acydburn
					if ($auth_option == 'a_')
90 6975 acydburn
					{
91 6975 acydburn
						$admin_id_ary = array_merge($admin_id_ary, $id_ary);
92 6975 acydburn
					}
93 6975 acydburn
					else
94 6975 acydburn
					{
95 6975 acydburn
						$global_mod_id_ary = array_merge($global_mod_id_ary, $id_ary);
96 6975 acydburn
					}
97 5824 acydburn
					continue;
98 5824 acydburn
				}
99 5824 acydburn
				else
100 5824 acydburn
				{
101 5824 acydburn
					$mod_id_ary = array_merge($mod_id_ary, $id_ary);
102 5824 acydburn
				}
103 5160 acydburn
104 5160 acydburn
				if ($forum_id)
105 5160 acydburn
				{
106 5160 acydburn
					foreach ($id_ary as $id)
107 5160 acydburn
					{
108 5160 acydburn
						$forum_id_ary[$id][] = $forum_id;
109 5160 acydburn
					}
110 5160 acydburn
				}
111 4758 psotfx
			}
112 4758 psotfx
		}
113 4758 psotfx
114 5824 acydburn
		$admin_id_ary = array_unique($admin_id_ary);
115 6975 acydburn
		$global_mod_id_ary = array_unique($global_mod_id_ary);
116 6975 acydburn
117 6975 acydburn
		$mod_id_ary = array_merge($mod_id_ary, $global_mod_id_ary);
118 5824 acydburn
		$mod_id_ary = array_unique($mod_id_ary);
119 5824 acydburn
120 6149 acydburn
		// Admin group id...
121 6149 acydburn
		$sql = 'SELECT group_id
122 6149 acydburn
			FROM ' . GROUPS_TABLE . "
123 6149 acydburn
			WHERE group_name = 'ADMINISTRATORS'";
124 6149 acydburn
		$result = $db->sql_query($sql);
125 6149 acydburn
		$admin_group_id = (int) $db->sql_fetchfield('group_id');
126 6149 acydburn
		$db->sql_freeresult($result);
127 6149 acydburn
128 7201 acydburn
		// Get group memberships for the admin id ary...
129 7201 acydburn
		$admin_memberships = group_memberships($admin_group_id, $admin_id_ary);
130 8120 kellanved
131 7201 acydburn
		$admin_user_ids = array();
132 8816 acydburn
133 7722 kellanved
		if (!empty($admin_memberships))
134 7201 acydburn
		{
135 7722 kellanved
			// ok, we only need the user ids...
136 7722 kellanved
			foreach ($admin_memberships as $row)
137 7722 kellanved
			{
138 7722 kellanved
				$admin_user_ids[$row['user_id']] = true;
139 7722 kellanved
			}
140 7201 acydburn
		}
141 7201 acydburn
		unset($admin_memberships);
142 7201 acydburn
143 8146 acydburn
		$sql = 'SELECT forum_id, forum_name
144 8306 acydburn
			FROM ' . FORUMS_TABLE;
145 4758 psotfx
		$result = $db->sql_query($sql);
146 8306 acydburn
147 5160 acydburn
		$forums = array();
148 5160 acydburn
		while ($row = $db->sql_fetchrow($result))
149 5160 acydburn
		{
150 5160 acydburn
			$forums[$row['forum_id']] = $row['forum_name'];
151 5160 acydburn
		}
152 4758 psotfx
		$db->sql_freeresult($result);
153 4758 psotfx
154 5885 davidmj
		$sql = $db->sql_build_query('SELECT', array(
155 6698 acydburn
			'SELECT'	=> 'u.user_id, u.group_id as default_group, u.username, u.username_clean, u.user_colour, u.user_rank, u.user_posts, u.user_allow_pm, g.group_id, g.group_name, g.group_colour, g.group_type, ug.user_id as ug_user_id',
156 5885 davidmj
157 5885 davidmj
			'FROM'		=> array(
158 5885 davidmj
				USERS_TABLE		=> 'u',
159 5885 davidmj
				GROUPS_TABLE	=> 'g'
160 5885 davidmj
			),
161 5885 davidmj
162 5885 davidmj
			'LEFT_JOIN'	=> array(
163 5885 davidmj
				array(
164 5885 davidmj
					'FROM'	=> array(USER_GROUP_TABLE => 'ug'),
165 6081 acydburn
					'ON'	=> 'ug.group_id = g.group_id AND ug.user_pending = 0 AND ug.user_id = ' . $user->data['user_id']
166 5885 davidmj
				)
167 5885 davidmj
			),
168 5885 davidmj
169 7722 kellanved
			'WHERE'		=> $db->sql_in_set('u.user_id', array_unique(array_merge($admin_id_ary, $mod_id_ary)), false, true) . '
170 6015 acydburn
				AND u.group_id = g.group_id',
171 5885 davidmj
172 6650 acydburn
			'ORDER_BY'	=> 'g.group_name ASC, u.username_clean ASC'
173 5885 davidmj
		));
174 5160 acydburn
		$result = $db->sql_query($sql);
175 5160 acydburn
176 5160 acydburn
		while ($row = $db->sql_fetchrow($result))
177 4758 psotfx
		{
178 5160 acydburn
			$which_row = (in_array($row['user_id'], $admin_id_ary)) ? 'admin' : 'mod';
179 5160 acydburn
180 7201 acydburn
			// We sort out admins not within the 'Administrators' group.
181 7201 acydburn
			// Else, we will list those as admin only having the permission to view logs for example.
182 7201 acydburn
			if ($which_row == 'admin' && empty($admin_user_ids[$row['user_id']]))
183 6149 acydburn
			{
184 6149 acydburn
				// Remove from admin_id_ary, because the user may be a mod instead
185 6149 acydburn
				unset($admin_id_ary[array_search($row['user_id'], $admin_id_ary)]);
186 6149 acydburn
187 6975 acydburn
				if (!in_array($row['user_id'], $mod_id_ary) && !in_array($row['user_id'], $global_mod_id_ary))
188 6149 acydburn
				{
189 6149 acydburn
					continue;
190 6149 acydburn
				}
191 6149 acydburn
				else
192 6149 acydburn
				{
193 6149 acydburn
					$which_row = 'mod';
194 6149 acydburn
				}
195 6149 acydburn
			}
196 6149 acydburn
197 5160 acydburn
			$s_forum_select = '';
198 6538 acydburn
			$undisclosed_forum = false;
199 5896 acydburn
200 6975 acydburn
			if (isset($forum_id_ary[$row['user_id']]) && !in_array($row['user_id'], $global_mod_id_ary))
201 5160 acydburn
			{
202 5896 acydburn
				if ($which_row == 'mod' && sizeof(array_diff(array_keys($forums), $forum_id_ary[$row['user_id']])))
203 5160 acydburn
				{
204 5896 acydburn
					foreach ($forum_id_ary[$row['user_id']] as $forum_id)
205 5160 acydburn
					{
206 6538 acydburn
						if (isset($forums[$forum_id]))
207 5896 acydburn
						{
208 6538 acydburn
							if ($auth->acl_get('f_list', $forum_id))
209 6538 acydburn
							{
210 6538 acydburn
								$s_forum_select .= '<option value="">' . $forums[$forum_id] . '</option>';
211 6538 acydburn
							}
212 6538 acydburn
							else
213 6538 acydburn
							{
214 6538 acydburn
								$undisclosed_forum = true;
215 6538 acydburn
							}
216 5896 acydburn
						}
217 5160 acydburn
					}
218 5160 acydburn
				}
219 5160 acydburn
			}
220 5896 acydburn
221 7143 acydburn
			// If the mod is only moderating non-viewable forums we skip the user. There is no gain in displaying the person then...
222 6538 acydburn
			if (!$s_forum_select && $undisclosed_forum)
223 6538 acydburn
			{
224 7143 acydburn
//				$s_forum_select = '<option value="">' . $user->lang['FORUM_UNDISCLOSED'] . '</option>';
225 7143 acydburn
				continue;
226 6538 acydburn
			}
227 6538 acydburn
228 7143 acydburn
			// The person is moderating several "public" forums, therefore the person should be listed, but not giving the real group name if hidden.
229 5160 acydburn
			if ($row['group_type'] == GROUP_HIDDEN && !$auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel') && $row['ug_user_id'] != $user->data['user_id'])
230 5160 acydburn
			{
231 6081 acydburn
				$group_name = $user->lang['GROUP_UNDISCLOSED'];
232 5160 acydburn
				$u_group = '';
233 5160 acydburn
			}
234 5160 acydburn
			else
235 5160 acydburn
			{
236 5160 acydburn
				$group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];
237 8572 acydburn
				$u_group = append_sid('memberlist', 'mode=group&amp;g=' . $row['group_id']);
238 5160 acydburn
			}
239 5160 acydburn
240 5160 acydburn
			$rank_title = $rank_img = '';
241 5358 subblue
			get_user_rank($row['user_rank'], $row['user_posts'], $rank_title, $rank_img, $rank_img_src);
242 5160 acydburn
243 5160 acydburn
			$template->assign_block_vars($which_row, array(
244 5160 acydburn
				'USER_ID'		=> $row['user_id'],
245 5160 acydburn
				'FORUMS'		=> $s_forum_select,
246 5160 acydburn
				'RANK_TITLE'	=> $rank_title,
247 5160 acydburn
				'GROUP_NAME'	=> $group_name,
248 5160 acydburn
				'GROUP_COLOR'	=> $row['group_colour'],
249 5160 acydburn
250 5160 acydburn
				'RANK_IMG'		=> $rank_img,
251 5358 subblue
				'RANK_IMG_SRC'	=> $rank_img_src,
252 5160 acydburn
253 6589 acydburn
				'U_GROUP'			=> $u_group,
254 8572 acydburn
				'U_PM'				=> ($config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($row['user_allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? append_sid('ucp', 'i=pm&amp;mode=compose&amp;u=' . $row['user_id']) : '',
255 6643 acydburn
256 6643 acydburn
				'USERNAME_FULL'		=> get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
257 6643 acydburn
				'USERNAME'			=> get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']),
258 6643 acydburn
				'USER_COLOR'		=> get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']),
259 6643 acydburn
				'U_VIEW_PROFILE'	=> get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']),
260 6643 acydburn
			));
261 4758 psotfx
		}
262 5160 acydburn
		$db->sql_freeresult($result);
263 4758 psotfx
264 5160 acydburn
		$template->assign_vars(array(
265 6237 acydburn
			'PM_IMG'		=> $user->img('icon_contact_pm', $user->lang['SEND_PRIVATE_MESSAGE']))
266 5160 acydburn
		);
267 6015 acydburn
	break;
268 3650 psotfx
269 3848 psotfx
	case 'contact':
270 8120 kellanved
271 3848 psotfx
		$page_title = $user->lang['IM_USER'];
272 3848 psotfx
		$template_html = 'memberlist_im.html';
273 4145 psotfx
274 7242 acydburn
		if (!$auth->acl_get('u_sendim'))
275 7242 acydburn
		{
276 7242 acydburn
			trigger_error('NOT_AUTHORISED');
277 7242 acydburn
		}
278 7242 acydburn
279 4145 psotfx
		$presence_img = '';
280 4145 psotfx
		switch ($action)
281 4145 psotfx
		{
282 4145 psotfx
			case 'aim':
283 4145 psotfx
				$lang = 'AIM';
284 4145 psotfx
				$sql_field = 'user_aim';
285 4145 psotfx
				$s_select = 'S_SEND_AIM';
286 4145 psotfx
				$s_action = '';
287 6015 acydburn
			break;
288 4970 psotfx
289 4145 psotfx
			case 'msnm':
290 4145 psotfx
				$lang = 'MSNM';
291 4145 psotfx
				$sql_field = 'user_msnm';
292 4145 psotfx
				$s_select = 'S_SEND_MSNM';
293 4145 psotfx
				$s_action = '';
294 6015 acydburn
			break;
295 4145 psotfx
296 4145 psotfx
			case 'jabber':
297 4145 psotfx
				$lang = 'JABBER';
298 4145 psotfx
				$sql_field = 'user_jabber';
299 5967 acydburn
				$s_select = (@extension_loaded('xml') && $config['jab_enable']) ? 'S_SEND_JABBER' : 'S_NO_SEND_JABBER';
300 8572 acydburn
				$s_action = append_sid('memberlist', "mode=contact&amp;action=$action&amp;u=$user_id");
301 6015 acydburn
			break;
302 4883 acydburn
303 4883 acydburn
			default:
304 7456 acydburn
				trigger_error('NO_MODE', E_USER_ERROR);
305 6015 acydburn
			break;
306 4145 psotfx
		}
307 4145 psotfx
308 4145 psotfx
		// Grab relevant data
309 4970 psotfx
		$sql = "SELECT user_id, username, user_email, user_lang, $sql_field
310 4970 psotfx
			FROM " . USERS_TABLE . "
311 5108 acydburn
			WHERE user_id = $user_id
312 5108 acydburn
				AND user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')';
313 4145 psotfx
		$result = $db->sql_query($sql);
314 6015 acydburn
		$row = $db->sql_fetchrow($result);
315 6015 acydburn
		$db->sql_freeresult($result);
316 4145 psotfx
317 6015 acydburn
		if (!$row)
318 4145 psotfx
		{
319 7918 kellanved
			trigger_error('NO_USER');
320 4145 psotfx
		}
321 7918 kellanved
		else if (empty($row[$sql_field]))
322 7918 kellanved
		{
323 7918 kellanved
			trigger_error('IM_NO_DATA');
324 7918 kellanved
		}
325 4145 psotfx
326 4145 psotfx
		// Post data grab actions
327 4145 psotfx
		switch ($action)
328 4145 psotfx
		{
329 4145 psotfx
			case 'jabber':
330 8120 kellanved
				add_form_key('memberlist_messaging');
331 8120 kellanved
332 5967 acydburn
				if ($submit && @extension_loaded('xml') && $config['jab_enable'])
333 4145 psotfx
				{
334 8120 kellanved
					if (check_form_key('memberlist_messaging'))
335 8120 kellanved
					{
336 4145 psotfx
337 8572 acydburn
						include_once(PHPBB_ROOT_PATH . 'includes/functions_messenger.' . PHP_EXT);
338 4145 psotfx
339 8120 kellanved
						$subject = sprintf($user->lang['IM_JABBER_SUBJECT'], $user->data['username'], $config['server_name']);
340 8120 kellanved
						$message = utf8_normalize_nfc(request_var('message', '', true));
341 7836 acydburn
342 8120 kellanved
						if (empty($message))
343 8120 kellanved
						{
344 8120 kellanved
							trigger_error('EMPTY_MESSAGE_IM');
345 8120 kellanved
						}
346 4145 psotfx
347 8120 kellanved
						$messenger = new messenger(false);
348 4145 psotfx
349 8120 kellanved
						$messenger->template('profile_send_im', $row['user_lang']);
350 8120 kellanved
						$messenger->subject(htmlspecialchars_decode($subject));
351 4145 psotfx
352 8120 kellanved
						$messenger->replyto($user->data['user_email']);
353 8120 kellanved
						$messenger->im($row['user_jabber'], $row['username']);
354 4145 psotfx
355 8120 kellanved
						$messenger->assign_vars(array(
356 8120 kellanved
							'BOARD_CONTACT'	=> $config['board_contact'],
357 8120 kellanved
							'FROM_USERNAME'	=> htmlspecialchars_decode($user->data['username']),
358 8120 kellanved
							'TO_USERNAME'	=> htmlspecialchars_decode($row['username']),
359 8120 kellanved
							'MESSAGE'		=> htmlspecialchars_decode($message))
360 8120 kellanved
						);
361 4145 psotfx
362 8120 kellanved
						$messenger->send(NOTIFY_IM);
363 8120 kellanved
364 8120 kellanved
						$s_select = 'S_SENT_JABBER';
365 8120 kellanved
					}
366 8120 kellanved
					else
367 8120 kellanved
					{
368 8120 kellanved
						trigger_error('FORM_INVALID');
369 8120 kellanved
					}
370 4145 psotfx
				}
371 6015 acydburn
			break;
372 4145 psotfx
		}
373 4145 psotfx
374 4145 psotfx
		// Send vars to the template
375 4145 psotfx
		$template->assign_vars(array(
376 4970 psotfx
			'IM_CONTACT'	=> $row[$sql_field],
377 8099 acydburn
			'A_IM_CONTACT'	=> addslashes($row[$sql_field]),
378 8099 acydburn
379 8099 acydburn
			'U_AIM_CONTACT'	=> ($action == 'aim') ? 'aim:addbuddy?screenname=' . urlencode($row[$sql_field]) : '',
380 8099 acydburn
			'U_AIM_MESSAGE'	=> ($action == 'aim') ? 'aim:goim?screenname=' . urlencode($row[$sql_field]) . '&amp;message=' . urlencode($config['sitename']) : '',
381 8099 acydburn
382 5952 acydburn
			'USERNAME'		=> $row['username'],
383 4970 psotfx
			'CONTACT_NAME'	=> $row[$sql_field],
384 5952 acydburn
			'SITENAME'		=> $config['sitename'],
385 4145 psotfx
386 4970 psotfx
			'PRESENCE_IMG'		=> $presence_img,
387 4145 psotfx
388 4970 psotfx
			'L_SEND_IM_EXPLAIN'	=> $user->lang['IM_' . $lang],
389 4970 psotfx
			'L_IM_SENT_JABBER'	=> sprintf($user->lang['IM_SENT_JABBER'], $row['username']),
390 4145 psotfx
391 4970 psotfx
			$s_select			=> true,
392 4145 psotfx
			'S_IM_ACTION'		=> $s_action)
393 4145 psotfx
		);
394 4145 psotfx
395 6015 acydburn
	break;
396 3848 psotfx
397 3625 psotfx
	case 'viewprofile':
398 3625 psotfx
		// Display a profile
399 6232 acydburn
		if ($user_id == ANONYMOUS && !$username)
400 3625 psotfx
		{
401 5138 acydburn
			trigger_error('NO_USER');
402 3625 psotfx
		}
403 3589 psotfx
404 5595 acydburn
		// Get user...
405 7007 acydburn
		$sql = 'SELECT *
406 7007 acydburn
			FROM ' . USERS_TABLE . '
407 7007 acydburn
			WHERE ' . (($username) ? "username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'" : "user_id = $user_id");
408 5595 acydburn
		$result = $db->sql_query($sql);
409 6015 acydburn
		$member = $db->sql_fetchrow($result);
410 6015 acydburn
		$db->sql_freeresult($result);
411 5595 acydburn
412 6015 acydburn
		if (!$member)
413 5595 acydburn
		{
414 5595 acydburn
			trigger_error('NO_USER');
415 5595 acydburn
		}
416 5595 acydburn
417 7150 acydburn
		// a_user admins and founder are able to view inactive users and bots to be able to manage them more easily
418 7384 acydburn
		// Normal users are able to see at least users having only changed their profile settings but not yet reactivated.
419 7150 acydburn
		if (!$auth->acl_get('a_user') && $user->data['user_type'] != USER_FOUNDER)
420 7150 acydburn
		{
421 7154 acydburn
			if ($member['user_type'] == USER_IGNORE)
422 7150 acydburn
			{
423 7150 acydburn
				trigger_error('NO_USER');
424 7150 acydburn
			}
425 7154 acydburn
			else if ($member['user_type'] == USER_INACTIVE && $member['user_inactive_reason'] != INACTIVE_PROFILE)
426 7150 acydburn
			{
427 7150 acydburn
				trigger_error('NO_USER');
428 7150 acydburn
			}
429 7150 acydburn
		}
430 7150 acydburn
431 6232 acydburn
		$user_id = (int) $member['user_id'];
432 6232 acydburn
433 3625 psotfx
		// Do the SQL thang
434 4970 psotfx
		$sql = 'SELECT g.group_id, g.group_name, g.group_type
435 4970 psotfx
			FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . " ug
436 4970 psotfx
			WHERE ug.user_id = $user_id
437 7433 acydburn
				AND g.group_id = ug.group_id" . ((!$auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel')) ? ' AND g.group_type <> ' . GROUP_HIDDEN : '') . '
438 7007 acydburn
				AND ug.user_pending = 0