Verzeichnisstruktur phpBB-3.0.0


Veröffentlicht
12.12.2007

So funktioniert es


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

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

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

ucp_groups.php

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


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