*
* This file is a part of slate_permutate.
*
* slate_permutate is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* slate_permutate is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with slate_permutate. If not, see .
*/
/**
* \file
* This file is an endpoint for generic AJAX requests (as opposed to
* autocompletion of course names).
*/
require_once('inc/school.inc');
require_once('inc/class.page.php');
require_once('inc/class.course.inc');
page::session_start();
/* should the following block of code be moved into a proposed Page::json()? */
if (isset($_REQUEST['txt'])) {
header('Content-Type: text/plain; encoding=utf-8');
}
else {
header('Content-Type: application/json; encoding=utf-8');
}
/**
* \brief
* Wrap an error message up in JSON and send it.
*
* \param $message
* A valid XHTML fragment which will be wrapped in
*/
function slate_permutate_json_error($message)
{
echo json_encode(array('success' => FALSE, 'message' => '' . $message . '
'));
exit;
}
/**
* \brief
* Send a successful JSON response.
*
* \param $data
* A PHP array to be encoded with json_encode() and sent as
* obj.data.
*/
function slate_permutate_json_success(array $data = array())
{
echo json_encode(array('success' => TRUE, 'data' => $data));
exit;
}
if (isset($_REQUEST['school_registration_html']))
{
if (!empty($_REQUEST['school']))
$school = school_load($_REQUEST['school']);
if (empty($school))
{
$school = school_load_guess();
if (empty($school))
slate_permutate_json_error('Unable to load any school.');
}
$page = page::page_create('');
$courses = array();
if (!empty($_REQUEST['courses']) && is_array($_REQUEST['courses']))
{
/*
* The below course deserialization blob should be moved into
* the Course object.
*/
foreach ($_REQUEST['courses'] as $course_json)
{
$course = Course::from_json_array($course_json);
if (!empty($course))
$courses[] = $course;
}
}
$html = school_registration_html($page, $school, $courses);
if (empty($html))
slate_permutate_json_error('School\'s registration information producer returned no data.');
slate_permutate_json_success(array('html' => $html));
}
slate_permutate_json_error('Unrecognized command.');