Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
   1  <?php
   2  
   3  /**
   4   * Chainable filters for custom URI processing.
   5   *
   6   * These filters can perform custom actions on a URI filter object,
   7   * including transformation or blacklisting.  A filter named Foo
   8   * must have a corresponding configuration directive %URI.Foo,
   9   * unless always_load is specified to be true.
  10   *
  11   * The following contexts may be available while URIFilters are being
  12   * processed:
  13   *
  14   *      - EmbeddedURI: true if URI is an embedded resource that will
  15   *        be loaded automatically on page load
  16   *      - CurrentToken: a reference to the token that is currently
  17   *        being processed
  18   *      - CurrentAttr: the name of the attribute that is currently being
  19   *        processed
  20   *      - CurrentCSSProperty: the name of the CSS property that is
  21   *        currently being processed (if applicable)
  22   *
  23   * @warning This filter is called before scheme object validation occurs.
  24   *          Make sure, if you require a specific scheme object, you
  25   *          you check that it exists. This allows filters to convert
  26   *          proprietary URI schemes into regular ones.
  27   */
  28  abstract class HTMLPurifier_URIFilter
  29  {
  30  
  31      /**
  32       * Unique identifier of filter.
  33       * @type string
  34       */
  35      public $name;
  36  
  37      /**
  38       * True if this filter should be run after scheme validation.
  39       * @type bool
  40       */
  41      public $post = false;
  42  
  43      /**
  44       * True if this filter should always be loaded.
  45       * This permits a filter to be named Foo without the corresponding
  46       * %URI.Foo directive existing.
  47       * @type bool
  48       */
  49      public $always_load = false;
  50  
  51      /**
  52       * Performs initialization for the filter.  If the filter returns
  53       * false, this means that it shouldn't be considered active.
  54       * @param HTMLPurifier_Config $config
  55       * @return bool
  56       */
  57      public function prepare($config)
  58      {
  59          return true;
  60      }
  61  
  62      /**
  63       * Filter a URI object
  64       * @param HTMLPurifier_URI $uri Reference to URI object variable
  65       * @param HTMLPurifier_Config $config
  66       * @param HTMLPurifier_Context $context
  67       * @return bool Whether or not to continue processing: false indicates
  68       *         URL is no good, true indicates continue processing. Note that
  69       *         all changes are committed directly on the URI object
  70       */
  71      abstract public function filter(&$uri, $config, $context);
  72  }
  73  
  74  // vim: et sw=4 sts=4