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   * Generic pre-transform that converts an attribute with a fixed number of

   5   * values (enumerated) to CSS.

   6   */
   7  class HTMLPurifier_AttrTransform_EnumToCSS extends HTMLPurifier_AttrTransform
   8  {
   9      /**

  10       * Name of attribute to transform from.

  11       * @type string

  12       */
  13      protected $attr;
  14  
  15      /**

  16       * Lookup array of attribute values to CSS.

  17       * @type array

  18       */
  19      protected $enumToCSS = array();
  20  
  21      /**

  22       * Case sensitivity of the matching.

  23       * @type bool

  24       * @warning Currently can only be guaranteed to work with ASCII

  25       *          values.

  26       */
  27      protected $caseSensitive = false;
  28  
  29      /**

  30       * @param string $attr Attribute name to transform from

  31       * @param array $enum_to_css Lookup array of attribute values to CSS

  32       * @param bool $case_sensitive Case sensitivity indicator, default false

  33       */
  34      public function __construct($attr, $enum_to_css, $case_sensitive = false)
  35      {
  36          $this->attr = $attr;
  37          $this->enumToCSS = $enum_to_css;
  38          $this->caseSensitive = (bool)$case_sensitive;
  39      }
  40  
  41      /**

  42       * @param array $attr

  43       * @param HTMLPurifier_Config $config

  44       * @param HTMLPurifier_Context $context

  45       * @return array

  46       */
  47      public function transform($attr, $config, $context)
  48      {
  49          if (!isset($attr[$this->attr])) {
  50              return $attr;
  51          }
  52  
  53          $value = trim($attr[$this->attr]);
  54          unset($attr[$this->attr]);
  55  
  56          if (!$this->caseSensitive) {
  57              $value = strtolower($value);
  58          }
  59  
  60          if (!isset($this->enumToCSS[$value])) {
  61              return $attr;
  62          }
  63          $this->prependCSS($attr, $this->enumToCSS[$value]);
  64          return $attr;
  65      }
  66  }
  67  
  68  // vim: et sw=4 sts=4