Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

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