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