[ Index ] |
|
Code source de PHP NUKE 7.9 |
1 <?php 2 /*************************************************************************** 3 * groupcp.php 4 * ------------------- 5 * begin : Saturday, Feb 13, 2001 6 * copyright : (C) 2001 The phpBB Group 7 * email : support@phpbb.com 8 * 9 * Id: groupcp.php,v 1.58.2.23 2005/05/06 20:50:10 acydburn Exp 10 * 11 * 12 ***************************************************************************/ 13 14 /*************************************************************************** 15 * 16 * This program is free software; you can redistribute it and/or modify 17 * it under the terms of the GNU General Public License as published by 18 * the Free Software Foundation; either version 2 of the License, or 19 * (at your option) any later version. 20 * 21 ***************************************************************************/ 22 if ( !defined('MODULE_FILE') ) 23 { 24 die("You can't access this file directly..."); 25 } 26 $module_name = basename(dirname(__FILE__)); 27 require("modules/".$module_name."/nukebb.php"); 28 29 define('IN_PHPBB', true); 30 include ($phpbb_root_path . 'extension.inc'); 31 include($phpbb_root_path . 'common.'.$phpEx); 32 33 // ------------------------- 34 // 35 function generate_user_info(&$row, $date_format, $group_mod, &$from, &$posts, &$joined, &$poster_avatar, &$profile_img, &$profile, &$search_img, &$search, &$pm_img, &$pm, &$email_img, &$email, &$www_img, &$www, &$icq_status_img, &$icq_img, &$icq, &$aim_img, &$aim, &$msn_img, &$msn, &$yim_img, &$yim) 36 { 37 global $lang, $images, $board_config, $phpEx; 38 39 $from = ( !empty($row['user_from']) ) ? $row['user_from'] : ' '; 40 $joined = create_date($date_format, $row['user_regdate'], $board_config['board_timezone']); 41 $posts = ( $row['user_posts'] ) ? $row['user_posts'] : 0; 42 43 $poster_avatar = ''; 44 if ( $row['user_avatar_type'] && $row['user_id'] != ANONYMOUS && $row['user_allowavatar'] ) 45 { 46 switch( $row['user_avatar_type'] ) 47 { 48 case USER_AVATAR_UPLOAD: 49 $poster_avatar = ( $board_config['allow_avatar_upload'] ) ? '<img src="' . $board_config['avatar_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : ''; 50 break; 51 case USER_AVATAR_REMOTE: 52 $poster_avatar = ( $board_config['allow_avatar_remote'] ) ? '<img src="' . $row['user_avatar'] . '" alt="" border="0" />' : ''; 53 break; 54 case USER_AVATAR_GALLERY: 55 $poster_avatar = ( $board_config['allow_avatar_local'] ) ? '<img src="' . $board_config['avatar_gallery_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : ''; 56 break; 57 } 58 } 59 60 if ( !empty($row['user_viewemail']) || $group_mod ) 61 { 62 $email_uri = ( $board_config['board_email_form'] ) ? append_sid("profile.$phpEx?mode=email&" . POST_USERS_URL .'=' . $row['user_id']) : 'mailto:' . $row['user_email']; 63 64 $email_img = '<a href="' . $email_uri . '"><img src="' . $images['icon_email'] . '" alt="' . $lang['Send_email'] . '" title="' . $lang['Send_email'] . '" border="0" /></a>'; 65 $email = '<a href="' . $email_uri . '">' . $lang['Send_email'] . '</a>'; 66 } 67 else 68 { 69 $email_img = ' '; 70 $email = ' '; 71 } 72 73 $temp_url = append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']); 74 $profile_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_profile'] . '" alt="' . $lang['Read_profile'] . '" title="' . $lang['Read_profile'] . '" border="0" /></a>'; 75 $profile = '<a href="' . $temp_url . '">' . $lang['Read_profile'] . '</a>'; 76 77 $temp_url = append_sid("privmsg.$phpEx?mode=post&" . POST_USERS_URL . "=" . $row['user_id']); 78 $pm_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_pm'] . '" alt="' . $lang['Send_private_message'] . '" title="' . $lang['Send_private_message'] . '" border="0" /></a>'; 79 $pm = '<a href="' . $temp_url . '">' . $lang['Send_private_message'] . '</a>'; 80 81 $www_img = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" target="_userwww"><img src="' . $images['icon_www'] . '" alt="' . $lang['Visit_website'] . '" title="' . $lang['Visit_website'] . '" border="0" /></a>' : ''; 82 $www = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $lang['Visit_website'] . '</a>' : ''; 83 84 if ( !empty($row['user_icq']) ) 85 { 86 $icq_status_img = '<a href="http://wwp.icq.com/' . $row['user_icq'] . '#pager"><img src="http://web.icq.com/whitepages/online?icq=' . $row['user_icq'] . '&img=5" width="18" height="18" border="0" /></a>'; 87 $icq_img = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '"><img src="' . $images['icon_icq'] . '" alt="' . $lang['ICQ'] . '" title="' . $lang['ICQ'] . '" border="0" /></a>'; 88 $icq = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $lang['ICQ'] . '</a>'; 89 } 90 else 91 { 92 $icq_status_img = ''; 93 $icq_img = ''; 94 $icq = ''; 95 } 96 97 $aim_img = ( $row['user_aim'] ) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?"><img src="' . $images['icon_aim'] . '" alt="' . $lang['AIM'] . '" title="' . $lang['AIM'] . '" border="0" /></a>' : ''; 98 $aim = ( $row['user_aim'] ) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?">' . $lang['AIM'] . '</a>' : ''; 99 100 $temp_url = append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']); 101 $msn_img = ( $row['user_msnm'] ) ? '<a href="' . $temp_url . '"><img src="' . $images['icon_msnm'] . '" alt="' . $lang['MSNM'] . '" title="' . $lang['MSNM'] . '" border="0" /></a>' : ''; 102 $msn = ( $row['user_msnm'] ) ? '<a href="' . $temp_url . '">' . $lang['MSNM'] . '</a>' : ''; 103 104 $yim_img = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg"><img src="' . $images['icon_yim'] . '" alt="' . $lang['YIM'] . '" title="' . $lang['YIM'] . '" border="0" /></a>' : ''; 105 $yim = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg">' . $lang['YIM'] . '</a>' : ''; 106 107 $temp_url = append_sid("search.$phpEx?search_author=" . urlencode($username) . "&showresults=posts"); 108 $search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . $lang['Search_user_posts'] . '" border="0" /></a>'; 109 $search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>'; 110 111 return; 112 } 113 // 114 // -------------------------- 115 116 // 117 // Start session management 118 // 119 $userdata = session_pagestart($user_ip, PAGE_GROUPCP, $nukeuser); 120 init_userprefs($userdata); 121 // 122 // End session management 123 // 124 125 $script_name = 'modules.php?name=Forums&file=groupcp'; 126 $server_name = trim($board_config['server_name']); 127 $server_protocol = ( $board_config['cookie_secure'] ) ? 'https://' : 'http://'; 128 $server_port = ( $board_config['server_port'] <> 80 ) ? ':' . trim($board_config['server_port']) . '/' : '/'; 129 130 $server_url = $server_protocol . $server_name . $server_port . $script_name; 131 132 if ( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) 133 { 134 $group_id = ( isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) ? intval($HTTP_POST_VARS[POST_GROUPS_URL]) : intval($HTTP_GET_VARS[POST_GROUPS_URL]); 135 } 136 else 137 { 138 $group_id = ''; 139 } 140 141 if ( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) ) 142 { 143 $mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode']; 144 $mode = htmlspecialchars($mode); 145 } 146 else 147 { 148 $mode = ''; 149 } 150 151 $confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE : 0; 152 $cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE : 0; 153 154 $start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0; 155 156 // 157 // Default var values 158 // 159 $header_location = ( @preg_match('/Microsoft|WebSTAR/', $_SERVER['SERVER_SOFTWARE']) ) ? 'Refresh: 0; URL=' : 'Location: '; 160 $is_moderator = FALSE; 161 162 if ( isset($HTTP_POST_VARS['groupstatus']) && $group_id ) 163 { 164 if ( !$userdata['session_logged_in'] ) 165 { 166 header($header_location . append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true)); 167 exit; 168 } 169 170 $sql = "SELECT group_moderator 171 FROM " . GROUPS_TABLE . " 172 WHERE group_id = '$group_id'"; 173 if ( !($result = $db->sql_query($sql)) ) 174 { 175 message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql); 176 } 177 178 $row = $db->sql_fetchrow($result); 179 180 if ( $row['group_moderator'] != $userdata['user_id'] && $userdata['user_level'] != ADMIN ) 181 { 182 $template->assign_vars(array( 183 'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') 184 ); 185 186 $message = $lang['Not_group_moderator'] . '<br /><br />' . sprintf($lang['Click_return_group'], '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>'); 187 188 message_die(GENERAL_MESSAGE, $message); 189 } 190 191 $sql = "UPDATE " . GROUPS_TABLE . " 192 SET group_type = " . intval($HTTP_POST_VARS['group_type']) . " 193 WHERE group_id = '$group_id'"; 194 if ( !($result = $db->sql_query($sql)) ) 195 { 196 message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql); 197 } 198 199 $template->assign_vars(array( 200 'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">') 201 ); 202 203 $message = $lang['Group_type_updated'] . '<br /><br />' . sprintf($lang['Click_return_group'], '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>'); 204 205 message_die(GENERAL_MESSAGE, $message); 206 207 } 208 else if ( isset($HTTP_POST_VARS['joingroup']) && $group_id ) 209 { 210 // 211 // First, joining a group 212 // If the user isn't logged in redirect them to login 213 // 214 if ( !$userdata['session_logged_in'] ) 215 { 216 header($header_location . append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true)); 217 exit; 218 } 219 220 $sql = "SELECT ug.user_id, g.group_type 221 FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 222 WHERE g.group_id = '$group_id' 223 AND g.group_type <> " . GROUP_HIDDEN . " 224 AND ug.group_id = g.group_id"; 225 if ( !($result = $db->sql_query($sql)) ) 226 { 227 message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql); 228 } 229 230 if ( $row = $db->sql_fetchrow($result) ) 231 { 232 if ( $row['group_type'] == GROUP_OPEN ) 233 { 234 do 235 { 236 if ( $userdata['user_id'] == $row['user_id'] ) 237 { 238 $template->assign_vars(array( 239 'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') 240 ); 241 242 $message = $lang['Already_member_group'] . '<br /><br />' . sprintf($lang['Click_return_group'], '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>'); 243 244 message_die(GENERAL_MESSAGE, $message); 245 } 246 } while ( $row = $db->sql_fetchrow($result) ); 247 } 248 else 249 { 250 $template->assign_vars(array( 251 'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') 252 ); 253 254 $message = $lang['This_closed_group'] . '<br /><br />' . sprintf($lang['Click_return_group'], '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>'); 255 256 message_die(GENERAL_MESSAGE, $message); 257 } 258 } 259 else 260 { 261 message_die(GENERAL_MESSAGE, $lang['No_groups_exist']); 262 } 263 264 $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending) 265 VALUES ('$group_id', " . $userdata['user_id'] . ", '1')"; 266 if ( !($result = $db->sql_query($sql)) ) 267 { 268 message_die(GENERAL_ERROR, "Error inserting user group subscription", "", __LINE__, __FILE__, $sql); 269 } 270 271 $sql = "SELECT u.user_email, u.username, u.user_lang, g.group_name 272 FROM ".USERS_TABLE . " u, " . GROUPS_TABLE . " g 273 WHERE u.user_id = g.group_moderator 274 AND g.group_id = '$group_id'"; 275 if ( !($result = $db->sql_query($sql)) ) 276 { 277 message_die(GENERAL_ERROR, "Error getting group moderator data", "", __LINE__, __FILE__, $sql); 278 } 279 280 $moderator = $db->sql_fetchrow($result); 281 282 include ("includes/emailer.php"); 283 $emailer = new emailer($board_config['smtp_delivery']); 284 285 $emailer->from($board_config['board_email']); 286 $emailer->replyto($board_config['board_email']); 287 288 $emailer->use_template('group_request', $moderator['user_lang']); 289 $emailer->email_address($moderator['user_email']); 290 $emailer->set_subject($lang['Group_request']); 291 292 $emailer->assign_vars(array( 293 'SITENAME' => $board_config['sitename'], 294 'GROUP_MODERATOR' => $moderator['username'], 295 'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '', 296 297 'U_GROUPCP' => $server_url . '&' . POST_GROUPS_URL . "=$group_id&validate=true") 298 ); 299 $emailer->send(); 300 $emailer->reset(); 301 302 $template->assign_vars(array( 303 'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') 304 ); 305 306 $message = $lang['Group_joined'] . '<br /><br />' . sprintf($lang['Click_return_group'], '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>'); 307 308 message_die(GENERAL_MESSAGE, $message); 309 } 310 else if ( isset($HTTP_POST_VARS['unsub']) || isset($HTTP_POST_VARS['unsubpending']) && $group_id ) 311 { 312 // 313 // Second, unsubscribing from a group 314 // Check for confirmation of unsub. 315 // 316 if ( $cancel ) 317 { 318 header($header_location . append_sid("groupcp.$phpEx", true)); 319 exit; 320 } 321 elseif ( !$userdata['session_logged_in'] ) 322 { 323 header($header_location . append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true)); 324 exit; 325 } 326 327 if ( $confirm ) 328 { 329 $sql = "DELETE FROM " . USER_GROUP_TABLE . " 330 WHERE user_id = " . $userdata['user_id'] . " 331 AND group_id = '$group_id'"; 332 if ( !($result = $db->sql_query($sql)) ) 333 { 334 message_die(GENERAL_ERROR, 'Could not delete group memebership data', '', __LINE__, __FILE__, $sql); 335 } 336 337 if ( $userdata['user_level'] != ADMIN && $userdata['user_level'] == MOD ) 338 { 339 $sql = "SELECT COUNT(auth_mod) AS is_auth_mod 340 FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug 341 WHERE ug.user_id = " . $userdata['user_id'] . " 342 AND aa.group_id = ug.group_id 343 AND aa.auth_mod = '1'"; 344 if ( !($result = $db->sql_query($sql)) ) 345 { 346 message_die(GENERAL_ERROR, 'Could not obtain moderator status', '', __LINE__, __FILE__, $sql); 347 } 348 349 if ( !($row = $db->sql_fetchrow($result)) || $row['is_auth_mod'] == 0 ) 350 { 351 $sql = "UPDATE " . USERS_TABLE . " 352 SET user_level = " . USER . " 353 WHERE user_id = " . $userdata['user_id']; 354 if ( !($result = $db->sql_query($sql)) ) 355 { 356 message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql); 357 } 358 } 359 } 360 361 $template->assign_vars(array( 362 'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') 363 ); 364 365 $message = $lang['Unsub_success'] . '<br /><br />' . sprintf($lang['Click_return_group'], '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>'); 366 367 message_die(GENERAL_MESSAGE, $message); 368 } 369 else 370 { 371 $unsub_msg = ( isset($HTTP_POST_VARS['unsub']) ) ? $lang['Confirm_unsub'] : $lang['Confirm_unsub_pending']; 372 373 $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" /><input type="hidden" name="unsub" value="1" />'; 374 375 $page_title = $lang['Group_Control_Panel']; 376 include ("includes/page_header.php"); 377 378 $template->set_filenames(array( 379 'confirm' => 'confirm_body.tpl') 380 ); 381 382 $template->assign_vars(array( 383 'MESSAGE_TITLE' => $lang['Confirm'], 384 'MESSAGE_TEXT' => $unsub_msg, 385 'L_YES' => $lang['Yes'], 386 'L_NO' => $lang['No'], 387 'S_CONFIRM_ACTION' => append_sid("groupcp.$phpEx"), 388 'S_HIDDEN_FIELDS' => $s_hidden_fields) 389 ); 390 391 $template->pparse('confirm'); 392 393 include ("includes/page_tail.php"); 394 } 395 396 } 397 else if ( $group_id ) 398 { 399 // 400 // Did the group moderator get here through an email? 401 // If so, check to see if they are logged in. 402 // 403 if ( isset($HTTP_GET_VARS['validate']) ) 404 { 405 if ( !$userdata['session_logged_in'] ) 406 { 407 header($header_location . append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true)); 408 exit; 409 } 410 } 411 412 // 413 // For security, get the ID of the group moderator. 414 // 415 switch(SQL_LAYER) 416 { 417 case 'postgresql': 418 $sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod 419 FROM " . GROUPS_TABLE . " g, " . AUTH_ACCESS_TABLE . " aa 420 WHERE g.group_id = '$group_id' 421 AND aa.group_id = g.group_id 422 UNION ( 423 SELECT g.group_moderator, g.group_type, NULL 424 FROM " . GROUPS_TABLE . " g 425 WHERE g.group_id = '$group_id' 426 AND NOT EXISTS ( 427 SELECT aa.group_id 428 FROM " . AUTH_ACCESS_TABLE . " aa 429 WHERE aa.group_id = g.group_id 430 ) 431 )"; 432 break; 433 434 case 'oracle': 435 $sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod 436 FROM " . GROUPS_TABLE . " g, " . AUTH_ACCESS_TABLE . " aa 437 WHERE g.group_id = '$group_id' 438 AND aa.group_id (+) = g.group_id"; 439 break; 440 441 default: 442 $sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod 443 FROM ( " . GROUPS_TABLE . " g 444 LEFT JOIN " . AUTH_ACCESS_TABLE . " aa ON aa.group_id = g.group_id ) 445 WHERE g.group_id = '$group_id'"; 446 break; 447 } 448 if ( !($result = $db->sql_query($sql)) ) 449 { 450 message_die(GENERAL_ERROR, 'Could not get moderator information', '', __LINE__, __FILE__, $sql); 451 } 452 453 if ( $group_info = $db->sql_fetchrow($result) ) 454 { 455 $group_moderator = $group_info['group_moderator']; 456 457 if ( $group_moderator == $userdata['user_id'] || $userdata['user_level'] == ADMIN ) 458 { 459 $is_moderator = TRUE; 460 } 461 462 // 463 // Handle Additions, removals, approvals and denials 464 // 465 if ( !empty($HTTP_POST_VARS['add']) || !empty($HTTP_POST_VARS['remove']) || isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny']) ) 466 { 467 if ( !$userdata['session_logged_in'] ) 468 { 469 header($header_location . append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true)); 470 exit; 471 } 472 473 if ( !$is_moderator ) 474 { 475 $template->assign_vars(array( 476 'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">') 477 ); 478 479 $message = $lang['Not_group_moderator'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>'); 480 481 message_die(GENERAL_MESSAGE, $message); 482 } 483 484 if ( isset($HTTP_POST_VARS['add']) ) 485 { 486 $username = ( isset($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : ''; 487 488 $sql = "SELECT user_id, user_email, user_lang, user_level 489 FROM " . USERS_TABLE . " 490 WHERE username = '" . str_replace("\'", "''", $username) . "'"; 491 if ( !($result = $db->sql_query($sql)) ) 492 { 493 message_die(GENERAL_ERROR, "Could not get user information", $lang['Error'], __LINE__, __FILE__, $sql); 494 } 495 496 if ( !($row = $db->sql_fetchrow($result)) ) 497 { 498 $template->assign_vars(array( 499 'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">') 500 ); 501 502 $message = $lang['Could_not_add_user'] . "<br /><br />" . sprintf($lang['Click_return_group'], "<a href=\"" . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.$phpEx") . "\">", "</a>"); 503 504 message_die(GENERAL_MESSAGE, $message); 505 } 506 507 if ( $row['user_id'] == ANONYMOUS ) 508 { 509 $template->assign_vars(array( 510 'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">') 511 ); 512 513 $message = $lang['Could_not_anon_user'] . '<br /><br />' . sprintf($lang['Click_return_group'], '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>'); 514 515 message_die(GENERAL_MESSAGE, $message); 516 } 517 518 $sql = "SELECT ug.user_id, u.user_level 519 FROM " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u 520 WHERE u.user_id = " . $row['user_id'] . " 521 AND ug.user_id = u.user_id 522 AND ug.group_id = '$group_id'"; 523 if ( !($result = $db->sql_query($sql)) ) 524 { 525 message_die(GENERAL_ERROR, 'Could not get user information', '', __LINE__, __FILE__, $sql); 526 } 527 528 if ( !($db->sql_fetchrow($result)) ) 529 { 530 $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending) 531 VALUES (" . $row['user_id'] . ", '$group_id', '0')"; 532 if ( !$db->sql_query($sql) ) 533 { 534 message_die(GENERAL_ERROR, 'Could not add user to group', '', __LINE__, __FILE__, $sql); 535 } 536 537 if ( $row['user_level'] != ADMIN && $row['user_level'] != MOD && $group_info['auth_mod'] ) 538 { 539 $sql = "UPDATE " . USERS_TABLE . " 540 SET user_level = " . MOD . " 541 WHERE user_id = " . $row['user_id']; 542 if ( !$db->sql_query($sql) ) 543 { 544 message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql); 545 } 546 } 547 548 // 549 // Get the group name 550 // Email the user and tell them they're in the group 551 // 552 $group_sql = "SELECT group_name 553 FROM " . GROUPS_TABLE . " 554 WHERE group_id = '$group_id'"; 555 if ( !($result = $db->sql_query($group_sql)) ) 556 { 557 message_die(GENERAL_ERROR, 'Could not get group information', '', __LINE__, __FILE__, $group_sql); 558 } 559 560 $group_name_row = $db->sql_fetchrow($result); 561 562 $group_name = $group_name_row['group_name']; 563 564 include ("includes/emailer.php"); 565 $emailer = new emailer($board_config['smtp_delivery']); 566 567 $emailer->from($board_config['board_email']); 568 $emailer->replyto($board_config['board_email']); 569 570 $emailer->use_template('group_added', $row['user_lang']); 571 $emailer->email_address($row['user_email']); 572 $emailer->set_subject($lang['Group_added']); 573 574 $emailer->assign_vars(array( 575 'SITENAME' => $board_config['sitename'], 576 'GROUP_NAME' => $group_name, 577 'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '', 578 579 'U_GROUPCP' => $server_url . '&' . POST_GROUPS_URL . "=$group_id") 580 ); 581 $emailer->send(); 582 $emailer->reset(); 583 } 584 else 585 { 586 $template->assign_vars(array( 587 'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">') 588 ); 589 590 $message = $lang['User_is_member_group'] . '<br /><br />' . sprintf($lang['Click_return_group'], '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>'); 591 592 message_die(GENERAL_MESSAGE, $message); 593 } 594 } 595 else 596 { 597 if ( ( ( isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny']) ) && isset($HTTP_POST_VARS['pending_members']) ) || ( isset($HTTP_POST_VARS['remove']) && isset($HTTP_POST_VARS['members']) ) ) 598 { 599 600 $members = ( isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny']) ) ? $HTTP_POST_VARS['pending_members'] : $HTTP_POST_VARS['members']; 601 602 $sql_in = ''; 603 for($i = 0; $i < count($members); $i++) 604 { 605 $sql_in .= ( ( $sql_in != '' ) ? ', ' : '' ) . intval($members[$i]); 606 } 607 608 if ( isset($HTTP_POST_VARS['approve']) ) 609 { 610 if ( $group_info['auth_mod'] ) 611 { 612 $sql = "UPDATE " . USERS_TABLE . " 613 SET user_level = " . MOD . " 614 WHERE user_id IN ($sql_in) 615 AND user_level NOT IN (" . MOD . ", " . ADMIN . ")"; 616 if ( !$db->sql_query($sql) ) 617 { 618 message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql); 619 } 620 } 621 622 $sql = "UPDATE " . USER_GROUP_TABLE . " 623 SET user_pending = 0 624 WHERE user_id IN ($sql_in) 625 AND group_id = '$group_id'"; 626 $sql_select = "SELECT user_email 627 FROM ". USERS_TABLE . " 628 WHERE user_id IN ($sql_in)"; 629 } 630 else if ( isset($HTTP_POST_VARS['deny']) || isset($HTTP_POST_VARS['remove']) ) 631 { 632 if ( $group_info['auth_mod'] ) 633 { 634 $sql = "SELECT ug.user_id, ug.group_id 635 FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug 636 WHERE ug.user_id IN ($sql_in) 637 AND aa.group_id = ug.group_id 638 AND aa.auth_mod = '1' 639 GROUP BY ug.user_id, ug.group_id 640 ORDER BY ug.user_id, ug.group_id"; 641 if ( !($result = $db->sql_query($sql)) ) 642 { 643 message_die(GENERAL_ERROR, 'Could not obtain moderator status', '', __LINE__, __FILE__, $sql); 644 } 645 646 if ( $row = $db->sql_fetchrow($result) ) 647 { 648 $group_check = array(); 649 $remove_mod_sql = ''; 650 651 do 652 { 653 $group_check[$row['user_id']][] = $row['group_id']; 654 } 655 while ( $row = $db->sql_fetchrow($result) ); 656 657 while( list($user_id, $group_list) = @each($group_check) ) 658 { 659 if ( count($group_list) == 1 ) 660 { 661 $remove_mod_sql .= ( ( $remove_mod_sql != '' ) ? ', ' : '' ) . $user_id; 662 } 663 } 664 665 if ( $remove_mod_sql != '' ) 666 { 667 $sql = "UPDATE " . USERS_TABLE . " 668 SET user_level = " . USER . " 669 WHERE user_id IN ($remove_mod_sql) 670 AND user_level NOT IN (" . ADMIN . ")"; 671 if ( !$db->sql_query($sql) ) 672 { 673 message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql); 674 } 675 } 676 } 677 } 678 679 $sql = "DELETE FROM " . USER_GROUP_TABLE . " 680 WHERE user_id IN ($sql_in) 681 AND group_id = '$group_id'"; 682 } 683 684 if ( !$db->sql_query($sql) ) 685 { 686 message_die(GENERAL_ERROR, 'Could not update user group table', '', __LINE__, __FILE__, $sql); 687 } 688 689 // 690 // Email users when they are approved 691 // 692 if ( isset($HTTP_POST_VARS['approve']) ) 693 { 694 if ( !($result = $db->sql_query($sql_select)) ) 695 { 696 message_die(GENERAL_ERROR, 'Could not get user email information', '', __LINE__, __FILE__, $sql); 697 } 698 699 $bcc_list = array(); 700 while ($row = $db->sql_fetchrow($result)) 701 { 702 $bcc_list[] = $row['user_email']; 703 } 704 705 // 706 // Get the group name 707 // 708 $group_sql = "SELECT group_name 709 FROM " . GROUPS_TABLE . " 710 WHERE group_id = '$group_id'"; 711 if ( !($result = $db->sql_query($group_sql)) ) 712 { 713 message_die(GENERAL_ERROR, 'Could not get group information', '', __LINE__, __FILE__, $group_sql); 714 } 715 716 $group_name_row = $db->sql_fetchrow($result); 717 $group_name = $group_name_row['group_name']; 718 719 include ("includes/emailer.php"); 720 $emailer = new emailer($board_config['smtp_delivery']); 721 722 $emailer->from($board_config['board_email']); 723 $emailer->replyto($board_config['board_email']); 724 725 for ($i = 0; $i < count($bcc_list); $i++) 726 { 727 $emailer->bcc($bcc_list[$i]); 728 } 729 730 $emailer->use_template('group_approved'); 731 $emailer->set_subject($lang['Group_approved']); 732 733 $emailer->assign_vars(array( 734 'SITENAME' => $board_config['sitename'], 735 'GROUP_NAME' => $group_name, 736 'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '', 737 738 'U_GROUPCP' => $server_url . '&' . POST_GROUPS_URL . "=$group_id") 739 ); 740 $emailer->send(); 741 $emailer->reset(); 742 } 743 } 744 } 745 } 746 // 747 // END approve or deny 748 // 749 } 750 else 751 { 752 message_die(GENERAL_MESSAGE, $lang['No_groups_exist']); 753 } 754 755 // 756 // Get group details 757 // 758 $sql = "SELECT * 759 FROM " . GROUPS_TABLE . " 760 WHERE group_id = '$group_id' 761 AND group_single_user = '0'"; 762 if ( !($result = $db->sql_query($sql)) ) 763 { 764 message_die(GENERAL_ERROR, 'Error getting group information', '', __LINE__, __FILE__, $sql); 765 } 766 767 if ( !($group_info = $db->sql_fetchrow($result)) ) 768 { 769 message_die(GENERAL_MESSAGE, $lang['Group_not_exist']); 770 } 771 772 // 773 // Get moderator details for this group 774 // 775 $sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm 776 FROM " . USERS_TABLE . " 777 WHERE user_id = " . $group_info['group_moderator']; 778 if ( !($result = $db->sql_query($sql)) ) 779 { 780 message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql); 781 } 782 783 $group_moderator = $db->sql_fetchrow($result); 784 785 // 786 // Get user information for this group 787 // 788 $sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, ug.user_pending 789 FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug 790 WHERE ug.group_id = '$group_id' 791 AND u.user_id = ug.user_id 792 AND ug.user_pending = '0' 793 AND ug.user_id <> " . $group_moderator['user_id'] . " 794 ORDER BY u.username"; 795 if ( !($result = $db->sql_query($sql)) ) 796 { 797 message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql); 798 } 799 800 $group_members = $db->sql_fetchrowset($result); 801 $members_count = count($group_members); 802 $db->sql_freeresult($result); 803 804 $sql = "SELECT u.username, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm 805 FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u 806 WHERE ug.group_id = '$group_id' 807 AND g.group_id = ug.group_id 808 AND ug.user_pending = '1' 809 AND u.user_id = ug.user_id 810 ORDER BY u.username"; 811 if ( !($result = $db->sql_query($sql)) ) 812 { 813 message_die(GENERAL_ERROR, 'Error getting user pending information', '', __LINE__, __FILE__, $sql); 814 } 815 816 $modgroup_pending_list = $db->sql_fetchrowset($result); 817 $modgroup_pending_count = count($modgroup_pending_list); 818 $db->sql_freeresult($result); 819 820 $is_group_member = 0; 821 if ( $members_count ) 822 { 823 for($i = 0; $i < $members_count; $i++) 824 { 825 if ( $group_members[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in'] ) 826 { 827 $is_group_member = TRUE; 828 } 829 } 830 } 831 832 $is_group_pending_member = 0; 833 if ( $modgroup_pending_count ) 834 { 835 for($i = 0; $i < $modgroup_pending_count; $i++) 836 { 837 if ( $modgroup_pending_list[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in'] ) 838 { 839 $is_group_pending_member = TRUE; 840 } 841 } 842 } 843 844 if ( $userdata['user_level'] == ADMIN ) 845 { 846 $is_moderator = TRUE; 847 } 848 849 if ( $userdata['user_id'] == $group_info['group_moderator'] ) 850 { 851 $is_moderator = TRUE; 852 853 $group_details = $lang['Are_group_moderator']; 854 855 $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />'; 856 } 857 else if ( $is_group_member || $is_group_pending_member ) 858 { 859 $template->assign_block_vars('switch_unsubscribe_group_input', array()); 860 861 $group_details = ( $is_group_pending_member ) ? $lang['Pending_this_group'] : $lang['Member_this_group']; 862 863 $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />'; 864 } 865 else if ( $userdata['user_id'] == ANONYMOUS ) 866 { 867 $group_details = $lang['Login_to_join']; 868 $s_hidden_fields = ''; 869 } 870 else 871 { 872 if ( $group_info['group_type'] == GROUP_OPEN ) 873 { 874 $template->assign_block_vars('switch_subscribe_group_input', array()); 875 876 $group_details = $lang['This_open_group']; 877 $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />'; 878 } 879 else if ( $group_info['group_type'] == GROUP_CLOSED ) 880 { 881 $group_details = $lang['This_closed_group']; 882 $s_hidden_fields = ''; 883 } 884 else if ( $group_info['group_type'] == GROUP_HIDDEN ) 885 { 886 $group_details = $lang['This_hidden_group']; 887 $s_hidden_fields = ''; 888 } 889 } 890 891 $page_title = $lang['Group_Control_Panel']; 892 include ("includes/page_header.php"); 893 894 // 895 // Load templates 896 // 897 $template->set_filenames(array( 898 'info' => 'groupcp_info_body.tpl', 899 'pendinginfo' => 'groupcp_pending_info.tpl') 900 ); 901 make_jumpbox('viewforum.'.$phpEx); 902 903 // 904 // Add the moderator 905 // 906 $username = $group_moderator['username']; 907 $user_id = $group_moderator['user_id']; 908 909 generate_user_info($group_moderator, $board_config['default_dateformat'], $is_moderator, $from, $posts, $joined, $poster_avatar, $profile_img, $profile, $search_img, $search, $pm_img, $pm, $email_img, $email, $www_img, $www, $icq_status_img, $icq_img, $icq, $aim_img, $aim, $msn_img, $msn, $yim_img, $yim); 910 911 $s_hidden_fields .= ''; 912 913 $template->assign_vars(array( 914 'L_GROUP_INFORMATION' => $lang['Group_Information'], 915 'L_GROUP_NAME' => $lang['Group_name'], 916 'L_GROUP_DESC' => $lang['Group_description'], 917 'L_GROUP_TYPE' => $lang['Group_type'], 918 'L_GROUP_MEMBERSHIP' => $lang['Group_membership'], 919 'L_SUBSCRIBE' => $lang['Subscribe'], 920 'L_UNSUBSCRIBE' => $lang['Unsubscribe'], 921 'L_JOIN_GROUP' => $lang['Join_group'], 922 'L_UNSUBSCRIBE_GROUP' => $lang['Unsubscribe'], 923 'L_GROUP_OPEN' => $lang['Group_open'], 924 'L_GROUP_CLOSED' => $lang['Group_closed'], 925 'L_GROUP_HIDDEN' => $lang['Group_hidden'], 926 'L_UPDATE' => $lang['Update'], 927 'L_GROUP_MODERATOR' => $lang['Group_Moderator'], 928 'L_GROUP_MEMBERS' => $lang['Group_Members'], 929 'L_PENDING_MEMBERS' => $lang['Pending_members'], 930 'L_SELECT_SORT_METHOD' => $lang['Select_sort_method'], 931 'L_PM' => $lang['Private_Message'], 932 'L_EMAIL' => $lang['Email'], 933 'L_POSTS' => $lang['Posts'], 934 'L_WEBSITE' => $lang['Website'], 935 'L_FROM' => $lang['Location'], 936 'L_ORDER' => $lang['Order'], 937 'L_SORT' => $lang['Sort'], 938 'L_SUBMIT' => $lang['Sort'], 939 'L_AIM' => $lang['AIM'], 940 'L_YIM' => $lang['YIM'], 941 'L_MSNM' => $lang['MSNM'], 942 'L_ICQ' => $lang['ICQ'], 943 'L_SELECT' => $lang['Select'], 944 'L_REMOVE_SELECTED' => $lang['Remove_selected'], 945 'L_ADD_MEMBER' => $lang['Add_member'], 946 'L_FIND_USERNAME' => $lang['Find_username'], 947 948 'GROUP_NAME' => $group_info['group_name'], 949 'GROUP_DESC' => $group_info['group_description'], 950 'GROUP_DETAILS' => $group_details, 951 'MOD_ROW_COLOR' => '#' . $theme['td_color1'], 952 'MOD_ROW_CLASS' => $theme['td_class1'], 953 'MOD_USERNAME' => $username, 954 'MOD_FROM' => $from, 955 'MOD_JOINED' => $joined, 956 'MOD_POSTS' => $posts, 957 'MOD_AVATAR_IMG' => $poster_avatar, 958 'MOD_PROFILE_IMG' => $profile_img, 959 'MOD_PROFILE' => $profile, 960 'MOD_SEARCH_IMG' => $search_img, 961 'MOD_SEARCH' => $search, 962 'MOD_PM_IMG' => $pm_img, 963 'MOD_PM' => $pm, 964 'MOD_EMAIL_IMG' => $email_img, 965 'MOD_EMAIL' => $email, 966 'MOD_WWW_IMG' => $www_img, 967 'MOD_WWW' => $www, 968 'MOD_ICQ_STATUS_IMG' => $icq_status_img, 969 'MOD_ICQ_IMG' => $icq_img, 970 'MOD_ICQ' => $icq, 971 'MOD_AIM_IMG' => $aim_img, 972 'MOD_AIM' => $aim, 973 'MOD_MSN_IMG' => $msn_img, 974 'MOD_MSN' => $msn, 975 'MOD_YIM_IMG' => $yim_img, 976 'MOD_YIM' => $yim, 977 978 'U_MOD_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id"), 979 'U_SEARCH_USER' => append_sid("search.$phpEx?mode=searchuser&popup=1"), 980 981 'S_GROUP_OPEN_TYPE' => GROUP_OPEN, 982 'S_GROUP_CLOSED_TYPE' => GROUP_CLOSED, 983 'S_GROUP_HIDDEN_TYPE' => GROUP_HIDDEN, 984 'S_GROUP_OPEN_CHECKED' => ( $group_info['group_type'] == GROUP_OPEN ) ? ' checked="checked"' : '', 985 'S_GROUP_CLOSED_CHECKED' => ( $group_info['group_type'] == GROUP_CLOSED ) ? ' checked="checked"' : '', 986 'S_GROUP_HIDDEN_CHECKED' => ( $group_info['group_type'] == GROUP_HIDDEN ) ? ' checked="checked"' : '', 987 'S_HIDDEN_FIELDS' => $s_hidden_fields, 988 'S_MODE_SELECT' => $select_sort_mode, 989 'S_ORDER_SELECT' => $select_sort_order, 990 'S_GROUPCP_ACTION' => append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id")) 991 ); 992 993 // 994 // Dump out the remaining users 995 // 996 for($i = $start; $i < min($board_config['topics_per_page'] + $start, $members_count); $i++) 997 { 998 $username = $group_members[$i]['username']; 999 $user_id = $group_members[$i]['user_id']; 1000 1001 generate_user_info($group_members[$i], $board_config['default_dateformat'], $is_moderator, $from, $posts, $joined, $poster_avatar, $profile_img, $profile, $search_img, $search, $pm_img, $pm, $email_img, $email, $www_img, $www, $icq_status_img, $icq_img, $icq, $aim_img, $aim, $msn_img, $msn, $yim_img, $yim); 1002 1003 if ( $group_info['group_type'] != GROUP_HIDDEN || $is_group_member || $is_moderator ) 1004 { 1005 $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; 1006 $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; 1007 1008 $template->assign_block_vars('member_row', array( 1009 'ROW_COLOR' => '#' . $row_color, 1010 'ROW_CLASS' => $row_class, 1011 'USERNAME' => $username, 1012 'FROM' => $from, 1013 'JOINED' => $joined, 1014 'POSTS' => $posts, 1015 'USER_ID' => $user_id, 1016 'AVATAR_IMG' => $poster_avatar, 1017 'PROFILE_IMG' => $profile_img, 1018 'PROFILE' => $profile, 1019 'SEARCH_IMG' => $search_img, 1020 'SEARCH' => $search, 1021 'PM_IMG' => $pm_img, 1022 'PM' => $pm, 1023 'EMAIL_IMG' => $email_img, 1024 'EMAIL' => $email, 1025 'WWW_IMG' => $www_img, 1026 'WWW' => $www, 1027 'ICQ_STATUS_IMG' => $icq_status_img, 1028 'ICQ_IMG' => $icq_img, 1029 'ICQ' => $icq, 1030 'AIM_IMG' => $aim_img, 1031 'AIM' => $aim, 1032 'MSN_IMG' => $msn_img, 1033 'MSN' => $msn, 1034 'YIM_IMG' => $yim_img, 1035 'YIM' => $yim, 1036 1037 'U_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id")) 1038 ); 1039 1040 if ( $is_moderator ) 1041 { 1042 $template->assign_block_vars('member_row.switch_mod_option', array()); 1043 } 1044 } 1045 } 1046 1047 if ( !$members_count ) 1048 { 1049 // 1050 // No group members 1051 // 1052 $template->assign_block_vars('switch_no_members', array()); 1053 $template->assign_vars(array( 1054 'L_NO_MEMBERS' => $lang['No_group_members']) 1055 ); 1056 } 1057 1058 $current_page = ( !$members_count ) ? 1 : ceil( $members_count / $board_config['topics_per_page'] ); 1059 1060 $template->assign_vars(array( 1061 'PAGINATION' => generate_pagination("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id", $members_count, $board_config['topics_per_page'], $start), 1062 'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), $current_page ), 1063 1064 'L_GOTO_PAGE' => $lang['Goto_page']) 1065 ); 1066 1067 if ( $group_info['group_type'] == GROUP_HIDDEN && !$is_group_member && !$is_moderator ) 1068 { 1069 // 1070 // No group members 1071 // 1072 $template->assign_block_vars('switch_hidden_group', array()); 1073 $template->assign_vars(array( 1074 'L_HIDDEN_MEMBERS' => $lang['Group_hidden_members']) 1075 ); 1076 } 1077 1078 // 1079 // We've displayed the members who belong to the group, now we 1080 // do that pending memebers... 1081 // 1082 if ( $is_moderator ) 1083 { 1084 // 1085 // Users pending in ONLY THIS GROUP (which is moderated by this user) 1086 // 1087 if ( $modgroup_pending_count ) 1088 { 1089 for($i = 0; $i < $modgroup_pending_count; $i++) 1090 { 1091 $username = $modgroup_pending_list[$i]['username']; 1092 $user_id = $modgroup_pending_list[$i]['user_id']; 1093 1094 generate_user_info($modgroup_pending_list[$i], $board_config['default_dateformat'], $is_moderator, $from, $posts, $joined, $poster_avatar, $profile_img, $profile, $search_img, $search, $pm_img, $pm, $email_img, $email, $www_img, $www, $icq_status_img, $icq_img, $icq, $aim_img, $aim, $msn_img, $msn, $yim_img, $yim); 1095 1096 $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; 1097 $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; 1098 1099 $user_select = '<input type="checkbox" name="member[]" value="' . $user_id . '">'; 1100 1101 $template->assign_block_vars('pending_members_row', array( 1102 'ROW_CLASS' => $row_class, 1103 'ROW_COLOR' => '#' . $row_color, 1104 'USERNAME' => $username, 1105 'FROM' => $from, 1106 'JOINED' => $joined, 1107 'POSTS' => $posts, 1108 'USER_ID' => $user_id, 1109 'AVATAR_IMG' => $poster_avatar, 1110 'PROFILE_IMG' => $profile_img, 1111 'PROFILE' => $profile, 1112 'SEARCH_IMG' => $search_img, 1113 'SEARCH' => $search, 1114 'PM_IMG' => $pm_img, 1115 'PM' => $pm, 1116 'EMAIL_IMG' => $email_img, 1117 'EMAIL' => $email, 1118 'WWW_IMG' => $www_img, 1119 'WWW' => $www, 1120 'ICQ_STATUS_IMG' => $icq_status_img, 1121 'ICQ_IMG' => $icq_img, 1122 'ICQ' => $icq, 1123 'AIM_IMG' => $aim_img, 1124 'AIM' => $aim, 1125 'MSN_IMG' => $msn_img, 1126 'MSN' => $msn, 1127 'YIM_IMG' => $yim_img, 1128 'YIM' => $yim, 1129 1130 'U_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id")) 1131 ); 1132 } 1133 1134 $template->assign_block_vars('switch_pending_members', array() ); 1135 1136 $template->assign_vars(array( 1137 'L_SELECT' => $lang['Select'], 1138 'L_APPROVE_SELECTED' => $lang['Approve_selected'], 1139 'L_DENY_SELECTED' => $lang['Deny_selected']) 1140 ); 1141 1142 $template->assign_var_from_handle('PENDING_USER_BOX', 'pendinginfo'); 1143 1144 } 1145 } 1146 1147 if ( $is_moderator ) 1148 { 1149 $template->assign_block_vars('switch_mod_option', array()); 1150 $template->assign_block_vars('switch_add_member', array()); 1151 } 1152 1153 $template->pparse('info'); 1154 } 1155 else 1156 { 1157 // 1158 // Show the main groupcp.php screen where the user can select a group. 1159 // 1160 // Select all group that the user is a member of or where the user has 1161 // a pending membership. 1162 // 1163 $in_group = array(); 1164 if ( $userdata['session_logged_in'] ) 1165 { 1166 $sql = "SELECT g.group_id, g.group_name, g.group_type, ug.user_pending 1167 FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug 1168 WHERE ug.user_id = " . $userdata['user_id'] . " 1169 AND ug.group_id = g.group_id 1170 AND g.group_single_user <> " . TRUE . " 1171 ORDER BY g.group_name, ug.user_id"; 1172 if ( !($result = $db->sql_query($sql)) ) 1173 { 1174 message_die(GENERAL_ERROR, 'Error getting group information', '', __LINE__, __FILE__, $sql); 1175 } 1176 1177 if ( $row = $db->sql_fetchrow($result) ) 1178 { 1179 $in_group = array(); 1180 $s_member_groups_opt = ''; 1181 $s_pending_groups_opt = ''; 1182 1183 do 1184 { 1185 $in_group[] = $row['group_id']; 1186 if ( $row['user_pending'] ) 1187 { 1188 $s_pending_groups_opt .= '<option value="' . $row['group_id'] . '">' . $row['group_name'] . '</option>'; 1189 } 1190 else 1191 { 1192 $s_member_groups_opt .= '<option value="' . $row['group_id'] . '">' . $row['group_name'] . '</option>'; 1193 } 1194 } 1195 while( $row = $db->sql_fetchrow($result) ); 1196 1197 $s_pending_groups = '<select name="' . POST_GROUPS_URL . '">' . $s_pending_groups_opt . "</select>"; 1198 $s_member_groups = '<select name="' . POST_GROUPS_URL . '">' . $s_member_groups_opt . "</select>"; 1199 } 1200 } 1201 1202 // 1203 // Select all other groups i.e. groups that this user is not a member of 1204 // 1205 $ignore_group_sql = ( count($in_group) ) ? "AND group_id NOT IN (" . implode(', ', $in_group) . ")" : ''; 1206 $sql = "SELECT group_id, group_name, group_type 1207 FROM " . GROUPS_TABLE . " g 1208 WHERE group_single_user <> " . TRUE . " 1209 $ignore_group_sql 1210 ORDER BY g.group_name"; 1211 if ( !($result = $db->sql_query($sql)) ) 1212 { 1213 message_die(GENERAL_ERROR, 'Error getting group information', '', __LINE__, __FILE__, $sql); 1214 } 1215 1216 $s_group_list_opt = ''; 1217 while( $row = $db->sql_fetchrow($result) ) 1218 { 1219 if ( $row['group_type'] != GROUP_HIDDEN || $userdata['user_level'] == ADMIN ) 1220 { 1221 $s_group_list_opt .='<option value="' . $row['group_id'] . '">' . $row['group_name'] . '</option>'; 1222 } 1223 } 1224 $s_group_list = '<select name="' . POST_GROUPS_URL . '">' . $s_group_list_opt . '</select>'; 1225 1226 if ( $s_group_list_opt != '' || $s_pending_groups_opt != '' || $s_member_groups_opt != '' ) 1227 { 1228 // 1229 // Load and process templates 1230 // 1231 include ("includes/page_header.php"); 1232 1233 $template->set_filenames(array( 1234 'user' => 'groupcp_user_body.tpl') 1235 ); 1236 make_jumpbox('viewforum.'.$phpEx); 1237 1238 if ( $s_pending_groups_opt != '' || $s_member_groups_opt != '' ) 1239 { 1240 $template->assign_block_vars('switch_groups_joined', array() ); 1241 } 1242 1243 if ( $s_member_groups_opt != '' ) 1244 { 1245 $template->assign_block_vars('switch_groups_joined.switch_groups_member', array() ); 1246 } 1247 1248 if ( $s_pending_groups_opt != '' ) 1249 { 1250 $template->assign_block_vars('switch_groups_joined.switch_groups_pending', array() ); 1251 } 1252 1253 if ( $s_group_list_opt != '' ) 1254 { 1255 $template->assign_block_vars('switch_groups_remaining', array() ); 1256 } 1257 1258 $s_hidden_fields = '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />'; 1259 1260 $template->assign_vars(array( 1261 'L_GROUP_MEMBERSHIP_DETAILS' => $lang['Group_member_details'], 1262 'L_JOIN_A_GROUP' => $lang['Group_member_join'], 1263 'L_YOU_BELONG_GROUPS' => $lang['Current_memberships'], 1264 'L_SELECT_A_GROUP' => $lang['Non_member_groups'], 1265 'L_PENDING_GROUPS' => $lang['Memberships_pending'], 1266 'L_SUBSCRIBE' => $lang['Subscribe'], 1267 'L_UNSUBSCRIBE' => $lang['Unsubscribe'], 1268 'L_VIEW_INFORMATION' => $lang['View_Information'], 1269 1270 'S_USERGROUP_ACTION' => append_sid("groupcp.$phpEx"), 1271 'S_HIDDEN_FIELDS' => $s_hidden_fields, 1272 1273 'GROUP_LIST_SELECT' => $s_group_list, 1274 'GROUP_PENDING_SELECT' => $s_pending_groups, 1275 'GROUP_MEMBER_SELECT' => $s_member_groups) 1276 ); 1277 1278 $template->pparse('user'); 1279 } 1280 else 1281 { 1282 message_die(GENERAL_MESSAGE, $lang['No_groups_exist']); 1283 } 1284 1285 } 1286 1287 include ("includes/page_tail.php"); 1288 1289 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Apr 1 11:11:59 2007 | par Balluche grâce à PHPXref 0.7 |