Skip to content
Snippets Groups Projects
getcourses.php 5.61 KiB
<?php

// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Ajax callback for the course_overview_uwmoodle block
 * Gets the user's courses and returns it to the javascript in the page
 *
 * @package    block_course_overview_uwmoodle
 * @author	   2014 John Hoopes
 * @copyright  University of Wisconsin System - Board of Regents
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

// define that this is an ajax script
define('AJAX_SCRIPT', 1);

require_once("../../config.php");

require_login();

$response = new stdClass();
$response->status = 'false';
$response->message = 'invalidrequest';


if(confirm_sesskey()) {

    // now require the block lib files
    require_once($CFG->dirroot.'/blocks/course_overview_uwmoodle/block_course_overview_uwmoodle.php');

    define('TERM_OTHER', 0);
    $blockconfig = optional_param('blockconfig', new stdClass(), PARAM_RAW);

    if(empty($blockconfig->combineongoing)){ // set conbineongoing to something for code later
        $blockconfig->combineongoing = false;
    }

    profile_load_custom_fields($USER);

    // Get user's courses and sort by term
    list($courses, $errors) = block_course_overview_uwmoodle_get_sorted_courses();

    if(!empty($errors)){
        if(debugging() && is_siteadmin()){
            $response->errors = $errors;
        }else{
            $response->errors = get_string('general_warning_message', 'block_course_overview_uwmoodle');
        }
    }

    $terms = block_course_overview_uwmoodle_group_courses_by_term($courses);

    $currentterm = block_course_overview_uwmoodle_get_current_term();
    $selectedterm = optional_param('term', $currentterm, PARAM_INT);

    if (!isset($terms[$currentterm])) {
        $terms[$currentterm] = array();
    }
    // If selectedterm is not valid, select currentterm
    if (!isset($terms[$selectedterm])) {
        $selectedterm = $currentterm;
    }

    // Get course overviews
    //$overviews = block_course_overview_uwmoodle_get_overviews($courses);
    $overviews = array(); // for now course overviews are disabled

    // Sort the terms with newest first
    block_course_overview_uwmoodle_sort_term_array($terms);

    $displayedterms = $terms;
    $othercourses = false;
    if (empty($blockconfig->combineongoing)) {
        unset($displayedterms[block_course_overview_uwmoodle::TERM_OTHER]);
        if (!empty($terms[block_course_overview_uwmoodle::TERM_OTHER])) {
            $othercourses = $terms[block_course_overview_uwmoodle::TERM_OTHER];
        }
    }

    $returntermcourses = array();
    // build return course array
    foreach($displayedterms as $termcode => $courses){

        $term = new stdClass(); // store the term code, term name, and term courses in an object
        $term->termcode = $termcode;
        $term->termname = $termstr = block_course_overview_uwmoodle_get_term_name($termcode);
        $term->courses = array();

        foreach($courses as $course){
            $returncourse = new stdClass();
            $returncourse->name = $course->fullname;
            if(get_class($course) == 'external_course'){ // external courses have their urls already defined
                $courseurl = new moodle_url($course->courseurl);
                $returncourse->lms = $course->LMS;
                $returncourse->externalcourse = 1;
            }else{
                $courseurl = new moodle_url('/course/view.php', array('id' => $course->id));
                $returncourse->lms = 'Moodle'; // local courses are always Moodle
                $returncourse->externalcourse = 0;
            }
            $returncourse->url = $courseurl->out();
            $returncourse->visible = $course->visible;
            $term->courses[] = $returncourse;
        }
        $returntermcourses[] = $term;
    }

    $returnothercourses = array();
    if($othercourses !== false){ // if there are other courses build the array of them

        foreach($othercourses as $course){
            $returncourse = new stdClass();
            $returncourse->name = $course->fullname;
            if(get_class($course) == 'external_course'){ // external courses have their urls already defined
                $courseurl = new moodle_url($course->courseurl);
                $returncourse->lms = $course->LMS;
                $returncourse->externalcourse = 1;
            }else{
                $courseurl = new moodle_url('/course/view.php', array('id' => $course->id));
                $returncourse->lms = 'Moodle'; // local courses are always Moodle
                $returncourse->externalcourse = 0;
            }
            $returncourse->url = $courseurl->out();
            $returncourse->visible = $course->visible;
            $returnothercourses[] = $returncourse;
        }

    }

    $response->status = 'true';
    $response->message = 'success';
    $response->selectedterm = $selectedterm;
    $response->termcourses = $returntermcourses;
    $response->othercourses = $returnothercourses;
    $response->nocoursesmessage = get_string('nocourses','block_course_overview_uwmoodle');
}


echo json_encode($response);