%PDF- %PDF-
Direktori : /data/www_bck/varak.cloud_bck/tracker.varak.cloud/ |
Current File : //data/www_bck/varak.cloud_bck/tracker.varak.cloud/group.php |
<?php /** * TorrentPier – Bull-powered BitTorrent tracker engine * * @copyright Copyright (c) 2005-2018 TorrentPier (https://torrentpier.com) * @link https://github.com/torrentpier/torrentpier for the canonical source repository * @license https://github.com/torrentpier/torrentpier/blob/master/LICENSE MIT License */ define('BB_SCRIPT', 'group'); define('BB_ROOT', './'); require __DIR__ . '/common.php'; require INC_DIR . '/bbcode.php'; $page_cfg['use_tablesorter'] = true; $s_member_groups = $s_pending_groups = $s_member_groups_opt = $s_pending_groups_opt = ''; $select_sort_mode = $select_sort_order = ''; function generate_user_info(&$row, $date_format, $group_mod, &$from, &$posts, &$joined, &$pm, &$email, &$www, &$user_time, &$avatar) { global $lang, $images, $bb_cfg; $from = (!empty($row['user_from'])) ? $row['user_from'] : ''; $joined = bb_date($row['user_regdate']); $user_time = (!empty($row['user_time'])) ? bb_date($row['user_time']) : $lang['NONE']; $posts = $row['user_posts'] ?: 0; $pm = $bb_cfg['text_buttons'] ? '<a class="txtb" href="' . (PM_URL . "?mode=post&" . POST_USERS_URL . "=" . $row['user_id']) . '">' . $lang['SEND_PM_TXTB'] . '</a>' : '<a href="' . (PM_URL . "?mode=post&" . POST_USERS_URL . "=" . $row['user_id']) . '"><img src="' . $images['icon_pm'] . '" alt="' . $lang['SEND_PRIVATE_MESSAGE'] . '" title="' . $lang['SEND_PRIVATE_MESSAGE'] . '" border="0" /></a>'; $avatar = get_avatar($row['user_id'], $row['avatar_ext_id'], !bf($row['user_opt'], 'user_opt', 'dis_avatar'), '', 50, 50); if (bf($row['user_opt'], 'user_opt', 'user_viewemail') || $group_mod) { $email_uri = ($bb_cfg['board_email_form']) ? ("profile.php?mode=email&" . POST_USERS_URL . "=" . $row['user_id']) : 'mailto:' . $row['user_email']; $email = '<a class="editable" href="' . $email_uri . '">' . $row['user_email'] . '</a>'; } else { $email = ''; } if ($row['user_website']) { $www = $bb_cfg['text_buttons'] ? '<a class="txtb" href="' . $row['user_website'] . '" target="_userwww">' . $lang['VISIT_WEBSITE_TXTB'] . '</a>' : '<a class="txtb" href="' . $row['user_website'] . '" target="_userwww"><img src="' . $images['icon_www'] . '" alt="' . $lang['VISIT_WEBSITE'] . '" title="' . $lang['VISIT_WEBSITE'] . '" border="0" /></a>'; } else { $www = ''; } } $user->session_start(array('req_login' => true)); set_die_append_msg(); $group_id = isset($_REQUEST[POST_GROUPS_URL]) ? (int)$_REQUEST[POST_GROUPS_URL] : null; $start = isset($_REQUEST['start']) ? abs((int)$_REQUEST['start']) : 0; $per_page = $bb_cfg['group_members_per_page']; $view_mode = isset($_REQUEST['view']) ? (string)$_REQUEST['view'] : null; $rel_limit = 50; $group_info = array(); $is_moderator = false; if ($group_id) { if (!$group_info = \TorrentPier\Legacy\Group::get_group_data($group_id)) { bb_die($lang['GROUP_NOT_EXIST']); } if (!$group_info['group_id'] || !$group_info['group_moderator'] || !$group_info['moderator_name']) { bb_die("Invalid group data [group_id: $group_id]"); } $is_moderator = ($userdata['user_id'] == $group_info['group_moderator'] || IS_ADMIN); } if (!$group_id) { // Show the main screen where the user can select a group. $groups = array(); $pending = 10; $member = 20; $sql = " SELECT g.group_name, g.group_description, g.group_id, g.group_type, g.release_group, IF(ug.user_id IS NOT NULL, IF(ug.user_pending = 1, $pending, $member), 0) AS membership, g.group_moderator, u.username AS moderator_name, IF(g.group_moderator = ug.user_id, 1, 0) AS is_group_mod, COUNT(ug2.user_id) AS members, SUM(ug2.user_pending) AS candidates FROM " . BB_GROUPS . " g LEFT JOIN " . BB_USER_GROUP . " ug ON ug.group_id = g.group_id AND ug.user_id = " . $userdata['user_id'] . " LEFT JOIN " . BB_USER_GROUP . " ug2 ON ug2.group_id = g.group_id LEFT JOIN " . BB_USERS . " u ON g.group_moderator = u.user_id WHERE g.group_single_user = 0 GROUP BY g.group_id ORDER BY is_group_mod DESC, membership DESC, g.group_type ASC, g.group_name ASC "; foreach (DB()->fetch_rowset($sql) as $row) { if ($row['is_group_mod']) { $type = 'MOD'; } elseif ($row['membership'] == $member) { $type = 'MEMBER'; } elseif ($row['membership'] == $pending) { $type = 'PENDING'; } elseif ($row['group_type'] == GROUP_OPEN) { $type = 'OPEN'; } elseif ($row['group_type'] == GROUP_CLOSED) { $type = 'CLOSED'; } elseif ($row['group_type'] == GROUP_HIDDEN && IS_ADMIN) { $type = 'HIDDEN'; } else { continue; } $data = array('id' => $row['group_id'], 'm' => ($row['members'] - $row['candidates']), 'c' => $row['candidates'], 'rg' => $row['release_group']); $groups[$type][$row['group_name']] = $data; } function build_group($params) { global $lang; $options = ''; foreach ($params as $name => $data) { $text = htmlCHR(str_short(rtrim($name), HTML_SELECT_MAX_LENGTH)); $members = ($data['m']) ? $lang['MEMBERS_IN_GROUP'] . ': ' . $data['m'] : $lang['NO_GROUP_MEMBERS']; $candidates = ($data['c']) ? $lang['PENDING_MEMBERS'] . ': ' . $data['c'] : $lang['NO_PENDING_GROUP_MEMBERS']; $options .= '<li class="pad_2"><a href="' . GROUP_URL . $data['id'] . '" class="med bold">' . $text . '</a></li>'; $options .= ($data['rg']) ? '<ul><li class="med">' . $lang['RELEASE_GROUP'] . '</li>' : '<ul>'; $options .= '<li class="seedmed">' . $members . '</li>'; if (IS_AM) { $options .= '<li class="leechmed">' . $candidates . '</li>'; } $options .= '</ul>'; } return $options; } if ($groups) { $s_hidden_fields = ''; foreach ($groups as $type => $grp) { $template->assign_block_vars('groups', array( 'MEMBERSHIP' => $lang["GROUP_MEMBER_{$type}"], 'GROUP_SELECT' => build_group($grp), )); } $template->assign_vars(array( 'SELECT_GROUP' => true, 'PAGE_TITLE' => $lang['GROUP_CONTROL_PANEL'], 'S_USERGROUP_ACTION' => 'group.php', 'S_HIDDEN_FIELDS' => $s_hidden_fields, )); } else { if (IS_ADMIN) { redirect('admin/admin_groups.php'); } else { bb_die($lang['NO_GROUPS_EXIST']); } } } elseif (isset($_POST['joingroup']) && $_POST['joingroup']) { if ($group_info['group_type'] != GROUP_OPEN) { bb_die($lang['THIS_CLOSED_GROUP']); } $sql = "SELECT g.group_id, g.group_name, ug.user_id, u.user_email, u.username, u.user_lang FROM " . BB_GROUPS . " g LEFT JOIN " . BB_USERS . " u ON(u.user_id = g.group_moderator) LEFT JOIN " . BB_USER_GROUP . " ug ON(ug.group_id = g.group_id AND ug.user_id = {$userdata['user_id']}) WHERE g.group_id = $group_id AND group_single_user = 0 AND g.group_type = " . GROUP_OPEN . " LIMIT 1"; $row = $moderator = DB()->fetch_row($sql); if (!$row['group_id']) { bb_die($lang['NO_GROUPS_EXIST']); } if ($row['user_id']) { set_die_append_msg(false, false, $group_id); bb_die($lang['ALREADY_MEMBER_GROUP']); } \TorrentPier\Legacy\Group::add_user_into_group($group_id, $userdata['user_id'], 1, TIMENOW); if ($bb_cfg['group_send_email']) { /** @var TorrentPier\Legacy\Emailer() $emailer */ $emailer = new TorrentPier\Legacy\Emailer(); $emailer->set_from([$bb_cfg['board_email'] => $bb_cfg['sitename']]); $emailer->set_to([$moderator['user_email'] => $moderator['username']]); $emailer->set_subject($lang['EMAILER_SUBJECT']['GROUP_REQUEST']); $emailer->set_template('group_request', $moderator['user_lang']); $emailer->assign_vars(array( 'USER' => $userdata['username'], 'SITENAME' => $bb_cfg['sitename'], 'GROUP_MODERATOR' => $moderator['username'], 'U_GROUP' => make_url(GROUP_URL . $group_id), )); $emailer->send(); } set_die_append_msg(false, false, $group_id); bb_die($lang['GROUP_JOINED']); } elseif (!empty($_POST['unsub']) || !empty($_POST['unsubpending'])) { \TorrentPier\Legacy\Group::delete_user_group($group_id, $userdata['user_id']); set_die_append_msg(false, false, $group_id); bb_die($lang['UNSUB_SUCCESS']); } else { // Handle Additions, removals, approvals and denials $group_moderator = $group_info['group_moderator']; if (!empty($_POST['add']) || !empty($_POST['remove']) || !empty($_POST['approve']) || !empty($_POST['deny'])) { if (!$is_moderator) { bb_die($lang['NOT_GROUP_MODERATOR']); } if (!empty($_POST['add'])) { if (isset($_POST['username']) && !($row = get_userdata($_POST['username'], true))) { bb_die($lang['COULD_NOT_ADD_USER']); } \TorrentPier\Legacy\Group::add_user_into_group($group_id, $row['user_id']); if ($bb_cfg['group_send_email']) { /** @var TorrentPier\Legacy\Emailer() $emailer */ $emailer = new TorrentPier\Legacy\Emailer(); $emailer->set_from([$bb_cfg['board_email'] => $bb_cfg['sitename']]); $emailer->set_to([$row['user_email'] => $row['username']]); $emailer->set_subject($lang['EMAILER_SUBJECT']['GROUP_ADDED']); $emailer->set_template('group_added', $row['user_lang']); $emailer->assign_vars(array( 'SITENAME' => $bb_cfg['sitename'], 'GROUP_NAME' => $group_info['group_name'], 'U_GROUP' => make_url(GROUP_URL . $group_id), )); $emailer->send(); } } else { if (((!empty($_POST['approve']) || !empty($_POST['deny'])) && !empty($_POST['pending_members'])) || (!empty($_POST['remove']) && !empty($_POST['members']))) { $members = (!empty($_POST['approve']) || !empty($_POST['deny'])) ? $_POST['pending_members'] : $_POST['members']; $sql_in = array(); foreach ($members as $members_id) { $sql_in[] = (int)$members_id; } if (!$sql_in = implode(',', $sql_in)) { bb_die($lang['NONE_SELECTED']); } if (!empty($_POST['approve'])) { DB()->query(" UPDATE " . BB_USER_GROUP . " SET user_pending = 0 WHERE user_id IN($sql_in) AND group_id = $group_id "); \TorrentPier\Legacy\Group::update_user_level($sql_in); } elseif (!empty($_POST['deny']) || !empty($_POST['remove'])) { DB()->query(" DELETE FROM " . BB_USER_GROUP . " WHERE user_id IN($sql_in) AND group_id = $group_id "); if (!empty($_POST['remove'])) { \TorrentPier\Legacy\Group::update_user_level($sql_in); } } // Email users when they are approved if (!empty($_POST['approve']) && $bb_cfg['group_send_email']) { $sql_select = "SELECT username, user_email, user_lang FROM " . BB_USERS . " WHERE user_id IN($sql_in)"; if (!$result = DB()->sql_query($sql_select)) { bb_die('Could not get user email information'); } foreach (DB()->fetch_rowset($sql_select) as $row) { /** @var TorrentPier\Legacy\Emailer() $emailer */ $emailer = new TorrentPier\Legacy\Emailer(); $emailer->set_from([$bb_cfg['board_email'] => $bb_cfg['sitename']]); $emailer->set_to([$row['user_email'] => $row['username']]); $emailer->set_subject($lang['EMAILER_SUBJECT']['GROUP_APPROVED']); $emailer->set_template('group_approved', $row['user_lang']); $emailer->assign_vars(array( 'SITENAME' => $bb_cfg['sitename'], 'GROUP_NAME' => $group_info['group_name'], 'U_GROUP' => make_url(GROUP_URL . $group_id), )); $emailer->send(); } } } } } // END approve or deny // Get moderator details for this group $group_moderator = DB()->fetch_row(" SELECT * FROM " . BB_USERS . " WHERE user_id = " . $group_info['group_moderator'] . " "); // Current user membership $is_group_member = $is_group_pending_member = false; $sql = "SELECT user_pending FROM " . BB_USER_GROUP . " WHERE group_id = $group_id AND user_id = " . $userdata['user_id'] . " LIMIT 1"; if ($row = DB()->fetch_row($sql)) { if ($row['user_pending'] == 0) { $is_group_member = true; } else { $is_group_pending_member = true; } } if ($userdata['user_id'] == $group_moderator['user_id']) { $group_details = $lang['ARE_GROUP_MODERATOR']; $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />'; } elseif ($is_group_member || $is_group_pending_member) { $template->assign_vars(array( 'SHOW_UNSUBSCRIBE_CONTROLS' => true, 'CONTROL_NAME' => ($is_group_member) ? 'unsub' : 'unsubpending', )); $group_details = ($is_group_pending_member) ? $lang['PENDING_THIS_GROUP'] : $lang['MEMBER_THIS_GROUP']; $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />'; } elseif (IS_GUEST) { $group_details = $lang['LOGIN_TO_JOIN']; $s_hidden_fields = ''; } else { if ($group_info['group_type'] == GROUP_OPEN) { $template->assign_var('SHOW_SUBSCRIBE_CONTROLS'); $group_details = $lang['THIS_OPEN_GROUP']; $s_hidden_fields = '<input type="hidden" name="' . POST_GROUPS_URL . '" value="' . $group_id . '" />'; } elseif ($group_info['group_type'] == GROUP_CLOSED) { $group_details = $lang['THIS_CLOSED_GROUP']; $s_hidden_fields = ''; } elseif ($group_info['group_type'] == GROUP_HIDDEN) { $group_details = $lang['THIS_HIDDEN_GROUP']; $s_hidden_fields = ''; } } // Add the moderator $username = $group_moderator['username']; $user_id = $group_moderator['user_id']; generate_user_info($group_moderator, $bb_cfg['default_dateformat'], $is_moderator, $from, $posts, $joined, $pm, $email, $www, $user_time, $avatar); $group_type = ''; if ($group_info['group_type'] == GROUP_OPEN) { $group_type = $lang['GROUP_OPEN']; } elseif ($group_info['group_type'] == GROUP_CLOSED) { $group_type = $lang['GROUP_CLOSED']; } elseif ($group_info['group_type'] == GROUP_HIDDEN) { $group_type = $lang['GROUP_HIDDEN']; } $i = 0; $template->assign_vars(array( 'ROW_NUMBER' => $i + ($start + 1), 'GROUP_INFO' => true, 'PAGE_TITLE' => $lang['GROUP_CONTROL_PANEL'], 'GROUP_NAME' => htmlCHR($group_info['group_name']), 'GROUP_DESCRIPTION' => bbcode2html($group_info['group_description']), 'GROUP_SIGNATURE' => bbcode2html($group_info['group_signature']), 'GROUP_AVATAR' => get_avatar(GROUP_AVATAR_MASK . $group_id, $group_info['avatar_ext_id'], true), 'GROUP_DETAILS' => $group_details, 'GROUP_TIME' => (!empty($group_info['group_time'])) ? sprintf('%s <span class="posted_since">(%s)</span>', bb_date($group_info['group_time']), delta_time($group_info['group_time'])) : $lang['NONE'], 'MOD_USER' => profile_url($group_moderator), 'MOD_AVATAR' => $avatar, 'MOD_FROM' => $from, 'MOD_JOINED' => $joined, 'MOD_POSTS' => $posts, 'MOD_PM' => $pm, 'MOD_EMAIL' => $email, 'MOD_WWW' => $www, 'MOD_TIME' => (!empty($group_info['mod_time'])) ? bb_date($group_info['mod_time']) : $lang['NONE'], 'U_SEARCH_USER' => "search.php?mode=searchuser", 'U_SEARCH_RELEASES' => "tracker.php?srg=$group_id", 'U_GROUP_RELEASES' => "group.php?view=releases&" . POST_GROUPS_URL . "=$group_id", 'U_GROUP_MEMBERS' => "group.php?view=members&" . POST_GROUPS_URL . "=$group_id", 'U_GROUP_CONFIG' => "group_edit.php?g=$group_id", 'RELEASE_GROUP' => ($group_info['release_group']) ? true : false, 'GROUP_TYPE' => $group_type, 'S_GROUP_OPEN_TYPE' => GROUP_OPEN, 'S_GROUP_CLOSED_TYPE' => GROUP_CLOSED, 'S_GROUP_HIDDEN_TYPE' => GROUP_HIDDEN, 'S_GROUP_OPEN_CHECKED' => ($group_info['group_type'] == GROUP_OPEN) ? ' checked="checked"' : '', 'S_GROUP_CLOSED_CHECKED' => ($group_info['group_type'] == GROUP_CLOSED) ? ' checked="checked"' : '', 'S_GROUP_HIDDEN_CHECKED' => ($group_info['group_type'] == GROUP_HIDDEN) ? ' checked="checked"' : '', 'S_HIDDEN_FIELDS' => $s_hidden_fields, 'S_MODE_SELECT' => $select_sort_mode, 'S_ORDER_SELECT' => $select_sort_order, 'S_GROUP_ACTION' => "group.php?" . POST_GROUPS_URL . "=$group_id", )); switch ($view_mode) { case 'releases': // TODO Correct SQL to posts with attach and limit them, optimization if (!$group_info['release_group']) { set_die_append_msg(false, false, $group_id); bb_die($lang['NOT_A_RELEASE_GROUP']); } // Count releases for pagination $all_releases = DB()->fetch_rowset(" SELECT p.topic_id, p.forum_id, p.poster_id, t.topic_title, t.topic_time, f.forum_name, u.username, u.avatar_ext_id, u.user_opt, u.user_rank FROM " . BB_POSTS . " p LEFT JOIN " . BB_TOPICS . " t ON(p.topic_id = t.topic_id) LEFT JOIN " . BB_FORUMS . " f ON(p.forum_id= f.forum_id) LEFT JOIN " . BB_USERS . " u ON(p.poster_id = u.user_id) WHERE p.poster_rg_id = $group_id ORDER BY t.topic_time DESC LIMIT $rel_limit "); $count_releases = count($all_releases); generate_pagination(GROUP_URL . $group_id . "&view=releases", $count_releases, $per_page, $start); $sql = " SELECT p.topic_id, p.forum_id, p.poster_id, t.topic_title, t.topic_time, f.forum_name, u.username, u.avatar_ext_id, u.user_opt, u.user_rank FROM " . BB_POSTS . " p LEFT JOIN " . BB_TOPICS . " t ON(p.topic_id = t.topic_id) LEFT JOIN " . BB_FORUMS . " f ON(p.forum_id= f.forum_id) LEFT JOIN " . BB_USERS . " u ON(p.poster_id = u.user_id) WHERE p.poster_rg_id = $group_id ORDER BY t.topic_time DESC LIMIT $start, $per_page "; if (!$releases = DB()->fetch_rowset($sql)) { set_die_append_msg(false, false, $group_id); bb_die($lang['NO_SEARCH_MATCH']); } foreach ($releases as $i => $release) { $row_class = !($i % 2) ? 'row1' : 'row2'; $template->assign_block_vars('releases', array( 'ROW_NUMBER' => $i + ($start + 1), 'ROW_CLASS' => $row_class, 'RELEASER' => profile_url(array('user_id' => $release['poster_id'], 'username' => $release['username'], 'user_rank' => $release['user_rank'])), 'AVATAR_IMG' => get_avatar($release['poster_id'], $release['avatar_ext_id'], !bf($release['user_opt'], 'user_opt', 'dis_avatar'), '', 50, 50), 'RELEASE_NAME' => sprintf('<a href="%s">%s</a>', TOPIC_URL . $release['topic_id'], htmlCHR($release['topic_title'])), 'RELEASE_TIME' => bb_date($release['topic_time']), 'RELEASE_FORUM' => sprintf('<a href="%s">%s</a>', FORUM_URL . $release['forum_id'], htmlCHR($release['forum_name'])), )); } $template->assign_vars(array( 'RELEASES' => true, )); break; case 'members': default: // Members $count_members = DB()->fetch_rowset(" SELECT u.username, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time FROM " . BB_USER_GROUP . " ug, " . BB_USERS . " u WHERE ug.group_id = $group_id AND ug.user_pending = 0 AND ug.user_id <> " . $group_moderator['user_id'] . " AND u.user_id = ug.user_id ORDER BY u.username "); $count_members = count($count_members); // Get user information for this group $modgroup_pending_count = 0; // Members $group_members = DB()->fetch_rowset(" SELECT u.username, u.avatar_ext_id, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, ug.user_pending, ug.user_time FROM " . BB_USER_GROUP . " ug, " . BB_USERS . " u WHERE ug.group_id = $group_id AND ug.user_pending = 0 AND ug.user_id <> " . $group_moderator['user_id'] . " AND u.user_id = ug.user_id ORDER BY u.username LIMIT $start, $per_page "); $members_count = count($group_members); generate_pagination(GROUP_URL . $group_id, $count_members, $per_page, $start); // Dump out the remaining users foreach ($group_members as $i => $member) { $user_id = $member['user_id']; generate_user_info($member, $bb_cfg['default_dateformat'], $is_moderator, $from, $posts, $joined, $pm, $email, $www, $user_time, $avatar); if ($group_info['group_type'] != GROUP_HIDDEN || $is_group_member || $is_moderator) { $row_class = !($i % 2) ? 'row1' : 'row2'; $template->assign_block_vars('member', array( 'ROW_NUMBER' => $i + ($start + 1), 'ROW_CLASS' => $row_class, 'USER' => profile_url($member), 'AVATAR_IMG' => $avatar, 'FROM' => $from, 'JOINED' => $joined, 'POSTS' => $posts, 'USER_ID' => $user_id, 'PM' => $pm, 'EMAIL' => $email, 'WWW' => $www, 'TIME' => $user_time, )); if ($is_moderator) { $template->assign_block_vars('member.switch_mod_option', array()); } } } // No group members if (!$members_count) { $template->assign_block_vars('switch_no_members', array()); } // No group members if ($group_info['group_type'] == GROUP_HIDDEN && !$is_group_member && !$is_moderator) { $template->assign_block_vars('switch_hidden_group', array()); } // Pending if ($is_moderator) { $modgroup_pending_list = DB()->fetch_rowset(" SELECT u.username, u.avatar_ext_id, u.user_rank, u.user_id, u.user_opt, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email FROM " . BB_USER_GROUP . " ug, " . BB_USERS . " u WHERE ug.group_id = $group_id AND ug.user_pending = 1 AND u.user_id = ug.user_id ORDER BY u.username LIMIT 200 "); $modgroup_pending_count = count($modgroup_pending_list); } if ($is_moderator && $modgroup_pending_list) { foreach ($modgroup_pending_list as $i => $member) { $user_id = $member['user_id']; generate_user_info($member, $bb_cfg['default_dateformat'], $is_moderator, $from, $posts, $joined, $pm, $email, $www, $user_time, $avatar); $row_class = !($i % 2) ? 'row1' : 'row2'; $user_select = '<input type="checkbox" name="member[]" value="' . $user_id . '">'; $template->assign_block_vars('pending', array( 'ROW_CLASS' => $row_class, 'AVATAR_IMG' => $avatar, 'USER' => profile_url($member), 'FROM' => $from, 'JOINED' => $joined, 'POSTS' => $posts, 'USER_ID' => $user_id, 'PM' => $pm, 'EMAIL' => $email, )); } $template->assign_vars(array( 'PENDING_USERS' => true, )); } $template->assign_vars(array('MEMBERS' => true)); } if ($is_moderator) { $template->assign_block_vars('switch_mod_option', array()); $template->assign_block_vars('switch_add_member', array()); } } print_page('group.tpl');