6 * @copyright (c) 2005 phpBB Group
7 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
18 function main($id, $mode)
20 global $config, $db, $user, $auth, $template, $cache;
21 global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix, $file_uploads;
23 $user->add_lang('acp/groups');
24 $this->tpl_name
= 'acp_groups';
25 $this->page_title
= 'ACP_GROUPS_MANAGE';
27 include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
29 // Check and set some common vars
30 $action = (isset($_POST['add'])) ?
'add' : ((isset($_POST['addusers'])) ?
'addusers' : request_var('action', ''));
31 $group_id = request_var('g', 0);
32 $mark_ary = request_var('mark', array(0));
33 $name_ary = request_var('usernames', '', true);
34 $leader = request_var('leader', 0);
35 $default = request_var('default', 0);
36 $start = request_var('start', 0);
37 $update = (isset($_POST['update'])) ?
true : false;
40 $can_upload = (file_exists($phpbb_root_path . $config['avatar_path']) && is_writeable($phpbb_root_path . $config['avatar_path']) && $file_uploads) ?
true : false;
43 // Grab basic data for group, if group_id is set and exists
47 FROM ' . GROUPS_TABLE
. "
48 WHERE group_id = $group_id";
49 $result = $db->sql_query($sql);
50 $group_row = $db->sql_fetchrow($result);
51 $db->sql_freeresult($result);
55 trigger_error($user->lang
['NO_GROUP'] . adm_back_link($this->u_action
), E_USER_WARNING
);
58 // Check if the user is allowed to manage this group if set to founder only.
59 if ($user->data
['user_type'] != USER_FOUNDER
&& $group_row['group_founder_manage'])
61 trigger_error($user->lang
['NOT_ALLOWED_MANAGE_GROUP'] . adm_back_link($this->u_action
), E_USER_WARNING
);
73 trigger_error($user->lang
['NO_GROUP'] . adm_back_link($this->u_action
), E_USER_WARNING
);
76 // Approve, demote or promote
77 group_user_attributes($action, $group_id, $mark_ary, false, $group_row['group_name']);
82 $message = 'GROUP_MODS_DEMOTED';
86 $message = 'GROUP_MODS_PROMOTED';
90 $message = 'USERS_APPROVED';
94 group_update_listings($group_id);
96 trigger_error($user->lang
[$message] . adm_back_link($this->u_action
. '&action=list&g=' . $group_id));
102 trigger_error($user->lang
['NO_GROUP'] . adm_back_link($this->u_action
), E_USER_WARNING
);
105 if (confirm_box(true))
107 if (!sizeof($mark_ary))
113 $sql = 'SELECT user_id
114 FROM ' . USER_GROUP_TABLE
. "
115 WHERE group_id = $group_id
117 $result = $db->sql_query_limit($sql, 200, $start);
120 if ($row = $db->sql_fetchrow($result))
124 $mark_ary[] = $row['user_id'];
126 while ($row = $db->sql_fetchrow($result));
128 group_user_attributes('default', $group_id, $mark_ary, false, $group_row['group_name'], $group_row);
130 $start = (sizeof($mark_ary) < 200) ?
0 : $start +
200;
136 $db->sql_freeresult($result);
142 group_user_attributes('default', $group_id, $mark_ary, false, $group_row['group_name'], $group_row);
145 group_update_listings($group_id);
147 trigger_error($user->lang
['GROUP_DEFS_UPDATED'] . adm_back_link($this->u_action
. '&action=list&g=' . $group_id));
151 confirm_box(false, $user->lang
['CONFIRM_OPERATION'], build_hidden_fields(array(
156 'action' => $action))
164 if (confirm_box(true))
168 trigger_error($user->lang
['NO_GROUP'] . adm_back_link($this->u_action
), E_USER_WARNING
);
176 if (!$auth->acl_get('a_groupdel'))
178 trigger_error($user->lang
['NO_AUTH_OPERATION'] . adm_back_link($this->u_action
), E_USER_WARNING
);
181 $error = group_delete($group_id, $group_row['group_name']);
185 $error = group_user_del($group_id, $mark_ary, false, $group_row['group_name']);
189 $back_link = ($action == 'delete') ?
$this->u_action
: $this->u_action
. '&action=list&g=' . $group_id;
193 trigger_error($user->lang
[$error] . adm_back_link($back_link), E_USER_WARNING
);
196 $message = ($action == 'delete') ?
'GROUP_DELETED' : 'GROUP_USERS_REMOVE';
197 trigger_error($user->lang
[$message] . adm_back_link($back_link));
201 confirm_box(false, $user->lang
['CONFIRM_OPERATION'], build_hidden_fields(array(
206 'action' => $action))
214 trigger_error($user->lang
['NO_GROUP'] . adm_back_link($this->u_action
), E_USER_WARNING
);
219 trigger_error($user->lang
['NO_USERS'] . adm_back_link($this->u_action
. '&action=list&g=' . $group_id), E_USER_WARNING
);
222 $name_ary = array_unique(explode("\n", $name_ary));
223 $group_name = ($group_row['group_type'] == GROUP_SPECIAL
) ?
$user->lang
['G_' . $group_row['group_name']] : $group_row['group_name'];
225 // Add user/s to group
226 if ($error = group_user_add($group_id, false, $name_ary, $group_name, $default, $leader, 0, $group_row))
228 trigger_error($user->lang
[$error] . adm_back_link($this->u_action
. '&action=list&g=' . $group_id), E_USER_WARNING
);
231 $message = ($leader) ?
'GROUP_MODS_ADDED' : 'GROUP_USERS_ADDED';
232 trigger_error($user->lang
[$message] . adm_back_link($this->u_action
. '&action=list&g=' . $group_id));
238 $data = $submit_ary = array();
240 if ($action == 'edit' && !$group_id)
242 trigger_error($user->lang
['NO_GROUP'] . adm_back_link($this->u_action
), E_USER_WARNING
);
245 if ($action == 'add' && !$auth->acl_get('a_groupadd'))
247 trigger_error($user->lang
['NO_AUTH_OPERATION'] . adm_back_link($this->u_action
), E_USER_WARNING
);
251 $user->add_lang('ucp');
253 $avatar_select = basename(request_var('avatar_select', ''));
254 $category = basename(request_var('category', ''));
259 $group_name = request_var('group_name', '', true);
260 $group_desc = request_var('group_desc', '', true);
261 $group_type = request_var('group_type', GROUP_FREE
);
263 $allow_desc_bbcode = request_var('desc_parse_bbcode', false);
264 $allow_desc_urls = request_var('desc_parse_urls', false);
265 $allow_desc_smilies = request_var('desc_parse_smilies', false);
267 $data['uploadurl'] = request_var('uploadurl', '');
268 $data['remotelink'] = request_var('remotelink', '');
269 $delete = request_var('delete', '');
272 'colour' => request_var('group_colour', ''),
273 'rank' => request_var('group_rank', 0),
274 'receive_pm' => isset($_REQUEST['group_receive_pm']) ?
1 : 0,
275 'legend' => isset($_REQUEST['group_legend']) ?
1 : 0,
276 'message_limit' => request_var('group_message_limit', 0),
279 if ($user->data
['user_type'] == USER_FOUNDER
)
281 $submit_ary['founder_manage'] = isset($_REQUEST['group_founder_manage']) ?
1 : 0;
285 $submit_ary['founder_manage'] = 0;
288 if (!empty($_FILES['uploadfile']['tmp_name']) ||
$data['uploadurl'] ||
$data['remotelink'])
290 $data['width'] = request_var('width', '');
291 $data['height'] = request_var('height', '');
295 'uploadurl' => array('string', true, 5, 255),
296 'remotelink' => array('string', true, 5, 255),
297 'width' => array('string', true, 1, 3),
298 'height' => array('string', true, 1, 3),
301 if (!($error = validate_data($data, $var_ary)))
303 $data['user_id'] = "g$group_id";
305 if ((!empty($_FILES['uploadfile']['tmp_name']) ||
$data['uploadurl']) && $can_upload)
307 list($submit_ary['avatar_type'], $submit_ary['avatar'], $submit_ary['avatar_width'], $submit_ary['avatar_height']) = avatar_upload($data, $error);
309 else if ($data['remotelink'])
311 list($submit_ary['avatar_type'], $submit_ary['avatar'], $submit_ary['avatar_width'], $submit_ary['avatar_height']) = avatar_remote($data, $error);
315 else if ($avatar_select && $config['allow_avatar_local'])
317 // check avatar gallery
318 if (is_dir($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category))
320 $submit_ary['avatar_type'] = AVATAR_GALLERY
;
322 list($submit_ary['avatar_width'], $submit_ary['avatar_height']) = getimagesize($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category . '/' . $avatar_select);
323 $submit_ary['avatar'] = $category . '/' . $avatar_select;
328 $submit_ary['avatar'] = '';
329 $submit_ary['avatar_type'] = $submit_ary['avatar_width'] = $submit_ary['avatar_height'] = 0;
332 if ((isset($submit_ary['avatar']) && $submit_ary['avatar'] && (!isset($group_row['group_avatar']) ||
$group_row['group_avatar'] != $submit_ary['avatar'])) ||
$delete)
334 if (isset($group_row['group_avatar']) && $group_row['group_avatar'])
336 avatar_delete('group', $group_row);
342 // Only set the rank, colour, etc. if it's changed or if we're adding a new
343 // group. This prevents existing group members being updated if no changes
346 $group_attributes = array();
347 $test_variables = array('rank', 'colour', 'avatar', 'avatar_type', 'avatar_width', 'avatar_height', 'receive_pm', 'legend', 'message_limit', 'founder_manage');
348 foreach ($test_variables as $test)
350 if (isset($submit_ary[$test]) && ($action == 'add' ||
$group_row['group_' . $test] != $submit_ary[$test]))
352 $group_attributes['group_' . $test] = $group_row['group_' . $test] = $submit_ary[$test];
356 if (!($error = group_create($group_id, $group_type, $group_name, $group_desc, $group_attributes, $allow_desc_bbcode, $allow_desc_urls, $allow_desc_smilies)))
358 $group_perm_from = request_var('group_perm_from', 0);
361 if ($group_perm_from && $action == 'add')
363 // From the mysql documentation:
364 // Prior to MySQL 4.0.14, the target table of the INSERT statement cannot appear in the FROM clause of the SELECT part of the query. This limitation is lifted in 4.0.14.
365 // Due to this we stay on the safe side if we do the insertion "the manual way"
367 // Copy permisisons from/to the acl groups table (only group_id gets changed)
368 $sql = 'SELECT forum_id, auth_option_id, auth_role_id, auth_setting
369 FROM ' . ACL_GROUPS_TABLE
. '
370 WHERE group_id = ' . $group_perm_from;
371 $result = $db->sql_query($sql);
373 $groups_sql_ary = array();
374 while ($row = $db->sql_fetchrow($result))
376 $groups_sql_ary[] = array(
377 'group_id' => (int) $group_id,
378 'forum_id' => (int) $row['forum_id'],
379 'auth_option_id' => (int) $row['auth_option_id'],
380 'auth_role_id' => (int) $row['auth_role_id'],
381 'auth_setting' => (int) $row['auth_setting']
384 $db->sql_freeresult($result);
386 // Now insert the data
387 $db->sql_multi_insert(ACL_GROUPS_TABLE
, $groups_sql_ary);
389 $auth->acl_clear_prefetch();
392 $cache->destroy('sql', GROUPS_TABLE
);
394 $message = ($action == 'edit') ?
'GROUP_UPDATED' : 'GROUP_CREATED';
395 trigger_error($user->lang
[$message] . adm_back_link($this->u_action
));
401 $group_rank = $submit_ary['rank'];
403 $group_desc_data = array(
404 'text' => $group_desc,
405 'allow_bbcode' => $allow_desc_bbcode,
406 'allow_smilies' => $allow_desc_smilies,
407 'allow_urls' => $allow_desc_urls
413 $group_name = request_var('group_name', '', true);
414 $group_desc_data = array(
416 'allow_bbcode' => true,
417 'allow_smilies' => true,
421 $group_type = GROUP_OPEN
;
425 $group_name = $group_row['group_name'];
426 $group_desc_data = generate_text_for_edit($group_row['group_desc'], $group_row['group_desc_uid'], $group_row['group_desc_options']);
427 $group_type = $group_row['group_type'];
428 $group_rank = $group_row['group_rank'];
432 FROM ' . RANKS_TABLE
. '
433 WHERE rank_special = 1
434 ORDER BY rank_title';
435 $result = $db->sql_query($sql);
437 $rank_options = '<option value="0"' . ((!$group_rank) ?
' selected="selected"' : '') . '>' . $user->lang
['USER_DEFAULT'] . '</option>';
439 while ($row = $db->sql_fetchrow($result))
441 $selected = ($group_rank && $row['rank_id'] == $group_rank) ?
' selected="selected"' : '';
442 $rank_options .= '<option value="' . $row['rank_id'] . '"' . $selected . '>' . $row['rank_title'] . '</option>';
444 $db->sql_freeresult($result);
446 $type_free = ($group_type == GROUP_FREE
) ?
' checked="checked"' : '';
447 $type_open = ($group_type == GROUP_OPEN
) ?
' checked="checked"' : '';
448 $type_closed = ($group_type == GROUP_CLOSED
) ?
' checked="checked"' : '';
449 $type_hidden = ($group_type == GROUP_HIDDEN
) ?
' checked="checked"' : '';
451 if (isset($group_row['group_avatar']) && $group_row['group_avatar'])
455 switch ($group_row['group_avatar_type'])
458 $avatar_img = $phpbb_root_path . $config['avatar_path'] . '/';
462 $avatar_img = $phpbb_root_path . $config['avatar_gallery_path'] . '/';
466 $avatar_img .= $group_row['group_avatar'];
467 $avatar_img = '<img src="' . $avatar_img . '" width="' . $group_row['group_avatar_width'] . '" height="' . $group_row['group_avatar_height'] . '" alt="" />';
471 $avatar_img = '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />';
474 $display_gallery = (isset($_POST['display_gallery'])) ?
true : false;
476 if ($config['allow_avatar_local'] && $display_gallery)
478 avatar_gallery($category, $avatar_select, 4);
481 $back_link = request_var('back_link', '');
485 case 'acp_users_groups':
486 $u_back = append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&mode=groups&u=' . request_var('u', 0));
490 $u_back = $this->u_action
;
494 $template->assign_vars(array(
496 'S_ADD_GROUP' => ($action == 'add') ?
true : false,
497 'S_INCLUDE_SWATCH' => true,
498 'S_CAN_UPLOAD' => $can_upload,
499 'S_ERROR' => (sizeof($error)) ?
true : false,
500 'S_SPECIAL_GROUP' => ($group_type == GROUP_SPECIAL
) ?
true : false,
501 'S_DISPLAY_GALLERY' => ($config['allow_avatar_local'] && !$display_gallery) ?
true : false,
502 'S_IN_GALLERY' => ($config['allow_avatar_local'] && $display_gallery) ?
true : false,
503 'S_USER_FOUNDER' => ($user->data
['user_type'] == USER_FOUNDER
) ?
true : false,
505 'ERROR_MSG' => (sizeof($error)) ?
implode('<br />', $error) : '',
506 'GROUP_NAME' => ($group_type == GROUP_SPECIAL
) ?
$user->lang
['G_' . $group_name] : $group_name,
507 'GROUP_INTERNAL_NAME' => $group_name,
508 'GROUP_DESC' => $group_desc_data['text'],
509 'GROUP_RECEIVE_PM' => (isset($group_row['group_receive_pm']) && $group_row['group_receive_pm']) ?
' checked="checked"' : '',
510 'GROUP_FOUNDER_MANAGE' => (isset($group_row['group_founder_manage']) && $group_row['group_founder_manage']) ?
' checked="checked"' : '',
511 'GROUP_LEGEND' => (isset($group_row['group_legend']) && $group_row['group_legend']) ?
' checked="checked"' : '',
512 'GROUP_MESSAGE_LIMIT' => (isset($group_row['group_message_limit'])) ?
$group_row['group_message_limit'] : 0,
513 'GROUP_COLOUR' => (isset($group_row['group_colour'])) ?
$group_row['group_colour'] : '',
516 'S_DESC_BBCODE_CHECKED' => $group_desc_data['allow_bbcode'],
517 'S_DESC_URLS_CHECKED' => $group_desc_data['allow_urls'],
518 'S_DESC_SMILIES_CHECKED'=> $group_desc_data['allow_smilies'],
520 'S_RANK_OPTIONS' => $rank_options,
521 'S_GROUP_OPTIONS' => group_select_options(0),
522 'AVATAR_IMAGE' => $avatar_img,
523 'AVATAR_MAX_FILESIZE' => $config['avatar_filesize'],
524 'GROUP_AVATAR_WIDTH' => (isset($group_row['group_avatar_width'])) ?
$group_row['group_avatar_width'] : '',
525 'GROUP_AVATAR_HEIGHT' => (isset($group_row['group_avatar_height'])) ?
$group_row['group_avatar_height'] : '',
527 'GROUP_TYPE_FREE' => GROUP_FREE
,
528 'GROUP_TYPE_OPEN' => GROUP_OPEN
,
529 'GROUP_TYPE_CLOSED' => GROUP_CLOSED
,
530 'GROUP_TYPE_HIDDEN' => GROUP_HIDDEN
,
531 'GROUP_TYPE_SPECIAL' => GROUP_SPECIAL
,
533 'GROUP_FREE' => $type_free,
534 'GROUP_OPEN' => $type_open,
535 'GROUP_CLOSED' => $type_closed,
536 'GROUP_HIDDEN' => $type_hidden,
539 'U_SWATCH' => append_sid("{$phpbb_admin_path}swatch.$phpEx", 'form=settings&name=group_colour'),
540 'UA_SWATCH' => append_sid("{$phpbb_admin_path}swatch.$phpEx", 'form=settings&name=group_colour', false),
541 'U_ACTION' => "{$this->u_action}&action=$action&g=$group_id",
542 'L_AVATAR_EXPLAIN' => sprintf($user->lang
['AVATAR_EXPLAIN'], $config['avatar_max_width'], $config['avatar_max_height'], round($config['avatar_filesize'] / 1024)),
553 trigger_error($user->lang
['NO_GROUP'] . adm_back_link($this->u_action
), E_USER_WARNING
);
556 $this->page_title
= 'GROUP_MEMBERS';
558 // Total number of group leaders
559 $sql = 'SELECT COUNT(user_id) AS total_leaders
560 FROM ' . USER_GROUP_TABLE
. "
561 WHERE group_id = $group_id
562 AND group_leader = 1";
563 $result = $db->sql_query($sql);
564 $total_leaders = (int) $db->sql_fetchfield('total_leaders');
565 $db->sql_freeresult($result);
567 // Total number of group members (non-leaders)
568 $sql = 'SELECT COUNT(user_id) AS total_members
569 FROM ' . USER_GROUP_TABLE
. "
570 WHERE group_id = $group_id
571 AND group_leader <> 1";
572 $result = $db->sql_query($sql);
573 $total_members = (int) $db->sql_fetchfield('total_members');
574 $db->sql_freeresult($result);
577 $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending
578 FROM ' . USERS_TABLE
. ' u, ' . USER_GROUP_TABLE
. " ug
579 WHERE ug.group_id = $group_id
580 AND u.user_id = ug.user_id
581 ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username_clean";
582 $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
584 $leader = $member = 0;
590 while ($row = $db->sql_fetchrow($result))
592 $type = ($row['group_leader']) ?
'leader' : 'member';
594 $group_data[$type][$
$type]['user_id'] = $row['user_id'];
595 $group_data[$type][$
$type]['group_id'] = $row['group_id'];
596 $group_data[$type][$
$type]['username'] = $row['username'];
597 $group_data[$type][$
$type]['user_regdate'] = $row['user_regdate'];
598 $group_data[$type][$
$type]['user_posts'] = $row['user_posts'];
599 $group_data[$type][$
$type]['user_pending'] = ($row['user_pending']) ?
1 : 0;
603 $db->sql_freeresult($result);
605 $s_action_options = '';
606 $options = array('default' => 'DEFAULT', 'approve' => 'APPROVE', 'demote' => 'DEMOTE', 'promote' => 'PROMOTE', 'deleteusers' => 'DELETE');
608 foreach ($options as $option => $lang)
610 $s_action_options .= '<option value="' . $option . '">' . $user->lang
['GROUP_' . $lang] . '</option>';
613 $template->assign_vars(array(
615 'S_GROUP_SPECIAL' => ($group_row['group_type'] == GROUP_SPECIAL
) ?
true : false,
616 'S_ACTION_OPTIONS' => $s_action_options,
618 'S_ON_PAGE' => on_page($total_members, $config['topics_per_page'], $start),
619 'PAGINATION' => generate_pagination($this->u_action
. "&action=$action&g=$group_id", $total_members, $config['topics_per_page'], $start, true),
620 'GROUP_NAME' => ($group_row['group_type'] == GROUP_SPECIAL
) ?
$user->lang
['G_' . $group_row['group_name']] : $group_row['group_name'],
622 'U_ACTION' => $this->u_action
. "&g=$group_id",
623 'U_BACK' => $this->u_action
,
624 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=list&field=usernames'),
625 'UA_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=list&field=usernames', false),
626 'U_DEFAULT_ALL' => "{$this->u_action}&action=default&g=$group_id")
629 foreach ($group_data['leader'] as $row)
631 $template->assign_block_vars('leader', array(
632 'U_USER_EDIT' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&action=edit&u={$row['user_id']}"),
634 'USERNAME' => $row['username'],
635 'S_GROUP_DEFAULT' => ($row['group_id'] == $group_id) ?
true : false,
636 'JOINED' => ($row['user_regdate']) ?
$user->format_date($row['user_regdate']) : ' - ',
637 'USER_POSTS' => $row['user_posts'],
638 'USER_ID' => $row['user_id'])
644 foreach ($group_data['member'] as $row)
646 if ($row['user_pending'] && !$pending)
648 $template->assign_block_vars('member', array(
655 $template->assign_block_vars('member', array(
656 'U_USER_EDIT' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&action=edit&u={$row['user_id']}"),
658 'USERNAME' => $row['username'],
659 'S_GROUP_DEFAULT' => ($row['group_id'] == $group_id) ?
true : false,
660 'JOINED' => ($row['user_regdate']) ?
$user->format_date($row['user_regdate']) : ' - ',
661 'USER_POSTS' => $row['user_posts'],
662 'USER_ID' => $row['user_id'])
670 $template->assign_vars(array(
671 'U_ACTION' => $this->u_action
,
672 'S_GROUP_ADD' => ($auth->acl_get('a_groupadd')) ?
true : false)
675 $sql = 'SELECT g.group_id, g.group_name, g.group_type, COUNT(ug.user_id) AS total_members
676 FROM ' . GROUPS_TABLE
. ' g
677 LEFT JOIN ' . USER_GROUP_TABLE
. ' ug ON (g.group_id = ug.group_id)
678 GROUP BY g.group_id, g.group_name, g.group_type
679 ORDER BY g.group_type ASC, g.group_name';
680 $result = $db->sql_query($sql);
682 $special = $normal = 0;
683 $group_ary = array();
685 while ($row = $db->sql_fetchrow($result))
687 $type = ($row['group_type'] == GROUP_SPECIAL
) ?
'special' : 'normal';
689 $group_ary[$type][$
$type]['group_id'] = $row['group_id'];
690 $group_ary[$type][$
$type]['group_name'] = $row['group_name'];
691 $group_ary[$type][$
$type]['group_type'] = $row['group_type'];
692 $group_ary[$type][$
$type]['total_members'] = $row['total_members'];
696 $db->sql_freeresult($result);
700 $special_toggle = false;
701 foreach ($group_ary as $type => $row_ary)
703 if ($type == 'special')
705 $template->assign_block_vars('groups', array(
710 foreach ($row_ary as $row)
712 $group_id = $row['group_id'];
713 $group_name = (!empty($user->lang
['G_' . $row['group_name']]))?
$user->lang
['G_' . $row['group_name']] : $row['group_name'];
715 $template->assign_block_vars('groups', array(
716 'U_LIST' => "{$this->u_action}&action=list&g=$group_id",
717 'U_EDIT' => "{$this->u_action}&action=edit&g=$group_id",
718 'U_DELETE' => ($auth->acl_get('a_groupdel')) ?
"{$this->u_action}&action=delete&g=$group_id" : '',
720 'S_GROUP_SPECIAL' => ($row['group_type'] == GROUP_SPECIAL
) ?
true : false,
722 'GROUP_NAME' => $group_name,
723 'TOTAL_MEMBERS' => $row['total_members'],