Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

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:52 - Dateigröße: 37.44 KiB


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