[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/ -> groupcp.php (source)

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


Generated: Mon Jan 14 19:21:40 2013 Cross-referenced by PHPXref 0.7.1