Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

ucp_groups.php

Zuletzt modifiziert: 09.10.2024, 12:52 - Dateigröße: 37.44 KiB


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