Example #1
0
  * - 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 = [];