$redirect_uri = "admin_users.php?webtag={$webtag}&page={$page}"; $redirect_uri .= "&sort_by={$sort_by}&sort_dir={$sort_dir}&filter={$filter}"; $redirect_uri .= "&user_search=%s&approved=true"; header_redirect(sprintf($redirect_uri, htmlentities_array($user_search))); exit; } } } } } } } if (isset($user_search) && strlen($user_search) > 0) { $admin_user_array = admin_user_search($user_search, $sort_by, $sort_dir, $filter, $page); } else { $admin_user_array = admin_user_get_all($sort_by, $sort_dir, $filter, $page); } if (isset($error_msg_array) && sizeof($error_msg_array) > 0) { html_display_error_array($error_msg_array, '86%', 'center'); } else { if (isset($_GET['kicked'])) { html_display_success_msg(gettext("Successfully ended sessions for selected users"), '86%', 'center'); } else { if (isset($_GET['approved'])) { html_display_success_msg(gettext("Successfully approved selected users"), '86%', 'center'); } else { if (sizeof($admin_user_array['user_array']) < 1) { if (isset($user_search) && strlen($user_search) > 0) { html_display_error_msg(gettext("Your search did not return any matches. Try simplifying your search parameters and try again."), '86%', 'center'); } else { html_display_error_msg(gettext("No user accounts matching filter"), '86%', 'center');
function admin_user_get_all($sort_by = 'LAST_VISIT', $sort_dir = 'ASC', $filter = ADMIN_USER_FILTER_NONE, $page = 1) { if (!($db = db::get())) { return false; } $sort_by_array = array('LOGON' => 'USER.LOGON', 'LAST_VISIT' => 'USER_FORUM.LAST_VISIT', 'REGISTERED' => 'USER.REGISTERED', 'ACTIVE' => 'SESSIONS.ID'); if (!in_array($sort_dir, array('ASC', 'DESC'))) { $sort_dir = 'ASC'; } if (!is_numeric($page) || $page < 1) { $page = 1; } if (!is_numeric($filter)) { $filter = ADMIN_USER_FILTER_NONE; } $offset = calculate_page_offset($page, 10); if (!($forum_fid = get_forum_fid())) { $forum_fid = 0; } if (in_array($sort_by, array_keys($sort_by_array))) { $sort_by = $sort_by_array[$sort_by]; } else { $sort_by = 'USER_FORUM.LAST_VISIT'; } $session_gc_maxlifetime = ini_get('session.gc_maxlifetime'); $session_cutoff_datetime = date(MYSQL_DATETIME, time() - $session_gc_maxlifetime); $user_get_all_array = array(); $up_banned = USER_PERM_BANNED; switch ($filter) { case ADMIN_USER_FILTER_ONLINE: $user_fetch_sql = "WHERE SESSIONS.ID IS NOT NULL"; break; case ADMIN_USER_FILTER_OFFLINE: $user_fetch_sql = "WHERE SESSIONS.ID IS NULL"; break; case ADMIN_USER_FILTER_APPROVAL: $user_fetch_sql = "WHERE USER.APPROVED IS NULL"; break; case ADMIN_USER_FILTER_BANNED: $user_fetch_sql = "WHERE PERMS.PERM & {$up_banned} > 0"; break; default: $user_fetch_sql = ""; break; } $sql = "SELECT SQL_CALC_FOUND_ROWS USER.UID, USER.LOGON, USER.NICKNAME, SESSIONS.ID, "; $sql .= "SESSIONS.REFERER, UNIX_TIMESTAMP(USER.REGISTERED) AS REGISTERED, "; $sql .= "UNIX_TIMESTAMP(USER_FORUM.LAST_VISIT) AS LAST_VISIT "; $sql .= "FROM USER LEFT JOIN SESSIONS ON (SESSIONS.UID = USER.UID "; $sql .= "AND SESSIONS.TIME >= CAST('{$session_cutoff_datetime}' AS DATETIME)) "; $sql .= "LEFT JOIN USER_FORUM USER_FORUM ON (USER_FORUM.UID = USER.UID "; $sql .= "AND USER_FORUM.FID = {$forum_fid}) LEFT JOIN (SELECT GROUP_USERS.UID, "; $sql .= "GROUP_PERMS.FORUM, GROUP_PERMS.FID, BIT_OR(GROUP_PERMS.PERM) AS PERM "; $sql .= "FROM GROUP_USERS INNER JOIN GROUPS ON (GROUPS.GID = GROUP_USERS.GID) "; $sql .= "INNER JOIN GROUP_PERMS ON (GROUP_PERMS.GID = GROUPS.GID) "; $sql .= "WHERE GROUP_PERMS.FORUM IN (0, {$forum_fid}) AND GROUP_PERMS.FID = 0 "; $sql .= "GROUP BY GROUP_USERS.UID) AS PERMS ON (PERMS.UID = USER_FORUM.UID) "; $sql .= "{$user_fetch_sql} GROUP BY USER.UID ORDER BY {$sort_by} {$sort_dir} "; $sql .= "LIMIT {$offset}, 10"; if (!($result = $db->query($sql))) { return false; } $sql = "SELECT FOUND_ROWS() AS ROW_COUNT"; if (!($result_count = $db->query($sql))) { return false; } list($user_get_all_count) = $result_count->fetch_row(); if ($result->num_rows == 0 && $user_get_all_count > 0 && $page > 1) { return admin_user_get_all($sort_by, $sort_dir, $filter, $page - 1); } while ($user_data = $result->fetch_assoc()) { $user_get_all_array[$user_data['UID']] = $user_data; } return array('user_count' => $user_get_all_count, 'user_array' => $user_get_all_array); }