Verzeichnisstruktur phpBB-3.0.0


Veröffentlicht
12.12.2007

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

ucp_groups.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 36.77 KiB


 0001  <?php
 0002  /**
 0003  *
 0004  * @package ucp
 0005  * @version $Id$
 0006  * @copyright (c) 2005 phpBB Group
 0007  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 0008  *
 0009  */
 0010   
 0011  /**
 0012  * @ignore
 0013  */
 0014  if (!defined('IN_PHPBB'))
 0015  {
 0016      exit;
 0017  }
 0018   
 0019  /**
 0020  * ucp_groups
 0021  * @package ucp
 0022  */
 0023  class ucp_groups
 0024  {
 0025      var $u_action;
 0026   
 0027      function main($id, $mode)
 0028      {
 0029          global $config, $phpbb_root_path, $phpEx;
 0030          global $db, $user, $auth, $cache, $template;
 0031   
 0032          $user->add_lang('groups');
 0033   
 0034          $return_page = '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '">', '</a>');
 0035   
 0036          $mark_ary    = request_var('mark', array(0));
 0037          $submit        = (!empty($_POST['submit'])) ? true : false;
 0038          $delete        = (!empty($_POST['delete'])) ? true : false;
 0039          $error = $data = array();
 0040   
 0041          switch ($mode)
 0042          {
 0043              case 'membership':
 0044          
 0045                  $this->page_title = 'UCP_USERGROUPS_MEMBER';
 0046   
 0047                  if ($submit || isset($_POST['change_default']))
 0048                  {
 0049                      $action = (isset($_POST['change_default'])) ? 'change_default' : request_var('action', '');
 0050                      $group_id = ($action == 'change_default') ? request_var('default', 0) : request_var('selected', 0);
 0051   
 0052                      if (!$group_id)
 0053                      {
 0054                          trigger_error('NO_GROUP_SELECTED');
 0055                      }
 0056   
 0057                      $sql = 'SELECT group_id, group_name, group_type
 0058                          FROM ' . GROUPS_TABLE . "
 0059                          WHERE group_id IN ($group_id, {$user->data['group_id']})";
 0060                      $result = $db->sql_query($sql);
 0061   
 0062                      $group_row = array();
 0063                      while ($row = $db->sql_fetchrow($result))
 0064                      {
 0065                          $row['group_name'] = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];
 0066                          $group_row[$row['group_id']] = $row;
 0067                      }
 0068                      $db->sql_freeresult($result);
 0069   
 0070                      if (!sizeof($group_row))
 0071                      {
 0072                          trigger_error('GROUP_NOT_EXIST');
 0073                      }
 0074   
 0075                      switch ($action)
 0076                      {
 0077                          case 'change_default':
 0078                              // User already having this group set as default?
 0079                              if ($group_id == $user->data['group_id'])
 0080                              {
 0081                                  trigger_error($user->lang['ALREADY_DEFAULT_GROUP'] . $return_page);
 0082                              }
 0083   
 0084                              if (!$auth->acl_get('u_chggrp'))
 0085                              {
 0086                                  trigger_error($user->lang['NOT_AUTHORISED'] . $return_page);
 0087                              }
 0088   
 0089                              // User needs to be member of the group in order to make it default
 0090                              if (!group_memberships($group_id, $user->data['user_id'], true))
 0091                              {
 0092                                  trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page);
 0093                              }
 0094   
 0095                              if (confirm_box(true))
 0096                              {
 0097                                  group_user_attributes('default', $group_id, $user->data['user_id']);
 0098   
 0099                                  add_log('user', $user->data['user_id'], 'LOG_USER_GROUP_CHANGE', sprintf($user->lang['USER_GROUP_CHANGE'], $group_row[$user->data['group_id']]['group_name'], $group_row[$group_id]['group_name']));
 0100   
 0101                                  meta_refresh(3, $this->u_action);
 0102                                  trigger_error($user->lang['CHANGED_DEFAULT_GROUP'] . $return_page);
 0103                              }
 0104                              else
 0105                              {
 0106                                  $s_hidden_fields = array(
 0107                                      'default'        => $group_id,
 0108                                      'change_default'=> true
 0109                                  );
 0110   
 0111                                  confirm_box(false, sprintf($user->lang['GROUP_CHANGE_DEFAULT'], $group_row[$group_id]['group_name']), build_hidden_fields($s_hidden_fields));
 0112                              }
 0113   
 0114                          break;
 0115   
 0116                          case 'resign':
 0117   
 0118                              // User tries to resign from default group but is not allowed to change it?
 0119                              if ($group_id == $user->data['group_id'] && !$auth->acl_get('u_chggrp'))
 0120                              {
 0121                                  trigger_error($user->lang['NOT_RESIGN_FROM_DEFAULT_GROUP'] . $return_page);
 0122                              }
 0123   
 0124                              if (!($row = group_memberships($group_id, $user->data['user_id'])))
 0125                              {
 0126                                  trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page);
 0127                              }
 0128                              list(, $row) = each($row);
 0129   
 0130                              if (confirm_box(true))
 0131                              {
 0132                                  group_user_del($group_id, $user->data['user_id']);
 0133   
 0134                                  add_log('user', $user->data['user_id'], 'LOG_USER_GROUP_RESIGN', $group_row[$group_id]['group_name']);
 0135   
 0136                                  meta_refresh(3, $this->u_action);
 0137                                  trigger_error($user->lang[($row['user_pending']) ? 'GROUP_RESIGNED_PENDING' : 'GROUP_RESIGNED_MEMBERSHIP'] . $return_page);
 0138                              }
 0139                              else
 0140                              {
 0141                                  $s_hidden_fields = array(
 0142                                      'selected'        => $group_id,
 0143                                      'action'        => 'resign',
 0144                                      'submit'        => true
 0145                                  );
 0146   
 0147                                  confirm_box(false, ($row['user_pending']) ? 'GROUP_RESIGN_PENDING' : 'GROUP_RESIGN_MEMBERSHIP', build_hidden_fields($s_hidden_fields));
 0148                              }
 0149   
 0150                          break;
 0151   
 0152                          case 'join':
 0153   
 0154                              $sql = 'SELECT ug.*, u.username, u.username_clean, u.user_email
 0155                                  FROM ' . USER_GROUP_TABLE . ' ug, ' . USERS_TABLE . ' u
 0156                                  WHERE ug.user_id = u.user_id
 0157                                      AND ug.group_id = ' . $group_id . '
 0158                                      AND ug.user_id = ' . $user->data['user_id'];
 0159                              $result = $db->sql_query($sql);
 0160                              $row = $db->sql_fetchrow($result);
 0161                              $db->sql_freeresult($result);
 0162   
 0163                              if ($row)
 0164                              {
 0165                                  if ($row['user_pending'])
 0166                                  {
 0167                                      trigger_error($user->lang['ALREADY_IN_GROUP_PENDING'] . $return_page);
 0168                                  }
 0169   
 0170                                  trigger_error($user->lang['ALREADY_IN_GROUP'] . $return_page);
 0171                              }
 0172   
 0173                              // Check permission to join (open group or request)
 0174                              if ($group_row[$group_id]['group_type'] != GROUP_OPEN && $group_row[$group_id]['group_type'] != GROUP_FREE)
 0175                              {
 0176                                  trigger_error($user->lang['CANNOT_JOIN_GROUP'] . $return_page);
 0177                              }
 0178   
 0179                              if (confirm_box(true))
 0180                              {
 0181                                  if ($group_row[$group_id]['group_type'] == GROUP_FREE)
 0182                                  {
 0183                                      group_user_add($group_id, $user->data['user_id']);
 0184   
 0185                                      $email_template = 'group_added';
 0186                                  }
 0187                                  else
 0188                                  {
 0189                                      group_user_add($group_id, $user->data['user_id'], false, false, false, 0, 1);
 0190   
 0191                                      $email_template = 'group_request';
 0192                                  }
 0193   
 0194                                  include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
 0195                                  $messenger = new messenger();
 0196   
 0197                                  $sql = 'SELECT u.username, u.username_clean, u.user_email, u.user_notify_type, u.user_jabber, u.user_lang
 0198                                      FROM ' . USER_GROUP_TABLE . ' ug, ' . USERS_TABLE . ' u
 0199                                      WHERE ug.user_id = u.user_id
 0200                                          AND ' . (($group_row[$group_id]['group_type'] == GROUP_FREE) ? "ug.user_id = {$user->data['user_id']}" : 'ug.group_leader = 1') . "
 0201                                          AND ug.group_id = $group_id";
 0202                                  $result = $db->sql_query($sql);
 0203   
 0204                                  while ($row = $db->sql_fetchrow($result))
 0205                                  {
 0206                                      $messenger->template($email_template, $row['user_lang']);
 0207   
 0208                                      $messenger->to($row['user_email'], $row['username']);
 0209                                      $messenger->im($row['user_jabber'], $row['username']);
 0210   
 0211                                      $messenger->assign_vars(array(
 0212                                          'USERNAME'        => htmlspecialchars_decode($row['username']),
 0213                                          'GROUP_NAME'    => htmlspecialchars_decode($group_row[$group_id]['group_name']),
 0214   
 0215                                          'U_PENDING'        => generate_board_url() . "/ucp.$phpEx?i=groups&mode=manage&action=list&g=$group_id",
 0216                                          'U_GROUP'        => generate_board_url() . "/memberlist.$phpEx?mode=group&g=$group_id")
 0217                                      );
 0218   
 0219                                      $messenger->send($row['user_notify_type']);
 0220                                  }
 0221                                  $db->sql_freeresult($result);
 0222   
 0223                                  $messenger->save_queue();
 0224   
 0225                                  add_log('user', $user->data['user_id'], 'LOG_USER_GROUP_JOIN' . (($group_row[$group_id]['group_type'] == GROUP_FREE) ? '' : '_PENDING'), $group_row[$group_id]['group_name']);
 0226   
 0227                                  meta_refresh(3, $this->u_action);
 0228                                  trigger_error($user->lang[($group_row[$group_id]['group_type'] == GROUP_FREE) ? 'GROUP_JOINED' : 'GROUP_JOINED_PENDING'] . $return_page);
 0229                              }
 0230                              else
 0231                              {
 0232                                  $s_hidden_fields = array(
 0233                                      'selected'        => $group_id,
 0234                                      'action'        => 'join',
 0235                                      'submit'        => true
 0236                                  );
 0237   
 0238                                  confirm_box(false, ($group_row[$group_id]['group_type'] == GROUP_FREE) ? 'GROUP_JOIN' : 'GROUP_JOIN_PENDING', build_hidden_fields($s_hidden_fields));
 0239                              }
 0240   
 0241                          break;
 0242   
 0243                          case 'demote':
 0244   
 0245                              if (!($row = group_memberships($group_id, $user->data['user_id'])))
 0246                              {
 0247                                  trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page);
 0248                              }
 0249                              list(, $row) = each($row);
 0250   
 0251                              if (!$row['group_leader'])
 0252                              {
 0253                                  trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page);
 0254                              }
 0255   
 0256                              if (confirm_box(true))
 0257                              {
 0258                                  group_user_attributes('demote', $group_id, $user->data['user_id']);
 0259   
 0260                                  add_log('user', $user->data['user_id'], 'LOG_USER_GROUP_DEMOTE', $group_row[$group_id]['group_name']);
 0261   
 0262                                  meta_refresh(3, $this->u_action);
 0263                                  trigger_error($user->lang['USER_GROUP_DEMOTED'] . $return_page);
 0264                              }
 0265                              else
 0266                              {
 0267                                  $s_hidden_fields = array(
 0268                                      'selected'        => $group_id,
 0269                                      'action'        => 'demote',
 0270                                      'submit'        => true
 0271                                  );
 0272   
 0273                                  confirm_box(false, 'USER_GROUP_DEMOTE', build_hidden_fields($s_hidden_fields));
 0274                              }
 0275   
 0276                          break;
 0277                      }
 0278                  }
 0279   
 0280                  $sql = 'SELECT g.*, ug.group_leader, ug.user_pending
 0281                      FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug
 0282                      WHERE ug.user_id = ' . $user->data['user_id'] . '
 0283                          AND g.group_id = ug.group_id
 0284                      ORDER BY g.group_type DESC, g.group_name';
 0285                  $result = $db->sql_query($sql);
 0286   
 0287                  $group_id_ary = array();
 0288                  $leader_count = $member_count = $pending_count = 0;
 0289                  while ($row = $db->sql_fetchrow($result))
 0290                  {
 0291                      $block = ($row['group_leader']) ? 'leader' : (($row['user_pending']) ? 'pending' : 'member');
 0292   
 0293                      switch ($row['group_type'])
 0294                      {
 0295                          case GROUP_OPEN:
 0296                              $group_status = 'OPEN';
 0297                          break;
 0298   
 0299                          case GROUP_CLOSED:
 0300                              $group_status = 'CLOSED';
 0301                          break;
 0302   
 0303                          case GROUP_HIDDEN:
 0304                              $group_status = 'HIDDEN';
 0305                          break;
 0306   
 0307                          case GROUP_SPECIAL:
 0308                              $group_status = 'SPECIAL';
 0309                          break;
 0310   
 0311                          case GROUP_FREE:
 0312                              $group_status = 'FREE';
 0313                          break;
 0314                      }
 0315   
 0316                      $template->assign_block_vars($block, array(
 0317                          'GROUP_ID'        => $row['group_id'],
 0318                          'GROUP_NAME'    => ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'],
 0319                          'GROUP_DESC'    => ($row['group_type'] <> GROUP_SPECIAL) ? generate_text_for_display($row['group_desc'], $row['group_desc_uid'], $row['group_desc_bitfield'], $row['group_desc_options']) : $user->lang['GROUP_IS_SPECIAL'],
 0320                          'GROUP_SPECIAL'    => ($row['group_type'] <> GROUP_SPECIAL) ? false : true,
 0321                          'GROUP_STATUS'    => $user->lang['GROUP_IS_' . $group_status],
 0322                          'GROUP_COLOUR'    => $row['group_colour'],
 0323   
 0324                          'U_VIEW_GROUP'    => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g=' . $row['group_id']),
 0325   
 0326                          'S_GROUP_DEFAULT'    => ($row['group_id'] == $user->data['group_id']) ? true : false,
 0327                          'S_ROW_COUNT'        => ${$block . '_count'}++)
 0328                      );
 0329   
 0330                      $group_id_ary[] = $row['group_id'];
 0331                  }
 0332                  $db->sql_freeresult($result);
 0333   
 0334                  // Hide hidden groups unless user is an admin with group privileges
 0335                  $sql_and = ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel')) ? '<> ' . GROUP_SPECIAL : 'NOT IN (' . GROUP_SPECIAL . ', ' . GROUP_HIDDEN . ')';
 0336   
 0337                  $sql = 'SELECT group_id, group_name, group_colour, group_desc, group_desc_uid, group_desc_bitfield, group_desc_options, group_type, group_founder_manage
 0338                      FROM ' . GROUPS_TABLE . '
 0339                      WHERE ' . ((sizeof($group_id_ary)) ? $db->sql_in_set('group_id', $group_id_ary, true) . ' AND ' : '') . "
 0340                          group_type $sql_and
 0341                      ORDER BY group_type DESC, group_name";
 0342                  $result = $db->sql_query($sql);
 0343   
 0344                  $nonmember_count = 0;
 0345                  while ($row = $db->sql_fetchrow($result))
 0346                  {
 0347                      switch ($row['group_type'])
 0348                      {
 0349                          case GROUP_OPEN:
 0350                              $group_status = 'OPEN';
 0351                          break;
 0352   
 0353                          case GROUP_CLOSED:
 0354                              $group_status = 'CLOSED';
 0355                          break;
 0356   
 0357                          case GROUP_HIDDEN:
 0358                              $group_status = 'HIDDEN';
 0359                          break;
 0360   
 0361                          case GROUP_SPECIAL:
 0362                              $group_status = 'SPECIAL';
 0363                          break;
 0364   
 0365                          case GROUP_FREE:
 0366                              $group_status = 'FREE';
 0367                          break;
 0368                      }
 0369   
 0370                      $template->assign_block_vars('nonmember', array(
 0371                          'GROUP_ID'        => $row['group_id'],
 0372                          'GROUP_NAME'    => ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'],
 0373                          'GROUP_DESC'    => ($row['group_type'] <> GROUP_SPECIAL) ? generate_text_for_display($row['group_desc'], $row['group_desc_uid'], $row['group_desc_bitfield'], $row['group_desc_options']) : $user->lang['GROUP_IS_SPECIAL'],
 0374                          'GROUP_SPECIAL'    => ($row['group_type'] <> GROUP_SPECIAL) ? false : true,
 0375                          'GROUP_CLOSED'    => ($row['group_type'] <> GROUP_CLOSED || $auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel')) ? false : true,
 0376                          'GROUP_STATUS'    => $user->lang['GROUP_IS_' . $group_status],
 0377                          'S_CAN_JOIN'    => ($row['group_type'] == GROUP_OPEN || $row['group_type'] == GROUP_FREE) ? true : false,
 0378                          'GROUP_COLOUR'    => $row['group_colour'],
 0379   
 0380                          'U_VIEW_GROUP'    => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g=' . $row['group_id']),
 0381   
 0382                          'S_ROW_COUNT'    => $nonmember_count++)
 0383                      );
 0384                  }
 0385                  $db->sql_freeresult($result);
 0386   
 0387                  $template->assign_vars(array(
 0388                      'S_CHANGE_DEFAULT'    => ($auth->acl_get('u_chggrp')) ? true : false,
 0389                      'S_LEADER_COUNT'    => $leader_count,
 0390                      'S_MEMBER_COUNT'    => $member_count,
 0391                      'S_PENDING_COUNT'    => $pending_count,
 0392                      'S_NONMEMBER_COUNT'    => $nonmember_count,
 0393   
 0394                      'S_UCP_ACTION'            => $this->u_action)
 0395                  );
 0396   
 0397              break;
 0398   
 0399              case 'manage':
 0400   
 0401                  $this->page_title = 'UCP_USERGROUPS_MANAGE';
 0402                  $action        = (isset($_POST['addusers'])) ? 'addusers' : request_var('action', '');
 0403                  $group_id    = request_var('g', 0);
 0404                  add_form_key('ucp_groups');
 0405   
 0406                  if ($group_id)
 0407                  {
 0408                      $sql = 'SELECT *
 0409                          FROM ' . GROUPS_TABLE . "
 0410                          WHERE group_id = $group_id";
 0411                      $result = $db->sql_query($sql);
 0412                      $group_row = $db->sql_fetchrow($result);
 0413                      $db->sql_freeresult($result);
 0414   
 0415                      if (!$group_row)
 0416                      {
 0417                          trigger_error($user->lang['NO_GROUP'] . $return_page);
 0418                      }
 0419   
 0420                      // Check if the user is allowed to manage this group if set to founder only.
 0421                      if ($user->data['user_type'] != USER_FOUNDER && $group_row['group_founder_manage'])
 0422                      {
 0423                          trigger_error($user->lang['NOT_ALLOWED_MANAGE_GROUP'] . $return_page, E_USER_WARNING);
 0424                      }
 0425                  }
 0426   
 0427                  switch ($action)
 0428                  {
 0429                      case 'edit':
 0430   
 0431                          include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
 0432   
 0433                          if (!$group_id)
 0434                          {
 0435                              trigger_error($user->lang['NO_GROUP'] . $return_page);
 0436                          }
 0437   
 0438                          if (!($row = group_memberships($group_id, $user->data['user_id'])))
 0439                          {
 0440                              trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page);
 0441                          }
 0442                          list(, $row) = each($row);
 0443   
 0444                          if (!$row['group_leader'])
 0445                          {
 0446                              trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page);
 0447                          }
 0448   
 0449                          $file_uploads = (@ini_get('file_uploads') || strtolower(@ini_get('file_uploads')) == 'on') ? true : false;
 0450                          $user->add_lang(array('acp/groups', 'acp/common'));
 0451   
 0452                          $data = $submit_ary = array();
 0453   
 0454                          $update    = (isset($_POST['update'])) ? true : false;
 0455   
 0456                          $error = array();
 0457   
 0458                          $avatar_select = basename(request_var('avatar_select', ''));
 0459                          $category = basename(request_var('category', ''));
 0460   
 0461                          $can_upload = (file_exists($phpbb_root_path . $config['avatar_path']) && @is_writable($phpbb_root_path . $config['avatar_path']) && $file_uploads) ? true : false;
 0462   
 0463                          // Did we submit?
 0464                          if ($update)
 0465                          {
 0466                              $group_name    = utf8_normalize_nfc(request_var('group_name', '', true));
 0467                              $group_desc = utf8_normalize_nfc(request_var('group_desc', '', true));
 0468                              $group_type    = request_var('group_type', GROUP_FREE);
 0469   
 0470                              $allow_desc_bbcode    = request_var('desc_parse_bbcode', false);
 0471                              $allow_desc_urls    = request_var('desc_parse_urls', false);
 0472                              $allow_desc_smilies    = request_var('desc_parse_smilies', false);
 0473   
 0474                              $submit_ary = array(
 0475                                  'colour'        => request_var('group_colour', ''),
 0476                                  'rank'            => request_var('group_rank', 0),
 0477                                  'receive_pm'    => isset($_REQUEST['group_receive_pm']) ? 1 : 0,
 0478                                  'message_limit'    => request_var('group_message_limit', 0)
 0479                              );
 0480   
 0481                              $data['uploadurl']    = request_var('uploadurl', '');
 0482                              $data['remotelink'] = request_var('remotelink', '');
 0483                              $data['width']        = request_var('width', '');
 0484                              $data['height']        = request_var('height', '');
 0485                              $delete                = request_var('delete', '');
 0486   
 0487                              if (!empty($_FILES['uploadfile']['tmp_name']) || $data['uploadurl'] || $data['remotelink'])
 0488                              {
 0489                                  // Avatar stuff
 0490                                  $var_ary = array(
 0491                                      'uploadurl'        => array('string', true, 5, 255),
 0492                                      'remotelink'    => array('string', true, 5, 255),
 0493                                      'width'            => array('string', true, 1, 3),
 0494                                      'height'        => array('string', true, 1, 3),
 0495                                  );
 0496   
 0497                                  if (!($error = validate_data($data, $var_ary)))
 0498                                  {
 0499                                      $data['user_id'] = "g$group_id";
 0500   
 0501                                      if ((!empty($_FILES['uploadfile']['tmp_name']) || $data['uploadurl']) && $can_upload)
 0502                                      {
 0503                                          list($submit_ary['avatar_type'], $submit_ary['avatar'], $submit_ary['avatar_width'], $submit_ary['avatar_height']) = avatar_upload($data, $error);
 0504                                      }
 0505                                      else if ($data['remotelink'])
 0506                                      {
 0507                                          list($submit_ary['avatar_type'], $submit_ary['avatar'], $submit_ary['avatar_width'], $submit_ary['avatar_height']) = avatar_remote($data, $error);
 0508                                      }
 0509                                  }
 0510                              }
 0511                              else if ($avatar_select && $config['allow_avatar_local'])
 0512                              {
 0513                                  // check avatar gallery
 0514                                  if (is_dir($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category))
 0515                                  {
 0516                                      $submit_ary['avatar_type'] = AVATAR_GALLERY;
 0517   
 0518                                      list($submit_ary['avatar_width'], $submit_ary['avatar_height']) = getimagesize($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category . '/' . $avatar_select);
 0519                                      $submit_ary['avatar'] = $category . '/' . $avatar_select;
 0520                                  }
 0521                              }
 0522                              else if ($delete)
 0523                              {
 0524                                  $submit_ary['avatar'] = '';
 0525                                  $submit_ary['avatar_type'] = $submit_ary['avatar_width'] = $submit_ary['avatar_height'] = 0;
 0526                              }
 0527                              else if ($data['width'] && $data['height'])
 0528                              {
 0529                                  // Only update the dimensions?
 0530                                  if ($config['avatar_max_width'] || $config['avatar_max_height'])
 0531                                  {
 0532                                      if ($data['width'] > $config['avatar_max_width'] || $data['height'] > $config['avatar_max_height'])
 0533                                      {
 0534                                          $error[] = sprintf($user->lang['AVATAR_WRONG_SIZE'], $config['avatar_min_width'], $config['avatar_min_height'], $config['avatar_max_width'], $config['avatar_max_height'], $data['width'], $data['height']);
 0535                                      }
 0536                                  }
 0537   
 0538                                  if (!sizeof($error))
 0539                                  {
 0540                                      if ($config['avatar_min_width'] || $config['avatar_min_height'])
 0541                                      {
 0542                                          if ($data['width'] < $config['avatar_min_width'] || $data['height'] < $config['avatar_min_height'])
 0543                                          {
 0544                                              $error[] = sprintf($user->lang['AVATAR_WRONG_SIZE'], $config['avatar_min_width'], $config['avatar_min_height'], $config['avatar_max_width'], $config['avatar_max_height'], $data['width'], $data['height']);
 0545                                          }
 0546                                      }
 0547                                  }
 0548   
 0549                                  if (!sizeof($error))
 0550                                  {
 0551                                      $submit_ary['avatar_width'] = $data['width'];
 0552                                      $submit_ary['avatar_height'] = $data['height'];
 0553                                  }
 0554                              }
 0555   
 0556                              if ((isset($submit_ary['avatar']) && $submit_ary['avatar'] && (!isset($group_row['group_avatar']))) || $delete)
 0557                              {
 0558                                  if (isset($group_row['group_avatar']) && $group_row['group_avatar'])
 0559                                  {
 0560                                      avatar_delete('group', $group_row, true);
 0561                                  }
 0562                              }
 0563   
 0564                              if (!check_form_key('ucp_groups'))
 0565                              {
 0566                                  $error[] = $user->lang['FORM_INVALID'];
 0567                              }
 0568   
 0569                              if (!sizeof($error))
 0570                              {
 0571                                  // Only set the rank, colour, etc. if it's changed or if we're adding a new
 0572                                  // group. This prevents existing group members being updated if no changes
 0573                                  // were made.
 0574                          
 0575                                  $group_attributes = array();
 0576                                  $test_variables = array('rank', 'colour', 'avatar', 'avatar_type', 'avatar_width', 'avatar_height');
 0577                                  foreach ($test_variables as $test)
 0578                                  {
 0579                                      if ($action == 'add' || (isset($submit_ary[$test]) && $group_row['group_' . $test] != $submit_ary[$test]))
 0580                                      {
 0581                                          $group_attributes['group_' . $test] = $group_row['group_' . $test] = $submit_ary[$test];
 0582                                      }
 0583                                  }
 0584   
 0585                                  if (!($error = group_create($group_id, $group_type, $group_name, $group_desc, $group_attributes, $allow_desc_bbcode, $allow_desc_urls, $allow_desc_smilies)))
 0586                                  {
 0587                                      $cache->destroy('sql', GROUPS_TABLE);
 0588   
 0589                                      $message = ($action == 'edit') ? 'GROUP_UPDATED' : 'GROUP_CREATED';
 0590                                      trigger_error($user->lang[$message] . $return_page);
 0591                                  }
 0592                              }
 0593   
 0594                              if (sizeof($error))
 0595                              {
 0596                                  $group_rank = $submit_ary['rank'];
 0597   
 0598                                  $group_desc_data = array(
 0599                                      'text'            => $group_desc,
 0600                                      'allow_bbcode'    => $allow_desc_bbcode,
 0601                                      'allow_smilies'    => $allow_desc_smilies,
 0602                                      'allow_urls'    => $allow_desc_urls
 0603                                  );
 0604                              }
 0605                          }
 0606                          else if (!$group_id)
 0607                          {
 0608                              $group_name = utf8_normalize_nfc(request_var('group_name', '', true));
 0609                              $group_desc_data = array(
 0610                                  'text'            => '',
 0611                                  'allow_bbcode'    => true,
 0612                                  'allow_smilies'    => true,
 0613                                  'allow_urls'    => true
 0614                              );
 0615                              $group_rank = 0;
 0616                              $group_type = GROUP_OPEN;
 0617                          }
 0618                          else
 0619                          {
 0620                              $group_name = $group_row['group_name'];
 0621                              $group_desc_data = generate_text_for_edit($group_row['group_desc'], $group_row['group_desc_uid'], $group_row['group_desc_options']);
 0622                              $group_type = $group_row['group_type'];
 0623                              $group_rank = $group_row['group_rank'];
 0624                          }
 0625   
 0626                          $sql = 'SELECT *
 0627                              FROM ' . RANKS_TABLE . '
 0628                              WHERE rank_special = 1
 0629                              ORDER BY rank_title';
 0630                          $result = $db->sql_query($sql);
 0631   
 0632                          $rank_options = '<option value="0"' . ((!$group_rank) ? ' selected="selected"' : '') . '>' . $user->lang['USER_DEFAULT'] . '</option>';
 0633                          while ($row = $db->sql_fetchrow($result))
 0634                          {
 0635                              $selected = ($group_rank && $row['rank_id'] == $group_rank) ? ' selected="selected"' : '';
 0636                              $rank_options .= '<option value="' . $row['rank_id'] . '"' . $selected . '>' . $row['rank_title'] . '</option>';
 0637                          }
 0638                          $db->sql_freeresult($result);
 0639   
 0640                          $type_free        = ($group_type == GROUP_FREE) ? ' checked="checked"' : '';
 0641                          $type_open        = ($group_type == GROUP_OPEN) ? ' checked="checked"' : '';
 0642                          $type_closed    = ($group_type == GROUP_CLOSED) ? ' checked="checked"' : '';
 0643                          $type_hidden    = ($group_type == GROUP_HIDDEN) ? ' checked="checked"' : '';
 0644   
 0645                          $avatar_img = (!empty($group_row['group_avatar'])) ? get_user_avatar($group_row['group_avatar'], $group_row['group_avatar_type'], $group_row['group_avatar_width'], $group_row['group_avatar_height'], 'GROUP_AVATAR') : '<img src="' . $phpbb_root_path . 'adm/images/no_avatar.gif" alt="" />';
 0646   
 0647                          $display_gallery = (isset($_POST['display_gallery'])) ? true : false;
 0648   
 0649                          if ($config['allow_avatar_local'] && $display_gallery)
 0650                          {
 0651                              avatar_gallery($category, $avatar_select, 4);
 0652                          }
 0653                          
 0654                          $avatars_enabled = ($can_upload || ($config['allow_avatar_local'] || $config['allow_avatar_remote'])) ? true : false;
 0655   
 0656   
 0657                          $template->assign_vars(array(
 0658                              'S_EDIT'            => true,
 0659                              'S_INCLUDE_SWATCH'    => true,
 0660                              'S_CAN_UPLOAD'        => $can_upload,
 0661                              'S_FORM_ENCTYPE'    => ($can_upload) ? ' enctype="multipart/form-data"' : '',
 0662                              'S_ERROR'            => (sizeof($error)) ? true : false,
 0663                              'S_SPECIAL_GROUP'    => ($group_type == GROUP_SPECIAL) ? true : false,
 0664                              'S_AVATARS_ENABLED'    => $avatars_enabled,
 0665                              'S_DISPLAY_GALLERY'    => ($config['allow_avatar_local'] && !$display_gallery) ? true : false,
 0666                              'S_IN_GALLERY'        => ($config['allow_avatar_local'] && $display_gallery) ? true : false,
 0667   
 0668                              'ERROR_MSG'                => (sizeof($error)) ? implode('<br />', $error) : '',
 0669                              'GROUP_NAME'            => ($group_type == GROUP_SPECIAL) ? $user->lang['G_' . $group_name] : $group_name,
 0670                              'GROUP_INTERNAL_NAME'    => $group_name,
 0671                              'GROUP_DESC'            => $group_desc_data['text'],
 0672                              'GROUP_RECEIVE_PM'        => (isset($group_row['group_receive_pm']) && $group_row['group_receive_pm']) ? ' checked="checked"' : '',
 0673                              'GROUP_MESSAGE_LIMIT'    => (isset($group_row['group_message_limit'])) ? $group_row['group_message_limit'] : 0,
 0674                              'GROUP_COLOUR'            => (isset($group_row['group_colour'])) ? $group_row['group_colour'] : '',
 0675   
 0676                              'S_DESC_BBCODE_CHECKED'    => $group_desc_data['allow_bbcode'],
 0677                              'S_DESC_URLS_CHECKED'    => $group_desc_data['allow_urls'],
 0678                              'S_DESC_SMILIES_CHECKED'=> $group_desc_data['allow_smilies'],
 0679   
 0680                              'S_RANK_OPTIONS'        => $rank_options,
 0681                              'AVATAR'                => $avatar_img,
 0682                              'AVATAR_IMAGE'            => $avatar_img,
 0683                              'AVATAR_MAX_FILESIZE'    => $config['avatar_filesize'],
 0684                              'AVATAR_WIDTH'            => (isset($group_row['group_avatar_width'])) ? $group_row['group_avatar_width'] : '',
 0685                              'AVATAR_HEIGHT'            => (isset($group_row['group_avatar_height'])) ? $group_row['group_avatar_height'] : '',
 0686   
 0687                              'GROUP_TYPE_FREE'        => GROUP_FREE,
 0688                              'GROUP_TYPE_OPEN'        => GROUP_OPEN,
 0689                              'GROUP_TYPE_CLOSED'        => GROUP_CLOSED,
 0690                              'GROUP_TYPE_HIDDEN'        => GROUP_HIDDEN,
 0691                              'GROUP_TYPE_SPECIAL'    => GROUP_SPECIAL,
 0692   
 0693                              'GROUP_FREE'        => $type_free,
 0694                              'GROUP_OPEN'        => $type_open,
 0695                              'GROUP_CLOSED'        => $type_closed,
 0696                              'GROUP_HIDDEN'        => $type_hidden,
 0697   
 0698                              'U_SWATCH'            => append_sid("{$phpbb_root_path}adm/swatch.$phpEx", 'form=ucp&amp;name=group_colour'),
 0699                              'S_UCP_ACTION'        => $this->u_action . "&amp;action=$action&amp;g=$group_id",
 0700                              'L_AVATAR_EXPLAIN'    => sprintf($user->lang['AVATAR_EXPLAIN'], $config['avatar_max_width'], $config['avatar_max_height'], round($config['avatar_filesize'] / 1024)))
 0701                          );
 0702   
 0703                      break;
 0704   
 0705                      case 'list':
 0706   
 0707                          if (!$group_id)
 0708                          {
 0709                              trigger_error($user->lang['NO_GROUP'] . $return_page);
 0710                          }
 0711   
 0712                          if (!($row = group_memberships($group_id, $user->data['user_id'])))
 0713                          {
 0714                              trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page);
 0715                          }
 0716                          list(, $row) = each($row);
 0717   
 0718                          if (!$row['group_leader'])
 0719                          {
 0720                              trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page);
 0721                          }
 0722   
 0723                          $user->add_lang(array('acp/groups', 'acp/common'));
 0724                          $start = request_var('start', 0);
 0725   
 0726                          // Grab the leaders - always, on every page...
 0727                          $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_colour, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending
 0728                              FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug
 0729                              WHERE ug.group_id = $group_id
 0730                                  AND u.user_id = ug.user_id
 0731                                  AND ug.group_leader = 1
 0732                              ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username_clean";
 0733                          $result = $db->sql_query($sql);
 0734   
 0735                          while ($row = $db->sql_fetchrow($result))
 0736                          {
 0737                              $template->assign_block_vars('leader', array(
 0738                                  'USERNAME'            => $row['username'],
 0739                                  'USERNAME_COLOUR'    => $row['user_colour'],
 0740                                  'USERNAME_FULL'        => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
 0741                                  'U_USER_VIEW'        => get_username_string('profile', $row['user_id'], $row['username']),
 0742                                  'S_GROUP_DEFAULT'    => ($row['group_id'] == $group_id) ? true : false,
 0743                                  'JOINED'            => ($row['user_regdate']) ? $user->format_date($row['user_regdate']) : ' - ',
 0744                                  'USER_POSTS'        => $row['user_posts'],
 0745                                  'USER_ID'            => $row['user_id'])
 0746                              );
 0747                          }
 0748                          $db->sql_freeresult($result);
 0749   
 0750                          // Total number of group members (non-leaders)
 0751                          $sql = 'SELECT COUNT(user_id) AS total_members
 0752                              FROM ' . USER_GROUP_TABLE . "
 0753                              WHERE group_id = $group_id
 0754                                  AND group_leader = 0";
 0755                          $result = $db->sql_query($sql);
 0756                          $total_members = (int) $db->sql_fetchfield('total_members');
 0757                          $db->sql_freeresult($result);
 0758   
 0759                          // Grab the members
 0760                          $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_colour, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending
 0761                              FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug
 0762                              WHERE ug.group_id = $group_id
 0763                                  AND u.user_id = ug.user_id
 0764                                  AND ug.group_leader = 0
 0765                              ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username_clean";
 0766                          $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
 0767   
 0768                          $pending = false;
 0769   
 0770                          while ($row = $db->sql_fetchrow($result))
 0771                          {
 0772                              if ($row['user_pending'] && !$pending)
 0773                              {
 0774                                  $template->assign_block_vars('member', array(
 0775                                      'S_PENDING'        => true)
 0776                                  );
 0777   
 0778                                  $pending = true;
 0779                              }
 0780   
 0781                              $template->assign_block_vars('member', array(
 0782                                  'USERNAME'            => $row['username'],
 0783                                  'USERNAME_COLOUR'    => $row['user_colour'],
 0784                                  'USERNAME_FULL'        => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
 0785                                  'U_USER_VIEW'        => get_username_string('profile', $row['user_id'], $row['username']),
 0786                                  'S_GROUP_DEFAULT'    => ($row['group_id'] == $group_id) ? true : false,
 0787                                  'JOINED'            => ($row['user_regdate']) ? $user->format_date($row['user_regdate']) : ' - ',
 0788                                  'USER_POSTS'        => $row['user_posts'],
 0789                                  'USER_ID'            => $row['user_id'])
 0790                              );
 0791                          }
 0792                          $db->sql_freeresult($result);
 0793   
 0794                          $s_action_options = '';
 0795                          $options = array('default' => 'DEFAULT', 'approve' => 'APPROVE', 'deleteusers' => 'DELETE');
 0796   
 0797                          foreach ($options as $option => $lang)
 0798                          {
 0799                              $s_action_options .= '<option value="' . $option . '">' . $user->lang['GROUP_' . $lang] . '</option>';
 0800                          }
 0801   
 0802                          $template->assign_vars(array(
 0803                              'S_LIST'            => true,
 0804                              'S_ACTION_OPTIONS'    => $s_action_options,
 0805                              'S_ON_PAGE'            => on_page($total_members, $config['topics_per_page'], $start),
 0806                              'PAGINATION'        => generate_pagination($this->u_action . "&amp;action=$action&amp;g=$group_id", $total_members, $config['topics_per_page'], $start),
 0807   
 0808                              'U_ACTION'            => $this->u_action . "&amp;g=$group_id",
 0809                              'U_FIND_USERNAME'    => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&amp;form=ucp&amp;field=usernames'),
 0810                          ));
 0811   
 0812                      break;
 0813   
 0814                      case 'approve':
 0815   
 0816                          if (!$group_id)
 0817                          {
 0818                              trigger_error($user->lang['NO_GROUP'] . $return_page);
 0819                          }
 0820   
 0821                          if (!($row = group_memberships($group_id, $user->data['user_id'])))
 0822                          {
 0823                              trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page);
 0824                          }
 0825                          list(, $row) = each($row);
 0826   
 0827                          if (!$row['group_leader'])
 0828                          {
 0829                              trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page);
 0830                          }
 0831   
 0832                          $user->add_lang('acp/groups');
 0833   
 0834                          // Approve, demote or promote
 0835                          group_user_attributes('approve', $group_id, $mark_ary, false, false);
 0836   
 0837                          trigger_error($user->lang['USERS_APPROVED'] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&amp;action=list&amp;g=' . $group_id . '">', '</a>'));
 0838   
 0839                      break;
 0840   
 0841                      case 'default':
 0842   
 0843                          if (!$group_id)
 0844                          {
 0845                              trigger_error($user->lang['NO_GROUP'] . $return_page);
 0846                          }
 0847   
 0848                          if (!($row = group_memberships($group_id, $user->data['user_id'])))
 0849                          {
 0850                              trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page);
 0851                          }
 0852                          list(, $row) = each($row);
 0853   
 0854                          if (!$row['group_leader'])
 0855                          {
 0856                              trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page);
 0857                          }
 0858   
 0859                          $group_row['group_name'] = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'];
 0860   
 0861                          if (confirm_box(true))
 0862                          {
 0863                              if (!sizeof($mark_ary))
 0864                              {
 0865                                  $start = 0;
 0866                  
 0867                                  do
 0868                                  {
 0869                                      $sql = 'SELECT user_id
 0870                                          FROM ' . USER_GROUP_TABLE . "
 0871                                          WHERE group_id = $group_id
 0872                                          ORDER BY user_id";
 0873                                      $result = $db->sql_query_limit($sql, 200, $start);
 0874   
 0875                                      $mark_ary = array();
 0876                                      if ($row = $db->sql_fetchrow($result))
 0877                                      {
 0878                                          do
 0879                                          {
 0880                                              $mark_ary[] = $row['user_id'];
 0881                                          }
 0882                                          while ($row = $db->sql_fetchrow($result));
 0883   
 0884                                          group_user_attributes('default', $group_id, $mark_ary, false, $group_row['group_name'], $group_row);
 0885   
 0886                                          $start = (sizeof($mark_ary) < 200) ? 0 : $start + 200;
 0887                                      }
 0888                                      else
 0889                                      {
 0890                                          $start = 0;
 0891                                      }
 0892                                      $db->sql_freeresult($result);
 0893                                  }
 0894                                  while ($start);
 0895                              }
 0896                              else
 0897                              {
 0898                                  group_user_attributes('default', $group_id, $mark_ary, false, $group_row['group_name'], $group_row);
 0899                              }
 0900   
 0901                              $user->add_lang('acp/groups');
 0902   
 0903                              trigger_error($user->lang['GROUP_DEFS_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&amp;action=list&amp;g=' . $group_id . '">', '</a>'));
 0904                          }
 0905                          else
 0906                          {
 0907                              $user->add_lang('acp/common');
 0908   
 0909                              confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
 0910                                  'mark'        => $mark_ary,
 0911                                  'g'            => $group_id,
 0912                                  'i'            => $id,
 0913                                  'mode'        => $mode,
 0914                                  'action'    => $action))
 0915                              );
 0916                          }
 0917   
 0918                      break;
 0919   
 0920                      case 'deleteusers':
 0921   
 0922                          $user->add_lang(array('acp/groups', 'acp/common'));
 0923   
 0924                          if (!($row = group_memberships($group_id, $user->data['user_id'])))
 0925                          {
 0926                              trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page);
 0927                          }
 0928                          list(, $row) = each($row);
 0929   
 0930                          if (!$row['group_leader'])
 0931                          {
 0932                              trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page);
 0933                          }
 0934   
 0935                          $group_row['group_name'] = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'];
 0936   
 0937                          if (confirm_box(true))
 0938                          {
 0939                              if (!$group_id)
 0940                              {
 0941                                  trigger_error($user->lang['NO_GROUP'] . $return_page);
 0942                              }
 0943   
 0944                              $error = group_user_del($group_id, $mark_ary, false, $group_row['group_name']);
 0945   
 0946                              if ($error)
 0947                              {
 0948                                  trigger_error($user->lang[$error] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&amp;action=list&amp;g=' . $group_id . '">', '</a>'));
 0949                              }
 0950   
 0951                              trigger_error($user->lang['GROUP_USERS_REMOVE'] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&amp;action=list&amp;g=' . $group_id . '">', '</a>'));
 0952                          }
 0953                          else
 0954                          {
 0955                              confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
 0956                                  'mark'        => $mark_ary,
 0957                                  'g'            => $group_id,
 0958                                  'i'            => $id,
 0959                                  'mode'        => $mode,
 0960                                  'action'    => $action))
 0961                              );
 0962                          }
 0963   
 0964                      break;
 0965   
 0966                      case 'addusers':
 0967   
 0968                          $user->add_lang(array('acp/groups', 'acp/common'));
 0969   
 0970                          $names = utf8_normalize_nfc(request_var('usernames', '', true));
 0971   
 0972                          if (!$group_id)
 0973                          {
 0974                              trigger_error($user->lang['NO_GROUP'] . $return_page);
 0975                          }
 0976   
 0977                          if (!$names)
 0978                          {
 0979                              trigger_error($user->lang['NO_USERS'] . $return_page);
 0980                          }
 0981   
 0982                          if (!($row = group_memberships($group_id, $user->data['user_id'])))
 0983                          {
 0984                              trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page);
 0985                          }
 0986                          list(, $row) = each($row);
 0987   
 0988                          if (!$row['group_leader'])
 0989                          {
 0990                              trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page);
 0991                          }
 0992   
 0993                          $name_ary = array_unique(explode("\n", $names));
 0994                          $group_name = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'];
 0995   
 0996                          $default = request_var('default', 0);
 0997                          
 0998                          if (confirm_box(true))
 0999                          {
 1000                              // Add user/s to group
 1001                              if ($error = group_user_add($group_id, false, $name_ary, $group_name, $default, 0, 0, $group_row))
 1002                              {
 1003                                  trigger_error($user->lang[$error] . $return_page);
 1004                              }
 1005                          }
 1006                          else
 1007                          {
 1008                              $s_hidden_fields = array(
 1009                                  'default'    => $default,
 1010                                  'usernames'    => $names,
 1011                                  'g'            => $group_id,
 1012                                  'i'            => $id,
 1013                                  'mode'        => $mode,
 1014                                  'action'    => $action
 1015                              );
 1016                              confirm_box(false, sprintf($user->lang['GROUP_CONFIRM_ADD_USER' . ((sizeof($name_ary) == 1) ? '' : 'S')], implode(', ', $name_ary)), build_hidden_fields($s_hidden_fields));
 1017                          }
 1018   
 1019                          trigger_error($user->lang['GROUP_USERS_ADDED'] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&amp;action=list&amp;g=' . $group_id . '">', '</a>'));
 1020   
 1021                      break;
 1022   
 1023                      default:
 1024                          $user->add_lang('acp/common');
 1025   
 1026                          $sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_desc, g.group_desc_uid, g.group_desc_bitfield, g.group_desc_options, g.group_type, ug.group_leader
 1027                              FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug
 1028                              WHERE ug.user_id = ' . $user->data['user_id'] . '
 1029                                  AND g.group_id = ug.group_id
 1030                                  AND ug.group_leader = 1
 1031                              ORDER BY g.group_type DESC, g.group_name';
 1032                          $result = $db->sql_query($sql);
 1033   
 1034                          while ($value = $db->sql_fetchrow($result))
 1035                          {
 1036                              $template->assign_block_vars('leader', array(
 1037                                  'GROUP_NAME'    => ($value['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $value['group_name']] : $value['group_name'],
 1038                                  'GROUP_DESC'    => generate_text_for_display($value['group_desc'], $value['group_desc_uid'], $value['group_desc_bitfield'], $value['group_desc_options']),
 1039                                  'GROUP_TYPE'    => $value['group_type'],
 1040                                  'GROUP_ID'        => $value['group_id'],
 1041                                  'GROUP_COLOUR'    => $value['group_colour'],
 1042   
 1043                                  'U_LIST'    => $this->u_action . "&amp;action=list&amp;g={$value['group_id']}",
 1044                                  'U_EDIT'    => $this->u_action . "&amp;action=edit&amp;g={$value['group_id']}")
 1045                              );
 1046                          }
 1047                          $db->sql_freeresult($result);
 1048   
 1049                      break;
 1050                  }
 1051   
 1052              break;
 1053          }
 1054   
 1055          $this->tpl_name = 'ucp_groups_' . $mode;
 1056      }
 1057  }
 1058   
 1059  ?>