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