Verzeichnisstruktur phpBB-3.3.15


Veröffentlicht
28.08.2024

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