Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | 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');
1441 ariadna 55
$PAGE->set_docs_path('mycourses');
1 efrain 56
 
57
$PAGE->set_pagetype('my-index');
58
$PAGE->blocks->add_region('content');
59
$PAGE->set_subpage($currentpage->id);
60
$PAGE->set_title(get_string('mycourses'));
61
$PAGE->set_heading(get_string('mycourses'));
62
 
63
// No blocks can be edited on this page (including by managers/admins) because:
64
// - Course overview is a fixed item on the page and cannot be moved/removed.
65
// - We do not want new blocks on the page.
66
// - Only global blocks (if any) should be visible on the site panel, and cannot be moved int othe centre pane.
67
$PAGE->force_lock_all_blocks();
68
 
69
// Force the add block out of the default area.
70
$PAGE->theme->addblockposition  = BLOCK_ADDBLOCK_POSITION_CUSTOM;
71
 
72
// Add course management if the user has the capabilities for it.
73
$coursecat = core_course_category::user_top();
74
$coursemanagemenu = [];
1441 ariadna 75
// Only display the action menu if the user has courses (otherwise, the buttons will be displayed in the zero state).
76
if (count(enrol_get_all_users_courses($USER->id, true)) > 0) {
77
    if ($coursecat && ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['create']))) {
78
        // The user has the capability to create course.
79
        $coursemanagemenu['newcourseurl'] = new moodle_url('/course/edit.php', ['category' => $category->id]);
1 efrain 80
    }
1441 ariadna 81
    if ($coursecat && ($category = core_course_category::get_nearest_editable_subcategory($coursecat, ['manage']))) {
82
        // The user has the capability to manage the course category.
83
        $coursemanagemenu['manageurl'] = new moodle_url('/course/management.php', ['categoryid' => $category->id]);
84
    }
85
    if ($coursecat) {
86
        $category = core_course_category::get_nearest_editable_subcategory($coursecat, ['moodle/course:request']);
87
        if ($category && $category->can_request_course()) {
88
            $coursemanagemenu['courserequesturl'] = new moodle_url('/course/request.php', ['categoryid' => $category->id]);
89
        }
90
    }
1 efrain 91
}
92
if (!empty($coursemanagemenu)) {
93
    // Render the course management menu.
94
    $PAGE->add_header_action($OUTPUT->render_from_template('my/dropdown', $coursemanagemenu));
95
}
96
 
97
echo $OUTPUT->header();
98
 
99
if (core_userfeedback::should_display_reminder()) {
100
    core_userfeedback::print_reminder_block();
101
}
102
 
103
echo $OUTPUT->custom_block_region('content');
104
 
105
echo $OUTPUT->footer();
106
 
107
// Trigger dashboard has been viewed event.
108
$eventparams = array('context' => $context);
109
$event = \core\event\mycourses_viewed::create($eventparams);
110
$event->trigger();