. /** * Course overview block * * Currently, just a copy-and-paste from the old My Moodle. * * @package blocks * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once($CFG->dirroot.'/lib/weblib.php'); require_once($CFG->dirroot . '/lib/formslib.php'); class block_course_overview extends block_base { /** * block initializations */ public function init() { $this->title = get_string('pluginname', 'block_course_overview'); } /** * block contents * * @return object */ public function get_content() { global $USER, $CFG; if($this->content !== NULL) { return $this->content; } $this->content = new stdClass(); $this->content->text = ''; $this->content->footer = ''; $content = array(); // limits the number of courses showing up $courses_limit = 21; // FIXME: this should be a block setting, rather than a global setting if (isset($CFG->mycoursesperpage)) { $courses_limit = $CFG->mycoursesperpage; } $morecourses = false; if ($courses_limit > 0) { $courses_limit = $courses_limit + 1; } $courses = enrol_get_my_courses('id, shortname, modinfo', 'visible DESC,sortorder ASC', $courses_limit); $site = get_site(); $course = $site; //just in case we need the old global $course hack if (is_enabled_auth('mnet')) { $remote_courses = get_my_remotecourses(); } if (empty($remote_courses)) { $remote_courses = array(); } if (($courses_limit > 0) && (count($courses)+count($remote_courses) >= $courses_limit)) { // get rid of any remote courses that are above the limit $remote_courses = array_slice($remote_courses, 0, $courses_limit - count($courses), true); if (count($courses) >= $courses_limit) { //remove the 'marker' course that we retrieve just to see if we have more than $courses_limit array_pop($courses); } $morecourses = true; } if (array_key_exists($site->id,$courses)) { unset($courses[$site->id]); } foreach ($courses as $c) { if (isset($USER->lastcourseaccess[$c->id])) { $courses[$c->id]->lastaccess = $USER->lastcourseaccess[$c->id]; } else { $courses[$c->id]->lastaccess = 0; } } if (empty($courses) && empty($remote_courses)) { $content[] = get_string('nocourses','my'); } else { ob_start(); require_once $CFG->dirroot."/course/lib.php"; print_overview($courses, $remote_courses); $content[] = ob_get_contents(); ob_end_clean(); } // if more than 20 courses if ($morecourses) { $content[] = '
...'; } $this->content->text = implode($content); return $this->content; } /** * allow the block to have a configuration page * * @return boolean */ public function has_config() { return false; } /** * locations where block can be displayed * * @return array */ public function applicable_formats() { return array('my-index'=>true); } } ?>