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