Search moodle.org's
Developer Documentation


  • Bug fixes for general core bugs in 3.6.x will end 11 November 2019 (12 months).
  • Bug fixes for security issues in 3.6.x will end 11 May 2020 (18 months).
  • minimum PHP 7.0.0 Note: minimum PHP version has increased since Moodle 3.3. PHP 7.1.x and 7.2.x are supported too. PHP 7.3.x support is being implemented (@ MDL-63420) and not ready for production with this release.
  • / -> index.php (source)

    Differences Between: [Versions 28 and 36] [Versions 29 and 36] [Versions 30 and 36] [Versions 31 and 36] [Versions 32 and 36] [Versions 33 and 36] [Versions 34 and 36] [Versions 35 and 36]

       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) && ($CFG->defaulthomepage == HOMEPAGE_MY) && optional_param('redirect', 1, PARAM_BOOL) === 0) {
      38      $urlparams['redirect'] = 0;
      39  }
      40  $PAGE->set_url('/', $urlparams);
      41  $PAGE->set_pagelayout('frontpage');
      42  $PAGE->set_other_editing_capability('moodle/course:update');
      43  $PAGE->set_other_editing_capability('moodle/course:manageactivities');
      44  $PAGE->set_other_editing_capability('moodle/course:activityvisibility');
      45  
      46  // Prevent caching of this page to stop confusion when changing page after making AJAX changes.
      47  $PAGE->set_cacheable(false);
      48  
      49  require_course_login($SITE);
      50  
      51  $hasmaintenanceaccess = has_capability('moodle/site:maintenanceaccess', context_system::instance());
      52  
      53  // If the site is currently under maintenance, then print a message.
      54  if (!empty($CFG->maintenance_enabled) and !$hasmaintenanceaccess) {
      55      print_maintenance_message();
      56  }
      57  
      58  $hassiteconfig = has_capability('moodle/site:config', context_system::instance());
      59  
      60  if ($hassiteconfig && moodle_needs_upgrading()) {
      61      redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php');
      62  }
      63  
      64  // If site registration needs updating, redirect.
      65  \core\hub\registration::registration_reminder('/index.php');
      66  
      67  if (get_home_page() != HOMEPAGE_SITE) {
      68      // Redirect logged-in users to My Moodle overview if required.
      69      $redirect = optional_param('redirect', 1, PARAM_BOOL);
      70      if (optional_param('setdefaulthome', false, PARAM_BOOL)) {
      71          set_user_preference('user_home_page_preference', HOMEPAGE_SITE);
      72      } else if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_MY) && $redirect === 1) {
      73          redirect($CFG->wwwroot .'/my/');
      74      } else if (!empty($CFG->defaulthomepage) && ($CFG->defaulthomepage == HOMEPAGE_USER)) {
      75          $frontpagenode = $PAGE->settingsnav->find('frontpage', null);
      76          if ($frontpagenode) {
      77              $frontpagenode->add(
      78                  get_string('makethismyhome'),
      79                  new moodle_url('/', array('setdefaulthome' => true)),
      80                  navigation_node::TYPE_SETTING);
      81          } else {
      82              $frontpagenode = $PAGE->settingsnav->add(get_string('frontpagesettings'), null, navigation_node::TYPE_SETTING, null);
      83              $frontpagenode->force_open();
      84              $frontpagenode->add(get_string('makethismyhome'),
      85                  new moodle_url('/', array('setdefaulthome' => true)),
      86                  navigation_node::TYPE_SETTING);
      87          }
      88      }
      89  }
      90  
      91  // Trigger event.
      92  course_view(context_course::instance(SITEID));
      93  
      94  // If the hub plugin is installed then we let it take over the homepage here.
      95  if (file_exists($CFG->dirroot.'/local/hub/lib.php') and get_config('local_hub', 'hubenabled')) {
      96      require_once($CFG->dirroot.'/local/hub/lib.php');
      97      $hub = new local_hub();
      98      $continue = $hub->display_homepage();
      99      // Function display_homepage() returns true if the hub home page is not displayed
     100      // ...mostly when search form is not displayed for not logged users.
     101      if (empty($continue)) {
     102          exit;
     103      }
     104  }
     105  
     106  $PAGE->set_pagetype('site-index');
     107  $PAGE->set_docs_path('');
     108  $editing = $PAGE->user_is_editing();
     109  $PAGE->set_title($SITE->fullname);
     110  $PAGE->set_heading($SITE->fullname);
     111  $courserenderer = $PAGE->get_renderer('core', 'course');
     112  echo $OUTPUT->header();
     113  
     114  $siteformatoptions = course_get_format($SITE)->get_format_options();
     115  $modinfo = get_fast_modinfo($SITE);
     116  $modnamesused = $modinfo->get_used_module_names();
     117  
     118  // Print Section or custom info.
     119  if (!empty($CFG->customfrontpageinclude)) {
     120      // Pre-fill some variables that custom front page might use.
     121      $modnames = get_module_types_names();
     122      $modnamesplural = get_module_types_names(true);
     123      $mods = $modinfo->get_cms();
     124  
     125      include($CFG->customfrontpageinclude);
     126  
     127  } else if ($siteformatoptions['numsections'] > 0) {
     128      echo $courserenderer->frontpage_section1();
     129  }
     130  // Include course AJAX.
     131  include_course_ajax($SITE, $modnamesused);
     132  
     133  echo $courserenderer->frontpage();
     134  
     135  if ($editing && has_capability('moodle/course:create', context_system::instance())) {
     136      echo $courserenderer->add_new_course_button();
     137  }
     138  echo $OUTPUT->footer();
    

    Search This Site: