diff --git a/index.php b/index.php index 2a19e45c5a5..5d5e0f74078 100644 --- a/index.php +++ b/index.php @@ -1,5 +1,4 @@ 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_course($SITE); +$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); + +if ($CFG->forcelogin) { + require_login(); +} else { + user_accesstime_log(); +} + +$hassiteconfig = has_capability('moodle/site:config', context_system::instance()); + +// If the site is currently under maintenance, then print a message. +if (!empty($CFG->maintenance_enabled) and !$hassiteconfig) { + print_maintenance_message(); +} + +if ($hassiteconfig && moodle_needs_upgrading()) { + redirect($CFG->wwwroot .'/'. $CFG->admin .'/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)) { + $PAGE->settingsnav->get('usercurrentsettings')->add( + get_string('makethismyhome'), + new moodle_url('/', array('setdefaulthome' => true)), + navigation_node::TYPE_SETTING); } +} - require_once('config.php'); - require_once($CFG->dirroot .'/course/lib.php'); - require_once($CFG->libdir .'/filelib.php'); +$eventparams = array('context' => context_course::instance(SITEID)); +$event = \core\event\course_viewed::create($eventparams); +$event->trigger(); - 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; +// 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_url('/', $urlparams); - $PAGE->set_course($SITE); - $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); +$PAGE->set_pagetype('site-index'); +$PAGE->set_docs_path(''); +$PAGE->set_pagelayout('frontpage'); +$editing = $PAGE->user_is_editing(); +$PAGE->set_title($SITE->fullname); +$PAGE->set_heading($SITE->fullname); +$courserenderer = $PAGE->get_renderer('core', 'course'); +echo $OUTPUT->header(); - if ($CFG->forcelogin) { - require_login(); - } else { - user_accesstime_log(); +// 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) { + if ($editing) { + // Make sure section with number 1 exists. + course_create_sections_if_missing($SITE, 1); + // Re-request modinfo in case section was created. + $modinfo = get_fast_modinfo($SITE); } + $section = $modinfo->get_section_info(1); + if (($section && (!empty($modinfo->sections[1]) or !empty($section->summary))) or $editing) { + echo $OUTPUT->box_start('generalbox sitetopic'); - $hassiteconfig = has_capability('moodle/site:config', context_system::instance()); - -/// If the site is currently under maintenance, then print a message - if (!empty($CFG->maintenance_enabled) and !$hassiteconfig) { - print_maintenance_message(); - } - - if ($hassiteconfig && moodle_needs_upgrading()) { - redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php'); - } - - if (get_home_page() != HOMEPAGE_SITE) { - // Redirect logged-in users to My Moodle overview if required - 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) && optional_param('redirect', 1, PARAM_BOOL) === 1) { - redirect($CFG->wwwroot .'/my/'); - } else if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_USER)) { - $PAGE->settingsnav->get('usercurrentsettings')->add(get_string('makethismyhome'), new moodle_url('/', array('setdefaulthome'=>true)), navigation_node::TYPE_SETTING); + // If currently moving a file then show the current clipboard. + if (ismoving($SITE->id)) { + $stractivityclipboard = strip_tags(get_string('activityclipboard', '', $USER->activitycopyname)); + echo '

'; + echo "$stractivityclipboard  ("; + echo get_string('cancel') . ')'; + echo '

'; } - } - $eventparams = array('context' => context_course::instance(SITEID)); - $event = \core\event\course_viewed::create($eventparams); - $event->trigger(); + $context = 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(); - //display_homepage() return true if the hub home page is not displayed - //mostly when search form is not displayed for not logged users - if (empty($continue)) { - exit; + // If the section name is set we show it. + if (!is_null($section->name)) { + echo $OUTPUT->heading( + format_string($section->name, true, array('context' => $context)), + 2, + 'sectionname' + ); } - } - $PAGE->set_pagetype('site-index'); - $PAGE->set_docs_path(''); - $PAGE->set_pagelayout('frontpage'); - $editing = $PAGE->user_is_editing(); - $PAGE->set_title($SITE->fullname); - $PAGE->set_heading($SITE->fullname); - $courserenderer = $PAGE->get_renderer('core', 'course'); - echo $OUTPUT->header(); + $summarytext = file_rewrite_pluginfile_urls($section->summary, + 'pluginfile.php', + $context->id, + 'course', + 'section', + $section->id); + $summaryformatoptions = new stdClass(); + $summaryformatoptions->noclean = true; + $summaryformatoptions->overflowdiv = true; -/// 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(); + echo format_text($summarytext, $section->summaryformat, $summaryformatoptions); - if (!empty($CFG->customfrontpageinclude)) { - include($CFG->customfrontpageinclude); - - } else if ($siteformatoptions['numsections'] > 0) { - if ($editing) { - // make sure section with number 1 exists - course_create_sections_if_missing($SITE, 1); - // re-request modinfo in case section was created - $modinfo = get_fast_modinfo($SITE); + if ($editing && has_capability('moodle/course:update', $context)) { + $streditsummary = get_string('editsummary'); + echo "id\">pix_url('t/edit') . "\" ". + " class=\"iconsmall\" alt=\"$streditsummary\" />

"; } - $section = $modinfo->get_section_info(1); - if (($section && (!empty($modinfo->sections[1]) or !empty($section->summary))) or $editing) { - echo $OUTPUT->box_start('generalbox sitetopic'); - /// If currently moving a file then show the current clipboard - if (ismoving($SITE->id)) { - $stractivityclipboard = strip_tags(get_string('activityclipboard', '', $USER->activitycopyname)); - echo '

