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