Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.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