'; - echo "$stractivityclipboard  (". get_string('cancel') .')'; - echo '

'; - } + $courserenderer = $PAGE->get_renderer('core', 'course'); + echo $courserenderer->course_section_cm_list($SITE, $section); - $context = context_course::instance(SITEID); - $summarytext = file_rewrite_pluginfile_urls($section->summary, 'pluginfile.php', $context->id, 'course', 'section', $section->id); - $summaryformatoptions = new stdClass(); - $summaryformatoptions->noclean = true; - $summaryformatoptions->overflowdiv = true; - - echo format_text($summarytext, $section->summaryformat, $summaryformatoptions); - - if ($editing && has_capability('moodle/course:update', $context)) { - $streditsummary = get_string('editsummary'); - echo "id\">pix_url('t/edit') . "\" ". - " class=\"iconsmall\" alt=\"$streditsummary\" />

"; - } - - $courserenderer = $PAGE->get_renderer('core', 'course'); - echo $courserenderer->course_section_cm_list($SITE, $section); - - echo $courserenderer->course_section_add_cm_control($SITE, $section->section); - echo $OUTPUT->box_end(); - } + echo $courserenderer->course_section_add_cm_control($SITE, $section->section); + echo $OUTPUT->box_end(); } - // Include course AJAX - include_course_ajax($SITE, $modnamesused); +} +// Include course AJAX. +include_course_ajax($SITE, $modnamesused); - if (isloggedin() and !isguestuser() and isset($CFG->frontpageloggedin)) { - $frontpagelayout = $CFG->frontpageloggedin; - } else { - $frontpagelayout = $CFG->frontpage; - } +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'); +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'); - } + 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); + // 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::tag('a', get_string('skipa', 'access', core_text::strtolower(strip_tags($forumname))), array('href'=>'#skipsitenews', 'class'=>'skip-block')); + $forumname = format_string($newsforum->name, true, array('context' => $newsforumcontext)); + echo html_writer::tag('a', + get_string('skipa', 'access', core_text::strtolower(strip_tags($forumname))), + array('href' => '#skipsitenews', 'class' => 'skip-block')); - // wraps site news forum in div container. - echo html_writer::start_tag('div', array('id'=>'site-news-forum')); + // 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'); + 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'); } - 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); + $subtext = get_string('subscribe', 'forum'); } - - 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')); + 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); } - break; - case FRONTPAGEENROLLEDCOURSELIST: - $mycourseshtml = $courserenderer->frontpage_my_courses(); - if (!empty($mycourseshtml)) { - echo html_writer::tag('a', get_string('skipa', 'access', core_text::strtolower(get_string('mycourses'))), array('href'=>'#skipmycourses', 'class'=>'skip-block')); + forum_print_latest_discussions($SITE, $newsforum, $SITE->newsitems, 'plain', 'p.modified DESC'); - //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::tag('a', get_string('skipa', 'access', core_text::strtolower(get_string('availablecourses'))), array('href'=>'#skipavailablecourses', 'class'=>'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::tag('a', get_string('skipa', 'access', core_text::strtolower(get_string('categories'))), array('href'=>'#skipcategories', 'class'=>'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 + // End site news forum div container. echo html_writer::end_tag('div'); - echo html_writer::tag('span', '', array('class'=>'skip-block-to', 'id'=>'skipcategories')); - break; + echo html_writer::tag('span', '', array('class' => 'skip-block-to', 'id' => 'skipsitenews')); + } + break; - case FRONTPAGECATEGORYCOMBO: - echo html_writer::tag('a', get_string('skipa', 'access', core_text::strtolower(get_string('courses'))), array('href'=>'#skipcourses', 'class'=>'skip-block')); + case FRONTPAGEENROLLEDCOURSELIST: + $mycourseshtml = $courserenderer->frontpage_my_courses(); + if (!empty($mycourseshtml)) { + echo html_writer::tag('a', + get_string('skipa', 'access', core_text::strtolower(get_string('mycourses'))), + array('href' => '#skipmycourses', 'class' => 'skip-block')); - //wrap frontpage category combo in div container - echo html_writer::start_tag('div', array('id'=>'frontpage-category-combo')); + // Wrap frontpage course list in div container. + echo html_writer::start_tag('div', array('id' => 'frontpage-course-list')); - echo $OUTPUT->heading(get_string('courses')); - echo $courserenderer->frontpage_combo_list(); + echo $OUTPUT->heading(get_string('mycourses')); + echo $mycourseshtml; - //end frontpage category combo div container + // End frontpage course list div container. echo html_writer::end_tag('div'); - echo html_writer::tag('span', '', array('class'=>'skip-block-to', 'id'=>'skipcourses')); - break; + 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 FRONTPAGECOURSESEARCH: - echo $OUTPUT->box($courserenderer->course_search_form('', 'short'), 'mdl-align'); - break; + case FRONTPAGEALLCOURSELIST: + $availablecourseshtml = $courserenderer->frontpage_available_courses(); + if (!empty($availablecourseshtml)) { + echo html_writer::tag('a', + get_string('skipa', 'access', core_text::strtolower(get_string('availablecourses'))), + array('href' => '#skipavailablecourses', 'class' => '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::tag('a', + get_string('skipa', 'access', core_text::strtolower(get_string('categories'))), + array('href' => '#skipcategories', 'class' => '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::tag('a', + get_string('skipa', 'access', core_text::strtolower(get_string('courses'))), + array('href' => '#skipcourses', 'class' => '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(); + echo '
'; +} +if ($editing && has_capability('moodle/course:create', context_system::instance())) { + echo $courserenderer->add_new_course_button(); +} +echo $OUTPUT->footer();