MDL-25235 fixed param type for OS paths
[moodle.git] / blocks / course_overview / block_course_overview.php
1 <?php
3 // This file is part of Moodle - http://moodle.org/
4 //
5 // Moodle is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // Moodle is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
18 /**
19  * Course overview block
20  *
21  * Currently, just a copy-and-paste from the old My Moodle.
22  *
23  * @package   blocks
24  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25  */
27 require_once($CFG->dirroot.'/lib/weblib.php');
28 require_once($CFG->dirroot . '/lib/formslib.php');
30 class block_course_overview extends block_base {
31     /**
32      * block initializations
33      */
34     public function init() {
35         $this->title   = get_string('pluginname', 'block_course_overview');
36     }
38     /**
39      * block contents
40      *
41      * @return object
42      */
43     public function get_content() {
44         global $USER, $CFG;
45         if($this->content !== NULL) {
46             return $this->content;
47         }
49         $this->content = new stdClass();
50         $this->content->text = '';
51         $this->content->footer = '';
53         $content = array();
55         // limits the number of courses showing up
56         $courses_limit = 21;
57         // FIXME: this should be a block setting, rather than a global setting
58         if (isset($CFG->mycoursesperpage)) {
59             $courses_limit = $CFG->mycoursesperpage;
60         }
62         $morecourses = false;
63         if ($courses_limit > 0) {
64             $courses_limit = $courses_limit + 1;
65         }
67         $courses = enrol_get_my_courses('id, shortname', 'visible DESC,sortorder ASC', $courses_limit);
68         $site = get_site();
69         $course = $site; //just in case we need the old global $course hack
71         if (($courses_limit > 0) && (count($courses) >= $courses_limit)) {
72             //remove the 'marker' course that we retrieve just to see if we have more than $courses_limit
73             array_pop($courses);
74             $morecourses = true;
75         }
78         if (array_key_exists($site->id,$courses)) {
79             unset($courses[$site->id]);
80         }
82         foreach ($courses as $c) {
83             if (isset($USER->lastcourseaccess[$c->id])) {
84                 $courses[$c->id]->lastaccess = $USER->lastcourseaccess[$c->id];
85             } else {
86                 $courses[$c->id]->lastaccess = 0;
87             }
88         }
90         if (empty($courses)) {
91             $content[] = get_string('nocourses','my');
92         } else {
93             ob_start();
95             require_once $CFG->dirroot."/course/lib.php";
96             print_overview($courses);
98             $content[] = ob_get_contents();
99             ob_end_clean();
100         }
102         // if more than 20 courses
103         if ($morecourses) {
104             $content[] = '<br />...';
105         }
107         $this->content->text = implode($content);
109         return $this->content;
110     }
112     /**
113      * allow the block to have a configuration page
114      *
115      * @return boolean
116      */
117     public function has_config() {
118         return false;
119     }
121     /**
122      * locations where block can be displayed
123      *
124      * @return array
125      */
126     public function applicable_formats() {
127         return array('my-index'=>true);
128     }
130 ?>