Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.0.x will end 8 May 2023 (12 months).
  • Bug fixes for security issues in 4.0.x will end 13 November 2023 (18 months).
  • PHP version: minimum PHP 7.3.0 Note: the minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is also supported.

Differences Between: [Versions 310 and 400] [Versions 39 and 400] [Versions 400 and 401] [Versions 400 and 402] [Versions 400 and 403]

   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   * Create admin bookmarks.
  19   *
  20   * @package    block_admin_bookmarks
  21   * @copyright  2006 vinkmar
  22   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  
  25  require('../../config.php');
  26  
  27  require_once($CFG->libdir.'/adminlib.php');
  28  require_login();
  29  $context = context_system::instance();
  30  $PAGE->set_context($context);
  31  $adminroot = admin_get_root(false, false);  // settings not required - only pages
  32  
  33  // We clean section with safe path here for compatibility with external pages that include a slash in their name.
  34  if ($section = optional_param('section', '', PARAM_SAFEPATH) and confirm_sesskey()) {
  35  
  36      if (get_user_preferences('admin_bookmarks')) {
  37          $bookmarks = explode(',', get_user_preferences('admin_bookmarks'));
  38  
  39          if (in_array($section, $bookmarks)) {
  40              print_error('bookmarkalreadyexists','admin');
  41              die;
  42          }
  43  
  44      } else {
  45          $bookmarks = array();
  46      }
  47  
  48      $temp = $adminroot->locate($section);
  49  
  50      if ($temp instanceof admin_settingpage || $temp instanceof admin_externalpage || $temp instanceof admin_category) {
  51          $bookmarks[] = $section;
  52          $bookmarks = implode(',', $bookmarks);
  53          set_user_preference('admin_bookmarks', $bookmarks);
  54  
  55      } else {
  56          print_error('invalidsection','admin');
  57          die;
  58      }
  59  
  60      if ($temp instanceof admin_settingpage) {
  61          redirect($CFG->wwwroot . '/' . $CFG->admin . '/settings.php?section=' . $section);
  62  
  63      } elseif ($temp instanceof admin_externalpage) {
  64          redirect($temp->url);
  65  
  66      } else if ($temp instanceof admin_category) {
  67          redirect($CFG->wwwroot . '/' . $CFG->admin . '/category.php?category=' . $section);
  68  
  69      }
  70  
  71  } else {
  72      print_error('invalidsection','admin');
  73      die;
  74  }
  75  
  76