Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.
   1  <?php
   2  
   3  // detects settings that were added during an upgrade, displays a screen for the admin to
   4  // modify them, and then processes modifications
   5  
   6  require_once('../config.php');
   7  require_once($CFG->libdir.'/adminlib.php');
   8  
   9  $return = optional_param('return', '', PARAM_ALPHA);
  10  
  11  /// no guest autologin
  12  require_login(0, false);
  13  if (isguestuser()) {
  14      // Login as real user!
  15      $SESSION->wantsurl = (string)new moodle_url('/admin/upgradesettings.php', array('return'=>$return));
  16      redirect(get_login_url());
  17  }
  18  
  19  admin_externalpage_setup('upgradesettings'); // now hidden page
  20  $PAGE->set_pagelayout('maintenance'); // do not print any blocks or other rubbish, we want to force saving
  21  $PAGE->blocks->show_only_fake_blocks();
  22  $adminroot = admin_get_root(); // need all settings
  23  
  24  // now we'll deal with the case that the admin has submitted the form with new settings
  25  if ($data = data_submitted() and confirm_sesskey()) {
  26      $count = admin_write_settings($data);
  27  }
  28  
  29  $newsettings = admin_output_new_settings_by_page($adminroot);
  30  if (isset($newsettings['frontpagesettings'])) {
  31      $frontpage = $newsettings['frontpagesettings'];
  32      unset($newsettings['frontpagesettings']);
  33      array_unshift($newsettings, $frontpage);
  34  }
  35  $newsettingshtml = implode($newsettings);
  36  unset($newsettings);
  37  
  38  $focus = '';
  39  
  40  if (empty($adminroot->errors) and $newsettingshtml === '') {
  41      // there must be either redirect without message or continue button or else upgrade would be sometimes broken
  42      if ($return == 'site') {
  43          redirect("$CFG->wwwroot/");
  44      } else {
  45          redirect("$CFG->wwwroot/$CFG->admin/index.php");
  46      }
  47  }
  48  
  49  if (!empty($adminroot->errors)) {
  50      $firsterror = reset($adminroot->errors);
  51      $focus = $firsterror->id;
  52  }
  53  
  54  // and finally, if we get here, then there are new settings and we have to print a form
  55  // to modify them
  56  echo $OUTPUT->header($focus);
  57  
  58  if (!empty($SITE->fullname) and !empty($SITE->shortname)) {
  59      echo $OUTPUT->box(get_string('upgradesettingsintro','admin'), 'generalbox');
  60  }
  61  
  62  echo '<form action="upgradesettings.php" method="post" id="adminsettings">';
  63  echo '<div>';
  64  echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
  65  echo '<input type="hidden" name="return" value="'.$return.'" />';
  66  echo '<fieldset>';
  67  echo '<div class="clearer"><!-- --></div>';
  68  echo $newsettingshtml;
  69  echo '</fieldset>';
  70  echo '<div class="form-buttons"><input class="form-submit btn btn-primary" type="submit" value="'.get_string('savechanges','admin').'" /></div>';
  71  echo '</div>';
  72  echo '</form>';
  73  
  74  echo $OUTPUT->footer();
  75  
  76