. /** * Moodle frontpage. * * @package core * @copyright 1999 onwards Martin Dougiamas (http://dougiamas.com) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ if (!file_exists('./config.php')) { header('Location: install.php'); die; } require_once('config.php'); require_once($CFG->dirroot .'/course/lib.php'); require_once($CFG->libdir .'/filelib.php'); redirect_if_major_upgrade_required(); $urlparams = array(); if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_MY) && optional_param('redirect', 1, PARAM_BOOL) === 0) { $urlparams['redirect'] = 0; } $PAGE->set_url('/', $urlparams); $PAGE->set_pagelayout('frontpage'); $PAGE->set_other_editing_capability('moodle/course:update'); $PAGE->set_other_editing_capability('moodle/course:manageactivities'); $PAGE->set_other_editing_capability('moodle/course:activityvisibility'); // Prevent caching of this page to stop confusion when changing page after making AJAX changes. $PAGE->set_cacheable(false); require_course_login($SITE); $hasmaintenanceaccess = has_capability('moodle/site:maintenanceaccess', context_system::instance()); // If the site is currently under maintenance, then print a message. if (!empty($CFG->maintenance_enabled) and !$hasmaintenanceaccess) { print_maintenance_message(); } $hassiteconfig = has_capability('moodle/site:config', context_system::instance()); if ($hassiteconfig && moodle_needs_upgrading()) { redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php'); } // If site registration needs updating, redirect. \core\hub\registration::registration_reminder('/index.php'); if (get_home_page() != HOMEPAGE_SITE) { // Redirect logged-in users to My Moodle overview if required. $redirect = optional_param('redirect', 1, PARAM_BOOL); if (optional_param('setdefaulthome', false, PARAM_BOOL)) { set_user_preference('user_home_page_preference', HOMEPAGE_SITE); } else if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_MY) && $redirect === 1) { redirect($CFG->wwwroot .'/my/'); } else if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_USER)) { $frontpagenode = $PAGE->settingsnav->find('frontpage', null); if ($frontpagenode) { $frontpagenode->add( get_string('makethismyhome'), new moodle_url('/', array('setdefaulthome' => true)), navigation_node::TYPE_SETTING); } else { $frontpagenode = $PAGE->settingsnav->add(get_string('frontpagesettings'), null, navigation_node::TYPE_SETTING, null); $frontpagenode->force_open(); $frontpagenode->add(get_string('makethismyhome'), new moodle_url('/', array('setdefaulthome' => true)), navigation_node::TYPE_SETTING); } } } // Trigger event. course_view(context_course::instance(SITEID)); // If the hub plugin is installed then we let it take over the homepage here. if (file_exists($CFG->dirroot.'/local/hub/lib.php') and get_config('local_hub', 'hubenabled')) { require_once($CFG->dirroot.'/local/hub/lib.php'); $hub = new local_hub(); $continue = $hub->display_homepage(); // Function display_homepage() returns true if the hub home page is not displayed // ...mostly when search form is not displayed for not logged users. if (empty($continue)) { exit; } } $PAGE->set_pagetype('site-index'); $PAGE->set_docs_path(''); $editing = $PAGE->user_is_editing(); $PAGE->set_title($SITE->fullname); $PAGE->set_heading($SITE->fullname); $courserenderer = $PAGE->get_renderer('core', 'course'); echo $OUTPUT->header(); // Print Section or custom info. $siteformatoptions = course_get_format($SITE)->get_format_options(); $modinfo = get_fast_modinfo($SITE); $modnames = get_module_types_names(); $modnamesplural = get_module_types_names(true); $modnamesused = $modinfo->get_used_module_names(); $mods = $modinfo->get_cms(); if (!empty($CFG->customfrontpageinclude)) { include($CFG->customfrontpageinclude); } else if ($siteformatoptions['numsections'] > 0) { echo $courserenderer->frontpage_section1(); } // Include course AJAX. include_course_ajax($SITE, $modnamesused); if (isloggedin() and !isguestuser() and isset($CFG->frontpageloggedin)) { $frontpagelayout = $CFG->frontpageloggedin; } else { $frontpagelayout = $CFG->frontpage; } foreach (explode(',', $frontpagelayout) as $v) { switch ($v) { // Display the main part of the front page. case FRONTPAGENEWS: if ($SITE->newsitems) { // Print forums only when needed. require_once($CFG->dirroot .'/mod/forum/lib.php'); if (! $newsforum = forum_get_course_forum($SITE->id, 'news')) { print_error('cannotfindorcreateforum', 'forum'); } // Fetch news forum context for proper filtering to happen. $newsforumcm = get_coursemodule_from_instance('forum', $newsforum->id, $SITE->id, false, MUST_EXIST); $newsforumcontext = context_module::instance($newsforumcm->id, MUST_EXIST); $forumname = format_string($newsforum->name, true, array('context' => $newsforumcontext)); echo html_writer::link('#skipsitenews', get_string('skipa', 'access', core_text::strtolower(strip_tags($forumname))), array('class' => 'skip-block skip')); // Wraps site news forum in div container. echo html_writer::start_tag('div', array('id' => 'site-news-forum')); if (isloggedin()) { $SESSION->fromdiscussion = $CFG->wwwroot; $subtext = ''; if (\mod_forum\subscriptions::is_subscribed($USER->id, $newsforum)) { if (!\mod_forum\subscriptions::is_forcesubscribed($newsforum)) { $subtext = get_string('unsubscribe', 'forum'); } } else { $subtext = get_string('subscribe', 'forum'); } echo $OUTPUT->heading($forumname); $suburl = new moodle_url('/mod/forum/subscribe.php', array('id' => $newsforum->id, 'sesskey' => sesskey())); echo html_writer::tag('div', html_writer::link($suburl, $subtext), array('class' => 'subscribelink')); } else { echo $OUTPUT->heading($forumname); } forum_print_latest_discussions($SITE, $newsforum, $SITE->newsitems, 'plain', 'p.modified DESC'); // End site news forum div container. echo html_writer::end_tag('div'); echo html_writer::tag('span', '', array('class' => 'skip-block-to', 'id' => 'skipsitenews')); } break; case FRONTPAGEENROLLEDCOURSELIST: $mycourseshtml = $courserenderer->frontpage_my_courses(); if (!empty($mycourseshtml)) { echo html_writer::link('#skipmycourses', get_string('skipa', 'access', core_text::strtolower(get_string('mycourses'))), array('class' => 'skip skip-block')); // Wrap frontpage course list in div container. echo html_writer::start_tag('div', array('id' => 'frontpage-course-list')); echo $OUTPUT->heading(get_string('mycourses')); echo $mycourseshtml; // End frontpage course list div container. echo html_writer::end_tag('div'); echo html_writer::tag('span', '', array('class' => 'skip-block-to', 'id' => 'skipmycourses')); break; } // No "break" here. If there are no enrolled courses - continue to 'Available courses'. case FRONTPAGEALLCOURSELIST: $availablecourseshtml = $courserenderer->frontpage_available_courses(); if (!empty($availablecourseshtml)) { echo html_writer::link('#skipavailablecourses', get_string('skipa', 'access', core_text::strtolower(get_string('availablecourses'))), array('class' => 'skip skip-block')); // Wrap frontpage course list in div container. echo html_writer::start_tag('div', array('id' => 'frontpage-course-list')); echo $OUTPUT->heading(get_string('availablecourses')); echo $availablecourseshtml; // End frontpage course list div container. echo html_writer::end_tag('div'); echo html_writer::tag('span', '', array('class' => 'skip-block-to', 'id' => 'skipavailablecourses')); } break; case FRONTPAGECATEGORYNAMES: echo html_writer::link('#skipcategories', get_string('skipa', 'access', core_text::strtolower(get_string('categories'))), array('class' => 'skip skip-block')); // Wrap frontpage category names in div container. echo html_writer::start_tag('div', array('id' => 'frontpage-category-names')); echo $OUTPUT->heading(get_string('categories')); echo $courserenderer->frontpage_categories_list(); // End frontpage category names div container. echo html_writer::end_tag('div'); echo html_writer::tag('span', '', array('class' => 'skip-block-to', 'id' => 'skipcategories')); break; case FRONTPAGECATEGORYCOMBO: echo html_writer::link('#skipcourses', get_string('skipa', 'access', core_text::strtolower(get_string('courses'))), array('class' => 'skip skip-block')); // Wrap frontpage category combo in div container. echo html_writer::start_tag('div', array('id' => 'frontpage-category-combo')); echo $OUTPUT->heading(get_string('courses')); echo $courserenderer->frontpage_combo_list(); // End frontpage category combo div container. echo html_writer::end_tag('div'); echo html_writer::tag('span', '', array('class' => 'skip-block-to', 'id' => 'skipcourses')); break; case FRONTPAGECOURSESEARCH: echo $OUTPUT->box($courserenderer->course_search_form('', 'short'), 'mdl-align'); break; } echo '
'; } if ($editing && has_capability('moodle/course:create', context_system::instance())) { echo $courserenderer->add_new_course_button(); } echo $OUTPUT->footer();