See Release Notes
Long Term Support Release
Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401] [Versions 400 and 401]
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 * Moodle frontpage. 19 * 20 * @package core 21 * @copyright 1999 onwards Martin Dougiamas (http://dougiamas.com) 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 if (!file_exists('./config.php')) { 26 header('Location: install.php'); 27 die; 28 } 29 30 require_once('config.php'); 31 require_once($CFG->dirroot .'/course/lib.php'); 32 require_once($CFG->libdir .'/filelib.php'); 33 34 redirect_if_major_upgrade_required(); 35 36 $urlparams = array(); 37 if (!empty($CFG->defaulthomepage) && 38 ($CFG->defaulthomepage == HOMEPAGE_MY || $CFG->defaulthomepage == HOMEPAGE_MYCOURSES) && 39 optional_param('redirect', 1, PARAM_BOOL) === 0 40 ) { 41 $urlparams['redirect'] = 0; 42 } 43 $PAGE->set_url('/', $urlparams); 44 $PAGE->set_pagelayout('frontpage'); 45 $PAGE->add_body_class('limitedwidth'); 46 $PAGE->set_other_editing_capability('moodle/course:update'); 47 $PAGE->set_other_editing_capability('moodle/course:manageactivities'); 48 $PAGE->set_other_editing_capability('moodle/course:activityvisibility'); 49 50 // Prevent caching of this page to stop confusion when changing page after making AJAX changes. 51 $PAGE->set_cacheable(false); 52 53 require_course_login($SITE); 54 55 $hasmaintenanceaccess = has_capability('moodle/site:maintenanceaccess', context_system::instance()); 56 57 // If the site is currently under maintenance, then print a message. 58 if (!empty($CFG->maintenance_enabled) and !$hasmaintenanceaccess) { 59 print_maintenance_message(); 60 } 61 62 $hassiteconfig = has_capability('moodle/site:config', context_system::instance()); 63 64 if ($hassiteconfig && moodle_needs_upgrading()) { 65 redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php'); 66 } 67 68 // If site registration needs updating, redirect. 69 \core\hub\registration::registration_reminder('/index.php'); 70 71 if (get_home_page() != HOMEPAGE_SITE) { 72 // Redirect logged-in users to My Moodle overview if required. 73 $redirect = optional_param('redirect', 1, PARAM_BOOL); 74 if (optional_param('setdefaulthome', false, PARAM_BOOL)) { 75 set_user_preference('user_home_page_preference', HOMEPAGE_SITE); 76 } else if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_MY) && $redirect === 1) { 77 // At this point, dashboard is enabled so we don't need to check for it (otherwise, get_home_page() won't return it). 78 redirect($CFG->wwwroot .'/my/'); 79 } else if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_MYCOURSES) && $redirect === 1) { 80 redirect($CFG->wwwroot .'/my/courses.php'); 81 } else if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_USER)) { 82 $frontpagenode = $PAGE->settingsnav->find('frontpage', null); 83 if ($frontpagenode) { 84 $frontpagenode->add( 85 get_string('makethismyhome'), 86 new moodle_url('/', array('setdefaulthome' => true)), 87 navigation_node::TYPE_SETTING); 88 } else { 89 $frontpagenode = $PAGE->settingsnav->add(get_string('frontpagesettings'), null, navigation_node::TYPE_SETTING, null); 90 $frontpagenode->force_open(); 91 $frontpagenode->add(get_string('makethismyhome'), 92 new moodle_url('/', array('setdefaulthome' => true)), 93 navigation_node::TYPE_SETTING); 94 } 95 } 96 } 97 98 // Trigger event. 99 course_view(context_course::instance(SITEID)); 100 101 $PAGE->set_pagetype('site-index'); 102 $PAGE->set_docs_path(''); 103 $editing = $PAGE->user_is_editing(); 104 $PAGE->set_title(get_string('home')); 105 $PAGE->set_heading($SITE->fullname); 106 $PAGE->set_secondary_active_tab('coursehome'); 107 108 $courserenderer = $PAGE->get_renderer('core', 'course'); 109 110 if ($hassiteconfig) { 111 $editurl = new moodle_url('/course/view.php', ['id' => SITEID, 'sesskey' => sesskey()]); 112 $editbutton = $OUTPUT->edit_button($editurl); 113 $PAGE->set_button($editbutton); 114 } 115 116 echo $OUTPUT->header(); 117 118 $siteformatoptions = course_get_format($SITE)->get_format_options(); 119 $modinfo = get_fast_modinfo($SITE); 120 $modnamesused = $modinfo->get_used_module_names(); 121 122 // Print Section or custom info. 123 if (!empty($CFG->customfrontpageinclude)) { 124 // Pre-fill some variables that custom front page might use. 125 $modnames = get_module_types_names(); 126 $modnamesplural = get_module_types_names(true); 127 $mods = $modinfo->get_cms(); 128 129 include($CFG->customfrontpageinclude); 130 131 } else if ($siteformatoptions['numsections'] > 0) { 132 echo $courserenderer->frontpage_section1(); 133 } 134 // Include course AJAX. 135 include_course_ajax($SITE, $modnamesused); 136 137 echo $courserenderer->frontpage(); 138 139 if ($editing && has_capability('moodle/course:create', context_system::instance())) { 140 echo $courserenderer->add_new_course_button(); 141 } 142 echo $OUTPUT->footer();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body