* - taking: An array of courses that are being taken in the same * term. Ignored if `qualified` not set. * * Returns: * <response e="0"> * <courses> * <!-- One course element per course in the result. --> * <course>...</course> * </courses> * </response> */ $q = new Query('Course'); $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();
<?php require_once 'lib/db.php'; require_once 'lib/Course.php'; require_once 'lib/CourseOffering.php'; switch ($_SERVER['REQUEST_METHOD']) { case 'GET': $q = new Query('CourseOffering'); $q->select_object('CourseOffering'); $q->where_startswith(CourseOffering::course_code, 'WGST'); $q->execute(); $r = '<response e="0"><courses>'; foreach ($q->fetchAllScalar() as $co) { $r .= $co->to_xml(); } $r .= '</courses></response>'; header('Content-Type: text/xml; charset=utf-8'); echo $r; break; case 'POST': /* * Wrapper for fgetcsv() so we have a single place * to pass format arguments. */ function gcsv($fd) { return fgetcsv($fd, 0, ';'); } $db->beginTransaction(); $added = 0; $coursecache = [];