Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
   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   * Code that deals with logging stuff during the question engine upgrade.
  19   *
  20   * @package    moodlecore
  21   * @subpackage questionengine
  22   * @copyright  2010 The Open University
  23   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  24   */
  25  
  26  
  27  defined('MOODLE_INTERNAL') || die();
  28  
  29  
  30  /**
  31   * This class serves to record all the assumptions that the code had to make
  32   * during the question engine database database upgrade, to facilitate reviewing
  33   * them.
  34   *
  35   * @copyright  2010 The Open University
  36   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  37   */
  38  class question_engine_assumption_logger {
  39      protected $handle;
  40      protected $attemptid;
  41  
  42      public function __construct() {
  43          global $CFG;
  44          make_upload_directory('upgradelogs');
  45          $date = date('Ymd-His');
  46          $this->handle = fopen($CFG->dataroot . '/upgradelogs/qe_' .
  47                  $date . '.html', 'a');
  48          fwrite($this->handle, '<html><head><title>Question engine upgrade assumptions ' .
  49                  $date . '</title></head><body><h2>Question engine upgrade assumptions ' .
  50                  $date . "</h2>\n\n");
  51      }
  52  
  53      public function set_current_attempt_id($id) {
  54          $this->attemptid = $id;
  55      }
  56  
  57      public function log_assumption($description, $quizattemptid = null) {
  58          global $CFG;
  59          $message = '<p>' . $description;
  60          if (!$quizattemptid) {
  61              $quizattemptid = $this->attemptid;
  62          }
  63          if ($quizattemptid) {
  64              $message .= ' (<a href="' . $CFG->wwwroot . '/mod/quiz/review.php?attempt=' .
  65                      $quizattemptid . '">Review this attempt</a>)';
  66          }
  67          $message .= "</p>\n";
  68          fwrite($this->handle, $message);
  69      }
  70  
  71      public function __destruct() {
  72          fwrite($this->handle, '</body></html>');
  73          fclose($this->handle);
  74      }
  75  }
  76  
  77  
  78  /**
  79   * Subclass of question_engine_assumption_logger that does nothing, for testing.
  80   *
  81   * @copyright  2009 The Open University
  82   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  83   */
  84  class dummy_question_engine_assumption_logger extends question_engine_assumption_logger {
  85      protected $attemptid;
  86  
  87      public function __construct() {
  88      }
  89  
  90      public function log_assumption($description, $quizattemptid = null) {
  91      }
  92  
  93      public function __destruct() {
  94      }
  95  }