Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
/**
18
 * My Courses.
19
 *
20
 * - each user can currently have their own page (cloned from system and then customised)
21
 * - only the user can see their own dashboard
22
 * - users can add any blocks they want
23
 *
24
 * @package    core
25
 * @subpackage my
26
 * @copyright  2021 Mathew May <mathew.solutions>
27
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
28
 */
29
 
30
require_once(__DIR__ . '/../config.php');
31
require_once($CFG->dirroot . '/my/lib.php');
32
require_once($CFG->dirroot . '/course/lib.php');
33
 
34
redirect_if_major_upgrade_required();
35
 
36
require_login();
37
 
38
$hassiteconfig = has_capability('moodle/site:config', context_system::instance());
39
if ($hassiteconfig && moodle_needs_upgrading()) {
40
    redirect(new moodle_url('/admin/index.php'));
41
}
42
 
43
$context = context_system::instance();
44
 
45
// Get the My Moodle page info.  Should always return something unless the database is broken.
46
if (!$currentpage = my_get_page(null, MY_PAGE_PUBLIC, MY_PAGE_COURSES)) {
47
    throw new Exception('mymoodlesetup');
48
}
49
 
50
// Start setting up the page.
51
$PAGE->set_context($context);
52
$PAGE->set_url('/my/courses.php');
53
$PAGE->add_body_classes(['limitedwidth', 'page-mycourses']);
54
$PAGE->set_pagelayout('mycourses');
55
 
56
$PAGE->set_pagetype('my-index');
57
$PAGE->blocks->add_region('content');
58
$PAGE->set_subpage($currentpage->id);
59
$PAGE->set_title(get_string('mycourses'));
60
$PAGE->set_heading(get_string('mycourses'));
61
 
62
// No blocks can be edited on this page (including by managers/admins) because:
63
// - Course overview is a fixed item on the page and cannot be moved/removed.
64
// - We do not want new blocks on the page.
65
// - Only global blocks (if any) should be visible on the site panel, and cannot be moved int othe centre pane.
66
$PAGE->force_lock_all_blocks();
67
 
68
// Force the add block out of the default area.
69
$PAGE->theme->addblockposition  = BLOCK_ADDBLOCK_POSITION_CUSTOM;
70
 
71
// Add course management if the user has the capabilities for it.
72
$coursecat = core_course_category::user_top();
73
$coursemanagemenu = [];
74
if ($coursecat && ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['create']))) {
75
    // The user has the capability to create course.
76
    $coursemanagemenu['newcourseurl'] = new moodle_url('/course/edit.php', ['category' => $category->id]);
77
}
78
if ($coursecat && ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['manage']))) {
79
    // The user has the capability to manage the course category.
80
    $coursemanagemenu['manageurl'] = new moodle_url('/course/management.php', ['categoryid' => $category->id]);
81
}
82
if ($coursecat) {
83
    $category = core_course_category::get_nearest_editable_subcategory($coursecat, ['moodle/course:request']);
84
    if ($category && $category->can_request_course()) {
85
        $coursemanagemenu['courserequesturl'] = new moodle_url('/course/request.php', ['categoryid' => $category->id]);
86
 
87
    }
88
}
89
if (!empty($coursemanagemenu)) {
90
    // Render the course management menu.
91
    $PAGE->add_header_action($OUTPUT->render_from_template('my/dropdown', $coursemanagemenu));
92
}
93
 
94
echo $OUTPUT->header();
95
 
96
if (core_userfeedback::should_display_reminder()) {
97
    core_userfeedback::print_reminder_block();
98
}
99
 
100
echo $OUTPUT->custom_block_region('content');
101
 
102
echo $OUTPUT->footer();
103
 
104
// Trigger dashboard has been viewed event.
105
$eventparams = array('context' => $context);
106
$event = \core\event\mycourses_viewed::create($eventparams);
107
$event->trigger();