Commit | Line | Data |
---|---|---|
d9cb06dc | 1 | <?php |
2 | ||
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/>. | |
17 | ||
18 | /** | |
2c49fb4c | 19 | * Lists the course categories |
d9cb06dc | 20 | * |
21 | * @copyright 1999 Martin Dougiamas http://dougiamas.com | |
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | |
23 | * @package course | |
24 | */ | |
25 | ||
26 | require_once("../config.php"); | |
30142c19 | 27 | require_once($CFG->dirroot. '/course/lib.php'); |
d9cb06dc | 28 | |
30142c19 | 29 | $categoryid = optional_param('categoryid', 0, PARAM_INT); // Category id |
3f77c158 | 30 | $site = get_site(); |
d2b6ba70 | 31 | |
beff3806 MG |
32 | if ($CFG->forcelogin) { |
33 | require_login(); | |
34 | } | |
35 | ||
36 | $heading = $site->fullname; | |
30142c19 | 37 | if ($categoryid) { |
beff3806 | 38 | $category = core_course_category::get($categoryid); // This will validate access. |
30142c19 MG |
39 | $PAGE->set_category_by_id($categoryid); |
40 | $PAGE->set_url(new moodle_url('/course/index.php', array('categoryid' => $categoryid))); | |
9dd85edf | 41 | $PAGE->set_pagetype('course-index-category'); |
beff3806 MG |
42 | $heading = $category->get_formatted_name(); |
43 | } else if ($category = core_course_category::user_top()) { | |
44 | // Check if there is only one top-level category, if so use that. | |
45 | $categoryid = $category->id; | |
46 | $PAGE->set_url('/course/index.php'); | |
47 | if ($category->is_uservisible() && $categoryid) { | |
f04dda10 | 48 | $PAGE->set_category_by_id($categoryid); |
beff3806 MG |
49 | $PAGE->set_context($category->get_context()); |
50 | if (!core_course_category::is_simple_site()) { | |
51 | $PAGE->set_url(new moodle_url('/course/index.php', array('categoryid' => $categoryid))); | |
52 | $heading = $category->get_formatted_name(); | |
53 | } | |
f04dda10 MN |
54 | } else { |
55 | $PAGE->set_context(context_system::instance()); | |
56 | } | |
beff3806 MG |
57 | $PAGE->set_pagetype('course-index-category'); |
58 | } else { | |
59 | throw new moodle_exception('cannotviewcategory'); | |
30142c19 | 60 | } |
29aab4ac | 61 | |
30142c19 | 62 | $PAGE->set_pagelayout('coursecategory'); |
f4b571ab | 63 | $courserenderer = $PAGE->get_renderer('core', 'course'); |
f474a4e5 | 64 | |
beff3806 | 65 | $PAGE->set_heading($heading); |
30142c19 | 66 | $content = $courserenderer->course_category($categoryid); |
d9cb06dc | 67 | |
8e57a6df MG |
68 | echo $OUTPUT->header(); |
69 | echo $OUTPUT->skip_link_target(); | |
70 | echo $content; | |
d9cb06dc | 71 | |
768e3613 SB |
72 | // Trigger event, course category viewed. |
73 | $eventparams = array('context' => $PAGE->context, 'objectid' => $categoryid); | |
74 | $event = \core\event\course_category_viewed::create($eventparams); | |
75 | $event->trigger(); | |
76 | ||
d9cb06dc | 77 | echo $OUTPUT->footer(); |