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   * Pre-transform that changes deprecated hspace and vspace attributes to CSS
   5   */
   6  class HTMLPurifier_AttrTransform_ImgSpace extends HTMLPurifier_AttrTransform
   7  {
   8      /**
   9       * @type string
  10       */
  11      protected $attr;
  12  
  13      /**
  14       * @type array
  15       */
  16      protected $css = array(
  17          'hspace' => array('left', 'right'),
  18          'vspace' => array('top', 'bottom')
  19      );
  20  
  21      /**
  22       * @param string $attr
  23       */
  24      public function __construct($attr)
  25      {
  26          $this->attr = $attr;
  27          if (!isset($this->css[$attr])) {
  28              trigger_error(htmlspecialchars($attr) . ' is not valid space attribute');
  29          }
  30      }
  31  
  32      /**
  33       * @param array $attr
  34       * @param HTMLPurifier_Config $config
  35       * @param HTMLPurifier_Context $context
  36       * @return array
  37       */
  38      public function transform($attr, $config, $context)
  39      {
  40          if (!isset($attr[$this->attr])) {
  41              return $attr;
  42          }
  43  
  44          $width = $this->confiscateAttr($attr, $this->attr);
  45          // some validation could happen here
  46  
  47          if (!isset($this->css[$this->attr])) {
  48              return $attr;
  49          }
  50  
  51          $style = '';
  52          foreach ($this->css[$this->attr] as $suffix) {
  53              $property = "margin-$suffix";
  54              $style .= "$property:{$width}px;";
  55          }
  56          $this->prependCSS($attr, $style);
  57          return $attr;
  58      }
  59  }
  60  
  61  // vim: et sw=4 sts=4