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  ?>