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   * Processes an entire attribute array for corrections needing multiple values.
   5   *
   6   * Occasionally, a certain attribute will need to be removed and popped onto
   7   * another value.  Instead of creating a complex return syntax for
   8   * HTMLPurifier_AttrDef, we just pass the whole attribute array to a
   9   * specialized object and have that do the special work.  That is the
  10   * family of HTMLPurifier_AttrTransform.
  11   *
  12   * An attribute transformation can be assigned to run before or after
  13   * HTMLPurifier_AttrDef validation.  See HTMLPurifier_HTMLDefinition for
  14   * more details.
  15   */
  16  
  17  abstract class HTMLPurifier_AttrTransform
  18  {
  19  
  20      /**
  21       * Abstract: makes changes to the attributes dependent on multiple values.
  22       *
  23       * @param array $attr Assoc array of attributes, usually from
  24       *              HTMLPurifier_Token_Tag::$attr
  25       * @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object.
  26       * @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object
  27       * @return array Processed attribute array.
  28       */
  29      abstract public function transform($attr, $config, $context);
  30  
  31      /**
  32       * Prepends CSS properties to the style attribute, creating the
  33       * attribute if it doesn't exist.
  34       * @param array &$attr Attribute array to process (passed by reference)
  35       * @param string $css CSS to prepend
  36       */
  37      public function prependCSS(&$attr, $css)
  38      {
  39          $attr['style'] = isset($attr['style']) ? $attr['style'] : '';
  40          $attr['style'] = $css . $attr['style'];
  41      }
  42  
  43      /**
  44       * Retrieves and removes an attribute
  45       * @param array &$attr Attribute array to process (passed by reference)
  46       * @param mixed $key Key of attribute to confiscate
  47       * @return mixed
  48       */
  49      public function confiscateAttr(&$attr, $key)
  50      {
  51          if (!isset($attr[$key])) {
  52              return null;
  53          }
  54          $value = $attr[$key];
  55          unset($attr[$key]);
  56          return $value;
  57      }
  58  }
  59  
  60  // vim: et sw=4 sts=4