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  /**

   4   * Registry object that contains information about the current context.

   5   * @warning Is a bit buggy when variables are set to null: it thinks

   6   *          they don't exist! So use false instead, please.

   7   * @note Since the variables Context deals with may not be objects,

   8   *       references are very important here! Do not remove!

   9   */
  10  class HTMLPurifier_Context
  11  {
  12  
  13      /**

  14       * Private array that stores the references.

  15       * @type array

  16       */
  17      private $_storage = array();
  18  
  19      /**

  20       * Registers a variable into the context.

  21       * @param string $name String name

  22       * @param mixed $ref Reference to variable to be registered

  23       */
  24      public function register($name, &$ref)
  25      {
  26          if (array_key_exists($name, $this->_storage)) {
  27              trigger_error(
  28                  "Name $name produces collision, cannot re-register",
  29                  E_USER_ERROR
  30              );
  31              return;
  32          }
  33          $this->_storage[$name] =& $ref;
  34      }
  35  
  36      /**

  37       * Retrieves a variable reference from the context.

  38       * @param string $name String name

  39       * @param bool $ignore_error Boolean whether or not to ignore error

  40       * @return mixed

  41       */
  42      public function &get($name, $ignore_error = false)
  43      {
  44          if (!array_key_exists($name, $this->_storage)) {
  45              if (!$ignore_error) {
  46                  trigger_error(
  47                      "Attempted to retrieve non-existent variable $name",
  48                      E_USER_ERROR
  49                  );
  50              }
  51              $var = null; // so we can return by reference

  52              return $var;
  53          }
  54          return $this->_storage[$name];
  55      }
  56  
  57      /**

  58       * Destroys a variable in the context.

  59       * @param string $name String name

  60       */
  61      public function destroy($name)
  62      {
  63          if (!array_key_exists($name, $this->_storage)) {
  64              trigger_error(
  65                  "Attempted to destroy non-existent variable $name",
  66                  E_USER_ERROR
  67              );
  68              return;
  69          }
  70          unset($this->_storage[$name]);
  71      }
  72  
  73      /**

  74       * Checks whether or not the variable exists.

  75       * @param string $name String name

  76       * @return bool

  77       */
  78      public function exists($name)
  79      {
  80          return array_key_exists($name, $this->_storage);
  81      }
  82  
  83      /**

  84       * Loads a series of variables from an associative array

  85       * @param array $context_array Assoc array of variables to load

  86       */
  87      public function loadArray($context_array)
  88      {
  89          foreach ($context_array as $key => $discard) {
  90              $this->register($key, $context_array[$key]);
  91          }
  92      }
  93  }
  94  
  95  // vim: et sw=4 sts=4