function getDemoList($startRange, $banCount, $sortBy, $sortDirection, $searchText) { $searchText = trim($searchText); // Remove whitespace from search text $searchJoin = ""; // Prevent SQL injection $sortBy = addslashes($sortBy); $sortDirection = addslashes($sortDirection); $searchText = addslashes($searchText); // Prevent SQL Injection if ($searchText != null && $searchText != "") { $searchJoin = " (d.steam_id LIKE '%" . $searchText . "%' OR d.demo_name LIKE '%" . $searchText . "%') "; } // Use LEFT JOIN so that bad reasons or serverids still display on the ban list, but as empty values // Get list of all demos that fit the criteria $demoList = "SELECT d.demo_id, d.steam_id, COALESCE(s.name, 'Bad Server ID') AS servername, d.server_id, d.add_date, r.reason,\n d.reason_id, d.demo_name, d.offender_name, d.uploader_name, d.uploader_steam_id,\n (SELECT count(1) FROM gban_ban b WHERE b.steam_id = d.steam_id and b.active = 1) as banned\n FROM gban_demo d\n LEFT JOIN gban_reason r ON d.reason_id = r.reason_id\n LEFT JOIN gban_servers s ON d.server_id = s.server_id "; if (!empty($searchJoin)) { $demoList .= " WHERE " . $searchJoin; } $demoList .= "ORDER BY {$sortBy} {$sortDirection}"; if ($this->bansPerPage > 0) { $this->endRange = $this->bansPerPage; $demoList .= " LIMIT " . $startRange . ", " . $this->endRange; } $this->db->sql_query($demoList); $demosArray = $this->db->get_array(); $demos = array(); for ($i = 0; $i < count($demosArray); $i++) { $demo = new Demo(); $demo->setDemoId($demosArray[$i]['demo_id']); $demo->setSteamId($demosArray[$i]['steam_id']); $demo->setDemoName($demosArray[$i]['demo_name']); $demo->setServer($demosArray[$i]['servername']); $demo->setServerId($demosArray[$i]['server_id']); $demo->setAddDate($demosArray[$i]['add_date']); $demo->setReason($demosArray[$i]['reason']); $demo->setReasonId($demosArray[$i]['reason_id']); $demo->setOffenderName($demosArray[$i]['offender_name']); $demo->setUploaderName($demosArray[$i]['uploader_name']); $demo->setUploaderSteamId($demosArray[$i]['uploader_steam_id']); $demo->setBanned($demosArray[$i]['banned']); // Can only be 0 or 1 array_push($demos, $demo); // Add the demo object to the array } return $demos; }