Verzeichnisstruktur phpBB-2.0.0


Veröffentlicht
03.04.2002

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

groupcp.php

Zuletzt modifiziert: 09.10.2024, 12:50 - Dateigröße: 45.36 KiB


0001  <?php
0002  /***************************************************************************
0003   *                               groupcp.php
0004   *                            -------------------
0005   *   begin                : Saturday, Feb 13, 2001
0006   *   copyright            : (C) 2001 The phpBB Group
0007   *   email                : support@phpbb.com
0008   *
0009   *   $Id$
0010   *
0011   *
0012   ***************************************************************************/
0013   
0014  /***************************************************************************
0015   *
0016   *   This program is free software; you can redistribute it and/or modify
0017   *   it under the terms of the GNU General Public License as published by
0018   *   the Free Software Foundation; either version 2 of the License, or
0019   *   (at your option) any later version.
0020   *
0021   ***************************************************************************/
0022   
0023  define('IN_PHPBB', true);
0024  $phpbb_root_path = './';
0025  include($phpbb_root_path . 'extension.inc');
0026  include($phpbb_root_path . 'common.'.$phpEx);
0027   
0028  // -------------------------
0029  //
0030  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)
0031  {
0032      global $lang, $images, $board_config, $phpEx;
0033   
0034      $from = ( !empty($row['user_from']) ) ? $row['user_from'] : '&nbsp;';
0035      $joined = create_date($date_format, $row['user_regdate'], $board_config['board_timezone']);
0036      $posts = ( $row['user_posts'] ) ? $row['user_posts'] : 0;
0037   
0038      $poster_avatar = '';
0039      if ( $row['user_avatar_type'] && $row['user_id'] != ANONYMOUS && $row['user_allowavatar'] )
0040      {
0041          switch( $row['user_avatar_type'] )
0042          {
0043              case USER_AVATAR_UPLOAD:
0044                  $poster_avatar = ( $board_config['allow_avatar_upload'] ) ? '<img src="' . $board_config['avatar_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : '';
0045                  break;
0046              case USER_AVATAR_REMOTE:
0047                  $poster_avatar = ( $board_config['allow_avatar_remote'] ) ? '<img src="' . $row['user_avatar'] . '" alt="" border="0" />' : '';
0048                  break;
0049              case USER_AVATAR_GALLERY:
0050                  $poster_avatar = ( $board_config['allow_avatar_local'] ) ? '<img src="' . $board_config['avatar_gallery_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : '';
0051                  break;
0052          }
0053      }
0054   
0055      if ( !empty($row['user_viewemail']) || $group_mod )
0056      {
0057          $email_uri = ( $board_config['board_email_form'] ) ? append_sid("profile.$phpEx?mode=email&amp;" . POST_USERS_URL .'=' . $row['user_id']) : 'mailto:' . $row['user_email'];
0058   
0059          $email_img = '<a href="' . $email_uri . '"><img src="' . $images['icon_email'] . '" alt="' . $lang['Send_email'] . '" title="' . $lang['Send_email'] . '" border="0" /></a>';
0060          $email = '<a href="' . $email_uri . '">' . $lang['Send_email'] . '</a>';
0061      }
0062      else
0063      {
0064          $email_img = '&nbsp;';
0065          $email = '&nbsp;';
0066      }
0067   
0068      $temp_url = append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=" . $row['user_id']);
0069      $profile_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_profile'] . '" alt="' . $lang['Read_profile'] . '" title="' . $lang['Read_profile'] . '" border="0" /></a>';
0070      $profile = '<a href="' . $temp_url . '">' . $lang['Read_profile'] . '</a>';
0071   
0072      $temp_url = append_sid("privmsg.$phpEx?mode=post&amp;" . POST_USERS_URL . "=" . $row['user_id']);
0073      $pm_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_pm'] . '" alt="' . $lang['Send_private_message'] . '" title="' . $lang['Send_private_message'] . '" border="0" /></a>';
0074      $pm = '<a href="' . $temp_url . '">' . $lang['Send_private_message'] . '</a>';
0075   
0076      $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>' : '';
0077      $www = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $lang['Visit_website'] . '</a>' : '';
0078   
0079      if ( !empty($row['user_icq']) )
0080      {
0081          $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>';
0082          $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>';
0083          $icq =  '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $lang['ICQ'] . '</a>';
0084      }
0085      else
0086      {
0087          $icq_status_img = '';
0088          $icq_img = '';
0089          $icq = '';
0090      }
0091   
0092      $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>' : '';
0093      $aim = ( $row['user_aim'] ) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&amp;message=Hello+Are+you+there?">' . $lang['AIM'] . '</a>' : '';
0094   
0095      $temp_url = append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=" . $row['user_id']);
0096      $msn_img = ( $row['user_msnm'] ) ? '<a href="' . $temp_url . '"><img src="' . $images['icon_msnm'] . '" alt="' . $lang['MSNM'] . '" title="' . $lang['MSNM'] . '" border="0" /></a>' : '';
0097      $msn = ( $row['user_msnm'] ) ? '<a href="' . $temp_url . '">' . $lang['MSNM'] . '</a>' : '';
0098   
0099      $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>' : '';
0100      $yim = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&amp;.src=pg">' . $lang['YIM'] . '</a>' : '';
0101   
0102      $temp_url = append_sid("search.$phpEx?search_author=" . urlencode($row['username']) . "&amp;showresults=posts");
0103      $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>';
0104      $search = '<a href="' . $temp_url . '">' . sprintf($lang['Search_user_posts'], $row['username']) . '</a>';
0105   
0106      return;
0107  }
0108  //
0109  // --------------------------
0110   
0111  //
0112  // Start session management
0113  //
0114  $userdata = session_pagestart($user_ip, PAGE_GROUPCP);
0115  init_userprefs($userdata);
0116  //
0117  // End session management
0118  //
0119   
0120  $script_name = preg_replace('/^\/?(.*?)\/?$/', "\\1", trim($board_config['script_path']));
0121  $script_name = ( $script_name != '' ) ? $script_name . '/groupcp.'.$phpEx : 'groupcp.'.$phpEx;
0122  $server_name = trim($board_config['server_name']);
0123  $server_protocol = ( $board_config['cookie_secure'] ) ? 'https://' : 'http://';
0124  $server_port = ( $board_config['server_port'] <> 80 ) ? ':' . trim($board_config['server_port']) . '/' : '/';
0125   
0126  $server_url = $server_protocol . $server_name . $server_port . $script_name;
0127   
0128  if ( isset($HTTP_GET_VARS[POST_GROUPS_URL]) || isset($HTTP_POST_VARS[POST_GROUPS_URL]) )
0129  {
0130      $group_id = ( isset($HTTP_POST_VARS[POST_GROUPS_URL]) ) ? intval($HTTP_POST_VARS[POST_GROUPS_URL]) : intval($HTTP_GET_VARS[POST_GROUPS_URL]);
0131  }
0132  else
0133  {
0134      $group_id = '';
0135  }
0136   
0137  if ( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
0138  {
0139      $mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
0140      $mode = htmlspecialchars($mode);
0141  }
0142  else
0143  {
0144      $mode = '';
0145  }
0146   
0147  $confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE : 0;
0148  $cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE : 0;
0149  $sid = ( isset($HTTP_POST_VARS['sid']) ) ? $HTTP_POST_VARS['sid'] : '';
0150  $start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
0151  $start = ($start < 0) ? 0 : $start;
0152   
0153  //
0154  // Default var values
0155  //
0156  $is_moderator = FALSE;
0157   
0158  if ( isset($HTTP_POST_VARS['groupstatus']) && $group_id )
0159  {
0160      if ( !$userdata['session_logged_in'] )
0161      {
0162          redirect(append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true));
0163      }
0164   
0165      $sql = "SELECT group_moderator 
0166          FROM " . GROUPS_TABLE . "  
0167          WHERE group_id = $group_id";
0168      if ( !($result = $db->sql_query($sql)) )
0169      {
0170          message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql);
0171      }
0172   
0173      $row = $db->sql_fetchrow($result);
0174   
0175      if ( $row['group_moderator'] != $userdata['user_id'] && $userdata['user_level'] != ADMIN )
0176      {
0177          $template->assign_vars(array(
0178              'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">')
0179          );
0180   
0181          $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>');
0182   
0183          message_die(GENERAL_MESSAGE, $message);
0184      }
0185   
0186      $sql = "UPDATE " . GROUPS_TABLE . 
0187          SET group_type = " . intval($HTTP_POST_VARS['group_type']) . "
0188          WHERE group_id = $group_id";
0189      if ( !($result = $db->sql_query($sql)) )
0190      {
0191          message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql);
0192      }
0193   
0194      $template->assign_vars(array(
0195          'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">')
0196      );
0197   
0198      $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>');
0199   
0200      message_die(GENERAL_MESSAGE, $message);
0201   
0202  }
0203  else if ( isset($HTTP_POST_VARS['joingroup']) && $group_id )
0204  {
0205      //
0206      // First, joining a group
0207      // If the user isn't logged in redirect them to login
0208      //
0209      if ( !$userdata['session_logged_in'] )
0210      {
0211          redirect(append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true));
0212      }
0213      else if ( $sid !== $userdata['session_id'] )
0214      {
0215          message_die(GENERAL_ERROR, $lang['Session_invalid']);
0216      }
0217   
0218      $sql = "SELECT ug.user_id, g.group_type
0219          FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
0220          WHERE g.group_id = $group_id 
0221              AND g.group_type <> " . GROUP_HIDDEN . 
0222              AND ug.group_id = g.group_id";
0223      if ( !($result = $db->sql_query($sql)) )
0224      {
0225          message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql);
0226      }
0227   
0228      if ( $row = $db->sql_fetchrow($result))
0229      {
0230          if ( $row['group_type'] == GROUP_OPEN )
0231          {
0232              do
0233              {
0234                  if ( $userdata['user_id'] == $row['user_id'] )
0235                  {
0236                      $template->assign_vars(array(
0237                          'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">')
0238                      );
0239   
0240                      $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>');
0241   
0242                      message_die(GENERAL_MESSAGE, $message);
0243                  }
0244              } while ( $row = $db->sql_fetchrow($result) );
0245          }
0246          else
0247          {
0248              $template->assign_vars(array(
0249                  'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">')
0250              );
0251   
0252              $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>');
0253   
0254              message_die(GENERAL_MESSAGE, $message);
0255          }
0256      }
0257      else
0258      {
0259          message_die(GENERAL_MESSAGE, $lang['No_groups_exist']); 
0260      }
0261   
0262      $sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending) 
0263          VALUES ($group_id" . $userdata['user_id'] . ", 1)";
0264      if ( !($result = $db->sql_query($sql)) )
0265      {
0266          message_die(GENERAL_ERROR, "Error inserting user group subscription", "", __LINE__, __FILE__, $sql);
0267      }
0268   
0269      $sql = "SELECT u.user_email, u.username, u.user_lang, g.group_name 
0270          FROM ".USERS_TABLE . " u, " . GROUPS_TABLE . " g 
0271          WHERE u.user_id = g.group_moderator 
0272              AND g.group_id = $group_id";
0273      if ( !($result = $db->sql_query($sql)) )
0274      {
0275          message_die(GENERAL_ERROR, "Error getting group moderator data", "", __LINE__, __FILE__, $sql);
0276      }
0277   
0278      $moderator = $db->sql_fetchrow($result);
0279   
0280      include($phpbb_root_path . 'includes/emailer.'.$phpEx);
0281      $emailer = new emailer($board_config['smtp_delivery']);
0282   
0283      $emailer->from($board_config['board_email']);
0284      $emailer->replyto($board_config['board_email']);
0285   
0286      $emailer->use_template('group_request', $moderator['user_lang']);
0287      $emailer->email_address($moderator['user_email']);
0288      $emailer->set_subject($lang['Group_request']);
0289   
0290      $emailer->assign_vars(array(
0291          'SITENAME' => $board_config['sitename'], 
0292          'GROUP_MODERATOR' => $moderator['username'],
0293          'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '', 
0294   
0295          'U_GROUPCP' => $server_url . '?' . POST_GROUPS_URL . "=$group_id&validate=true")
0296      );
0297      $emailer->send();
0298      $emailer->reset();
0299   
0300      $template->assign_vars(array(
0301          'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">')
0302      );
0303   
0304      $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>');
0305   
0306      message_die(GENERAL_MESSAGE, $message);
0307  }
0308  else if ( isset($HTTP_POST_VARS['unsub']) || isset($HTTP_POST_VARS['unsubpending']) && $group_id )
0309  {
0310      //
0311      // Second, unsubscribing from a group
0312      // Check for confirmation of unsub.
0313      //
0314      if ( $cancel )
0315      {
0316          redirect(append_sid("groupcp.$phpEx", true));
0317      }
0318      else if ( !$userdata['session_logged_in'] )
0319      {
0320          redirect(append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true));
0321      }
0322      else if ( $sid !== $userdata['session_id'] )
0323      {
0324          message_die(GENERAL_ERROR, $lang['Session_invalid']);
0325      }
0326   
0327   
0328      if ( $confirm )
0329      {
0330          $sql = "DELETE FROM " . USER_GROUP_TABLE . 
0331              WHERE user_id = " . $userdata['user_id'] . " 
0332                  AND group_id = $group_id";
0333          if ( !($result = $db->sql_query($sql)) )
0334          {
0335              message_die(GENERAL_ERROR, 'Could not delete group memebership data', '', __LINE__, __FILE__, $sql);
0336          }
0337   
0338          if ( $userdata['user_level'] != ADMIN && $userdata['user_level'] == MOD )
0339          {
0340              $sql = "SELECT COUNT(auth_mod) AS is_auth_mod 
0341                  FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug 
0342                  WHERE ug.user_id = " . $userdata['user_id'] . 
0343                      AND aa.group_id = ug.group_id 
0344                      AND aa.auth_mod = 1";
0345              if ( !($result = $db->sql_query($sql)) )
0346              {
0347                  message_die(GENERAL_ERROR, 'Could not obtain moderator status', '', __LINE__, __FILE__, $sql);
0348              }
0349   
0350              if ( !($row = $db->sql_fetchrow($result)) || $row['is_auth_mod'] == 0 )
0351              {
0352                  $sql = "UPDATE " . USERS_TABLE . 
0353                      SET user_level = " . USER . 
0354                      WHERE user_id = " . $userdata['user_id'];
0355                  if ( !($result = $db->sql_query($sql)) )
0356                  {
0357                      message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
0358                  }
0359              }
0360          }
0361   
0362          $template->assign_vars(array(
0363              'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">')
0364          );
0365   
0366          $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>');
0367   
0368          message_die(GENERAL_MESSAGE, $message);
0369      }
0370      else
0371      {
0372          $unsub_msg = ( isset($HTTP_POST_VARS['unsub']) ) ? $lang['Confirm_unsub'] : $lang['Confirm_unsub_pending'];
0373   
0374          $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" /><input type="hidden" name="unsub" value="1" />';
0375          $s_hidden_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
0376   
0377          $page_title = $lang['Group_Control_Panel'];
0378          include($phpbb_root_path . 'includes/page_header.'.$phpEx);
0379   
0380          $template->set_filenames(array(
0381              'confirm' => 'confirm_body.tpl')
0382          );
0383   
0384          $template->assign_vars(array(
0385              'MESSAGE_TITLE' => $lang['Confirm'],
0386              'MESSAGE_TEXT' => $unsub_msg,
0387              'L_YES' => $lang['Yes'],
0388              'L_NO' => $lang['No'],
0389              'S_CONFIRM_ACTION' => append_sid("groupcp.$phpEx"),
0390              'S_HIDDEN_FIELDS' => $s_hidden_fields)
0391          );
0392   
0393          $template->pparse('confirm');
0394   
0395          include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
0396      }
0397   
0398  }
0399  else if ( $group_id )
0400  {
0401      //
0402      // Did the group moderator get here through an email?
0403      // If so, check to see if they are logged in.
0404      //
0405      if ( isset($HTTP_GET_VARS['validate']) )
0406      {
0407          if ( !$userdata['session_logged_in'] )
0408          {
0409              redirect(append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true));
0410          }
0411      }
0412   
0413      //
0414      // For security, get the ID of the group moderator.
0415      //
0416      switch(SQL_LAYER)
0417      {
0418          case 'postgresql':
0419              $sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod 
0420                  FROM " . GROUPS_TABLE . " g, " . AUTH_ACCESS_TABLE . " aa 
0421                  WHERE g.group_id = $group_id
0422                      AND aa.group_id = g.group_id 
0423                      UNION (
0424                          SELECT g.group_moderator, g.group_type, NULL 
0425                          FROM " . GROUPS_TABLE . " g
0426                          WHERE g.group_id = $group_id
0427                              AND NOT EXISTS (
0428                              SELECT aa.group_id 
0429                              FROM " . AUTH_ACCESS_TABLE . " aa 
0430                              WHERE aa.group_id = g.group_id  
0431                          )
0432                      )
0433                  ORDER BY auth_mod DESC";
0434              break;
0435   
0436          case 'oracle':
0437              $sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod 
0438                  FROM " . GROUPS_TABLE . " g, " . AUTH_ACCESS_TABLE . " aa 
0439                  WHERE g.group_id = $group_id
0440                      AND aa.group_id (+) = g.group_id
0441                  ORDER BY aa.auth_mod DESC";
0442              break;
0443   
0444          default:
0445              $sql = "SELECT g.group_moderator, g.group_type, aa.auth_mod 
0446                  FROM ( " . GROUPS_TABLE . " g 
0447                  LEFT JOIN " . AUTH_ACCESS_TABLE . " aa ON aa.group_id = g.group_id )
0448                  WHERE g.group_id = $group_id
0449                  ORDER BY aa.auth_mod DESC";
0450              break;
0451      }
0452      if ( !($result = $db->sql_query($sql)) )
0453      {
0454          message_die(GENERAL_ERROR, 'Could not get moderator information', '', __LINE__, __FILE__, $sql);
0455      }
0456   
0457      if ( $group_info = $db->sql_fetchrow($result) )
0458      {
0459          $group_moderator = $group_info['group_moderator'];
0460      
0461          if ( $group_moderator == $userdata['user_id'] || $userdata['user_level'] == ADMIN )
0462          {
0463              $is_moderator = TRUE;
0464          }
0465              
0466          //
0467          // Handle Additions, removals, approvals and denials
0468          //
0469          if ( !empty($HTTP_POST_VARS['add']) || !empty($HTTP_POST_VARS['remove']) || isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny']) )
0470          {
0471              if ( !$userdata['session_logged_in'] )
0472              {
0473                  redirect(append_sid("login.$phpEx?redirect=groupcp.$phpEx&" . POST_GROUPS_URL . "=$group_id", true));
0474              } 
0475              else if ( $sid !== $userdata['session_id'] )
0476              {
0477                  message_die(GENERAL_ERROR, $lang['Session_invalid']);
0478              }
0479   
0480              if ( !$is_moderator )
0481              {
0482                  $template->assign_vars(array(
0483                      'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("index.$phpEx") . '">')
0484                  );
0485   
0486                  $message = $lang['Not_group_moderator'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
0487   
0488                  message_die(GENERAL_MESSAGE, $message);
0489              }
0490   
0491              if ( isset($HTTP_POST_VARS['add']) )
0492              {
0493                  $username = ( isset($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
0494                  
0495                  $sql = "SELECT user_id, user_email, user_lang, user_level  
0496                      FROM " . USERS_TABLE . 
0497                      WHERE username = '" . str_replace("\'", "''", $username) . "'";
0498                  if ( !($result = $db->sql_query($sql)) )
0499                  {
0500                      message_die(GENERAL_ERROR, "Could not get user information", $lang['Error'], __LINE__, __FILE__, $sql);
0501                  }
0502   
0503                  if ( !($row = $db->sql_fetchrow($result)) )
0504                  {
0505                      $template->assign_vars(array(
0506                          'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">')
0507                      );
0508   
0509                      $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>");
0510   
0511                      message_die(GENERAL_MESSAGE, $message);
0512                  }
0513   
0514                  if ( $row['user_id'] == ANONYMOUS )
0515                  {
0516                      $template->assign_vars(array(
0517                          'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">')
0518                      );
0519   
0520                      $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>');
0521   
0522                      message_die(GENERAL_MESSAGE, $message);
0523                  }
0524                  
0525                  $sql = "SELECT ug.user_id, u.user_level 
0526                      FROM " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u 
0527                      WHERE u.user_id = " . $row['user_id'] . " 
0528                          AND ug.user_id = u.user_id 
0529                          AND ug.group_id = $group_id";
0530                  if ( !($result = $db->sql_query($sql)) )
0531                  {
0532                      message_die(GENERAL_ERROR, 'Could not get user information', '', __LINE__, __FILE__, $sql);
0533                  }
0534   
0535                  if ( !($db->sql_fetchrow($result)) )
0536                  {
0537                      $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending) 
0538                          VALUES (" . $row['user_id'] . "$group_id, 0)";
0539                      if ( !$db->sql_query($sql) )
0540                      {
0541                          message_die(GENERAL_ERROR, 'Could not add user to group', '', __LINE__, __FILE__, $sql);
0542                      }
0543                      
0544                      if ( $row['user_level'] != ADMIN && $row['user_level'] != MOD && $group_info['auth_mod'] )
0545                      {
0546                          $sql = "UPDATE " . USERS_TABLE . 
0547                              SET user_level = " . MOD . 
0548                              WHERE user_id = " . $row['user_id'];
0549                          if ( !$db->sql_query($sql) )
0550                          {
0551                              message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
0552                          }
0553                      }
0554   
0555                      //
0556                      // Get the group name
0557                      // Email the user and tell them they're in the group
0558                      //
0559                      $group_sql = "SELECT group_name 
0560                          FROM " . GROUPS_TABLE . " 
0561                          WHERE group_id = $group_id";
0562                      if ( !($result = $db->sql_query($group_sql)) )
0563                      {
0564                          message_die(GENERAL_ERROR, 'Could not get group information', '', __LINE__, __FILE__, $group_sql);
0565                      }
0566   
0567                      $group_name_row = $db->sql_fetchrow($result);
0568   
0569                      $group_name = $group_name_row['group_name'];
0570   
0571                      include($phpbb_root_path . 'includes/emailer.'.$phpEx);
0572                      $emailer = new emailer($board_config['smtp_delivery']);
0573   
0574                      $emailer->from($board_config['board_email']);
0575                      $emailer->replyto($board_config['board_email']);
0576   
0577                      $emailer->use_template('group_added', $row['user_lang']);
0578                      $emailer->email_address($row['user_email']);
0579                      $emailer->set_subject($lang['Group_added']);
0580   
0581                      $emailer->assign_vars(array(
0582                          'SITENAME' => $board_config['sitename'], 
0583                          'GROUP_NAME' => $group_name,
0584                          'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '', 
0585   
0586                          'U_GROUPCP' => $server_url . '?' . POST_GROUPS_URL . "=$group_id")
0587                      );
0588                      $emailer->send();
0589                      $emailer->reset();
0590                  }
0591                  else
0592                  {
0593                      $template->assign_vars(array(
0594                          'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id") . '">')
0595                      );
0596   
0597                      $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>');
0598   
0599                      message_die(GENERAL_MESSAGE, $message);
0600                  }
0601              }
0602              else 
0603              {
0604                  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']) ) )
0605                  {
0606   
0607                      $members = ( isset($HTTP_POST_VARS['approve']) || isset($HTTP_POST_VARS['deny']) ) ? $HTTP_POST_VARS['pending_members'] : $HTTP_POST_VARS['members'];
0608   
0609                      $sql_in = '';
0610                      for($i = 0; $i < count($members); $i++)
0611                      {
0612                          $sql_in .= ( ( $sql_in != '' ) ? ', ' : '' ) . intval($members[$i]);
0613                      }
0614   
0615                      if ( isset($HTTP_POST_VARS['approve']) )
0616                      {
0617                          if ( $group_info['auth_mod'] )
0618                          {
0619                              $sql = "UPDATE " . USERS_TABLE . 
0620                                  SET user_level = " . MOD . " 
0621                                  WHERE user_id IN ($sql_in
0622                                      AND user_level NOT IN (" . MOD . ", " . ADMIN . ")";
0623                              if ( !$db->sql_query($sql) )
0624                              {
0625                                  message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
0626                              }
0627                          }
0628   
0629                          $sql = "UPDATE " . USER_GROUP_TABLE . " 
0630                              SET user_pending = 0 
0631                              WHERE user_id IN ($sql_in
0632                                  AND group_id = $group_id";
0633                          $sql_select = "SELECT user_email 
0634                              FROM ". USERS_TABLE . " 
0635                              WHERE user_id IN ($sql_in)"; 
0636                      }
0637                      else if ( isset($HTTP_POST_VARS['deny']) || isset($HTTP_POST_VARS['remove']) )
0638                      {
0639                          if ( $group_info['auth_mod'] )
0640                          {
0641                              $sql = "SELECT ug.user_id, ug.group_id 
0642                                  FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug 
0643                                  WHERE ug.user_id IN  ($sql_in
0644                                      AND aa.group_id = ug.group_id 
0645                                      AND aa.auth_mod = 1 
0646                                  GROUP BY ug.user_id, ug.group_id 
0647                                  ORDER BY ug.user_id, ug.group_id";
0648                              if ( !($result = $db->sql_query($sql)) )
0649                              {
0650                                  message_die(GENERAL_ERROR, 'Could not obtain moderator status', '', __LINE__, __FILE__, $sql);
0651                              }
0652   
0653                              if ( $row = $db->sql_fetchrow($result) )
0654                              {
0655                                  $group_check = array();
0656                                  $remove_mod_sql = '';
0657   
0658                                  do
0659                                  {
0660                                      $group_check[$row['user_id']][] = $row['group_id'];
0661                                  }
0662                                  while ( $row = $db->sql_fetchrow($result) );
0663   
0664                                  while( list($user_id, $group_list) = @each($group_check) )
0665                                  {
0666                                      if ( count($group_list) == 1 )
0667                                      {
0668                                          $remove_mod_sql .= ( ( $remove_mod_sql != '' ) ? ', ' : '' ) . $user_id;
0669                                      }
0670                                  }
0671   
0672                                  if ( $remove_mod_sql != '' )
0673                                  {
0674                                      $sql = "UPDATE " . USERS_TABLE . 
0675                                          SET user_level = " . USER . " 
0676                                          WHERE user_id IN ($remove_mod_sql
0677                                              AND user_level NOT IN (" . ADMIN . ")";
0678                                      if ( !$db->sql_query($sql) )
0679                                      {
0680                                          message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
0681                                      }
0682                                  }
0683                              }
0684                          }
0685   
0686                          $sql = "DELETE FROM " . USER_GROUP_TABLE . " 
0687                              WHERE user_id IN ($sql_in
0688                                  AND group_id = $group_id";
0689                      }
0690   
0691                      if ( !$db->sql_query($sql) )
0692                      {
0693                          message_die(GENERAL_ERROR, 'Could not update user group table', '', __LINE__, __FILE__, $sql);
0694                      }
0695   
0696                      //
0697                      // Email users when they are approved
0698                      //
0699                      if ( isset($HTTP_POST_VARS['approve']) )
0700                      {
0701                          if ( !($result = $db->sql_query($sql_select)) )
0702                          {
0703                              message_die(GENERAL_ERROR, 'Could not get user email information', '', __LINE__, __FILE__, $sql);
0704                          }
0705   
0706                          $bcc_list = array();
0707                          while ($row = $db->sql_fetchrow($result))
0708                          {
0709                              $bcc_list[] = $row['user_email'];
0710                          }
0711   
0712                          //
0713                          // Get the group name
0714                          //
0715                          $group_sql = "SELECT group_name 
0716                              FROM " . GROUPS_TABLE . " 
0717                              WHERE group_id = $group_id";
0718                          if ( !($result = $db->sql_query($group_sql)) )
0719                          {
0720                              message_die(GENERAL_ERROR, 'Could not get group information', '', __LINE__, __FILE__, $group_sql);
0721                          }
0722   
0723                          $group_name_row = $db->sql_fetchrow($result);
0724                          $group_name = $group_name_row['group_name'];
0725   
0726                          include($phpbb_root_path . 'includes/emailer.'.$phpEx);
0727                          $emailer = new emailer($board_config['smtp_delivery']);
0728   
0729                          $emailer->from($board_config['board_email']);
0730                          $emailer->replyto($board_config['board_email']);
0731   
0732                          for ($i = 0; $i < count($bcc_list); $i++)
0733                          {
0734                              $emailer->bcc($bcc_list[$i]);
0735                          }
0736   
0737                          $emailer->use_template('group_approved');
0738                          $emailer->set_subject($lang['Group_approved']);
0739   
0740                          $emailer->assign_vars(array(
0741                              'SITENAME' => $board_config['sitename'], 
0742                              'GROUP_NAME' => $group_name,
0743                              'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '', 
0744   
0745                              'U_GROUPCP' => $server_url . '?' . POST_GROUPS_URL . "=$group_id")
0746                          );
0747                          $emailer->send();
0748                          $emailer->reset();
0749                      }
0750                  }
0751              }
0752          }
0753          //
0754          // END approve or deny
0755          //
0756      }
0757      else
0758      {
0759          message_die(GENERAL_MESSAGE, $lang['No_groups_exist']);
0760      }
0761   
0762      //
0763      // Get group details
0764      //
0765      $sql = "SELECT *
0766          FROM " . GROUPS_TABLE . "
0767          WHERE group_id = $group_id
0768              AND group_single_user = 0";
0769      if ( !($result = $db->sql_query($sql)) )
0770      {
0771          message_die(GENERAL_ERROR, 'Error getting group information', '', __LINE__, __FILE__, $sql);
0772      }
0773   
0774      if ( !($group_info = $db->sql_fetchrow($result)) )
0775      {
0776          message_die(GENERAL_MESSAGE, $lang['Group_not_exist']); 
0777      }
0778   
0779      //
0780      // Get moderator details for this group
0781      //
0782      $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  
0783          FROM " . USERS_TABLE . 
0784          WHERE user_id = " . $group_info['group_moderator'];
0785      if ( !($result = $db->sql_query($sql)) )
0786      {
0787          message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql);
0788      }
0789   
0790      $group_moderator = $db->sql_fetchrow($result); 
0791   
0792      //
0793      // Get user information for this group
0794      //
0795      $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 
0796          FROM " . USERS_TABLE . " u, " . USER_GROUP_TABLE . " ug
0797          WHERE ug.group_id = $group_id
0798              AND u.user_id = ug.user_id
0799              AND ug.user_pending = 0 
0800              AND ug.user_id <> " . $group_moderator['user_id'] . 
0801          ORDER BY u.username"; 
0802      if ( !($result = $db->sql_query($sql)) )
0803      {
0804          message_die(GENERAL_ERROR, 'Error getting user list for group', '', __LINE__, __FILE__, $sql);
0805      }
0806   
0807      $group_members = $db->sql_fetchrowset($result); 
0808      $members_count = count($group_members);
0809      $db->sql_freeresult($result);
0810   
0811      $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
0812          FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u
0813          WHERE ug.group_id = $group_id
0814              AND g.group_id = ug.group_id
0815              AND ug.user_pending = 1
0816              AND u.user_id = ug.user_id
0817          ORDER BY u.username"; 
0818      if ( !($result = $db->sql_query($sql)) )
0819      {
0820          message_die(GENERAL_ERROR, 'Error getting user pending information', '', __LINE__, __FILE__, $sql);
0821      }
0822   
0823      $modgroup_pending_list = $db->sql_fetchrowset($result);
0824      $modgroup_pending_count = count($modgroup_pending_list);
0825      $db->sql_freeresult($result);
0826   
0827      $is_group_member = 0;
0828      if ( $members_count )
0829      {
0830          for($i = 0; $i < $members_count; $i++)
0831          {
0832              if ( $group_members[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in'] )
0833              {
0834                  $is_group_member = TRUE; 
0835              }
0836          }
0837      }
0838   
0839      $is_group_pending_member = 0;
0840      if ( $modgroup_pending_count )
0841      {
0842          for($i = 0; $i < $modgroup_pending_count; $i++)
0843          {
0844              if ( $modgroup_pending_list[$i]['user_id'] == $userdata['user_id'] && $userdata['session_logged_in'] )
0845              {
0846                  $is_group_pending_member = TRUE;
0847              }
0848          }
0849      }
0850   
0851      if ( $userdata['user_level'] == ADMIN )
0852      {
0853          $is_moderator = TRUE;
0854      }
0855   
0856      if ( $userdata['user_id'] == $group_info['group_moderator'] )
0857      {
0858          $is_moderator = TRUE;
0859   
0860          $group_details =  $lang['Are_group_moderator'];
0861   
0862          $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />';
0863      }
0864      else if ( $is_group_member || $is_group_pending_member )
0865      {
0866          $template->assign_block_vars('switch_unsubscribe_group_input', array());
0867   
0868          $group_details =  ( $is_group_pending_member ) ? $lang['Pending_this_group'] : $lang['Member_this_group'];
0869   
0870          $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />';
0871      }
0872      else if ( $userdata['user_id'] == ANONYMOUS )
0873      {
0874          $group_details =  $lang['Login_to_join'];
0875          $s_hidden_fields = '';
0876      }
0877      else
0878      {
0879          if ( $group_info['group_type'] == GROUP_OPEN )
0880          {
0881              $template->assign_block_vars('switch_subscribe_group_input', array());
0882   
0883              $group_details =  $lang['This_open_group'];
0884              $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />';
0885          }
0886          else if ( $group_info['group_type'] == GROUP_CLOSED )
0887          {
0888              $group_details =  $lang['This_closed_group'];
0889              $s_hidden_fields = '';
0890          }
0891          else if ( $group_info['group_type'] == GROUP_HIDDEN )
0892          {
0893              $group_details =  $lang['This_hidden_group'];
0894              $s_hidden_fields = '';
0895          }
0896      }
0897   
0898      $page_title = $lang['Group_Control_Panel'];
0899      include($phpbb_root_path . 'includes/page_header.'.$phpEx);
0900   
0901      //
0902      // Load templates
0903      //
0904      $template->set_filenames(array(
0905          'info' => 'groupcp_info_body.tpl', 
0906          'pendinginfo' => 'groupcp_pending_info.tpl')
0907      );
0908      make_jumpbox('viewforum.'.$phpEx);
0909   
0910      //
0911      // Add the moderator
0912      //
0913      $username = $group_moderator['username'];
0914      $user_id = $group_moderator['user_id'];
0915   
0916      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);
0917   
0918      $s_hidden_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
0919   
0920      $template->assign_vars(array(
0921          'L_GROUP_INFORMATION' => $lang['Group_Information'],
0922          'L_GROUP_NAME' => $lang['Group_name'],
0923          'L_GROUP_DESC' => $lang['Group_description'],
0924          'L_GROUP_TYPE' => $lang['Group_type'],
0925          'L_GROUP_MEMBERSHIP' => $lang['Group_membership'],
0926          'L_SUBSCRIBE' => $lang['Subscribe'],
0927          'L_UNSUBSCRIBE' => $lang['Unsubscribe'],
0928          'L_JOIN_GROUP' => $lang['Join_group'], 
0929          'L_UNSUBSCRIBE_GROUP' => $lang['Unsubscribe'], 
0930          'L_GROUP_OPEN' => $lang['Group_open'],
0931          'L_GROUP_CLOSED' => $lang['Group_closed'],
0932          'L_GROUP_HIDDEN' => $lang['Group_hidden'], 
0933          'L_UPDATE' => $lang['Update'], 
0934          'L_GROUP_MODERATOR' => $lang['Group_Moderator'], 
0935          'L_GROUP_MEMBERS' => $lang['Group_Members'], 
0936          'L_PENDING_MEMBERS' => $lang['Pending_members'], 
0937          'L_SELECT_SORT_METHOD' => $lang['Select_sort_method'], 
0938          'L_PM' => $lang['Private_Message'], 
0939          'L_EMAIL' => $lang['Email'], 
0940          'L_POSTS' => $lang['Posts'], 
0941          'L_WEBSITE' => $lang['Website'],
0942          'L_FROM' => $lang['Location'],
0943          'L_ORDER' => $lang['Order'],
0944          'L_SORT' => $lang['Sort'],
0945          'L_SUBMIT' => $lang['Sort'],
0946          'L_AIM' => $lang['AIM'],
0947          'L_YIM' => $lang['YIM'],
0948          'L_MSNM' => $lang['MSNM'],
0949          'L_ICQ' => $lang['ICQ'],
0950          'L_SELECT' => $lang['Select'],
0951          'L_REMOVE_SELECTED' => $lang['Remove_selected'],
0952          'L_ADD_MEMBER' => $lang['Add_member'],
0953          'L_FIND_USERNAME' => $lang['Find_username'],
0954   
0955          'GROUP_NAME' => $group_info['group_name'],
0956          'GROUP_DESC' => $group_info['group_description'],
0957          'GROUP_DETAILS' => $group_details,
0958          'MOD_ROW_COLOR' => '#' . $theme['td_color1'],
0959          'MOD_ROW_CLASS' => $theme['td_class1'],
0960          'MOD_USERNAME' => $username,
0961          'MOD_FROM' => $from,
0962          'MOD_JOINED' => $joined,
0963          'MOD_POSTS' => $posts,
0964          'MOD_AVATAR_IMG' => $poster_avatar,
0965          'MOD_PROFILE_IMG' => $profile_img, 
0966          'MOD_PROFILE' => $profile, 
0967          'MOD_SEARCH_IMG' => $search_img,
0968          'MOD_SEARCH' => $search,
0969          'MOD_PM_IMG' => $pm_img,
0970          'MOD_PM' => $pm,
0971          'MOD_EMAIL_IMG' => $email_img,
0972          'MOD_EMAIL' => $email,
0973          'MOD_WWW_IMG' => $www_img,
0974          'MOD_WWW' => $www,
0975          'MOD_ICQ_STATUS_IMG' => $icq_status_img,
0976          'MOD_ICQ_IMG' => $icq_img, 
0977          'MOD_ICQ' => $icq, 
0978          'MOD_AIM_IMG' => $aim_img,
0979          'MOD_AIM' => $aim,
0980          'MOD_MSN_IMG' => $msn_img,
0981          'MOD_MSN' => $msn,
0982          'MOD_YIM_IMG' => $yim_img,
0983          'MOD_YIM' => $yim,
0984   
0985          'U_MOD_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=$user_id"), 
0986          'U_SEARCH_USER' => append_sid("search.$phpEx?mode=searchuser"), 
0987   
0988          'S_GROUP_OPEN_TYPE' => GROUP_OPEN,
0989          'S_GROUP_CLOSED_TYPE' => GROUP_CLOSED,
0990          'S_GROUP_HIDDEN_TYPE' => GROUP_HIDDEN,
0991          'S_GROUP_OPEN_CHECKED' => ( $group_info['group_type'] == GROUP_OPEN ) ? ' checked="checked"' : '',
0992          'S_GROUP_CLOSED_CHECKED' => ( $group_info['group_type'] == GROUP_CLOSED ) ? ' checked="checked"' : '',
0993          'S_GROUP_HIDDEN_CHECKED' => ( $group_info['group_type'] == GROUP_HIDDEN ) ? ' checked="checked"' : '',
0994          'S_HIDDEN_FIELDS' => $s_hidden_fields, 
0995          'S_MODE_SELECT' => $select_sort_mode,
0996          'S_ORDER_SELECT' => $select_sort_order,
0997          'S_GROUPCP_ACTION' => append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=$group_id"))
0998      );
0999   
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  ?>