session_start(['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 = []; $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 = []; $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 = ['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 = str_short(rtrim(htmlCHR($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 .= '
  • ' . $text . '
  • '; $options .= ($data['rg']) ? '