$q->select_object('Course'); // Filter based on course code (or prefix thereof) if (isset($_GET['code'])) { $q->where_startswith(Course::code, strtoupper($_GET['code'])); } // Filter where dependancies are satisfied. if (isset($_GET['qualified'])) { $completed = isset($_GET['completed']) ? $_GET['completed'] : []; $taking = isset($_GET['taking']) ? $_GET['taking'] : []; foreach ($completed as &$c) { $c = strtoupper($c); } foreach ($taking as &$c) { $c = strtoupper($c); } $preqquery = Course::query_prerequisites(Course::code, $completed, $taking); $q->where_exists($preqquery, false); } $q->execute(); header('Content-Type: text/xml; charset=utf-8'); echo '<response e="0"><courses>'; foreach ($q->fetchAllScalar() as $course) { echo $course->to_xml(); } echo '</courses></response>'; break; default: header('Content-Type: text/xml; charset=utf-8'); http_response_code(405); echo '<response e="1" msg="Method must be GET."/>'; }