Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.3.x will end 7 October 2024 (12 months).
  • Bug fixes for security issues in 4.3.x will end 21 April 2025 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.2.x is supported too.
   1  <?php
   2  
   3  /**
   4   * Represents a Length as defined by CSS.
   5   */
   6  class HTMLPurifier_AttrDef_CSS_Length extends HTMLPurifier_AttrDef
   7  {
   8  
   9      /**
  10       * @type HTMLPurifier_Length|string
  11       */
  12      protected $min;
  13  
  14      /**
  15       * @type HTMLPurifier_Length|string
  16       */
  17      protected $max;
  18  
  19      /**
  20       * @param HTMLPurifier_Length|string $min Minimum length, or null for no bound. String is also acceptable.
  21       * @param HTMLPurifier_Length|string $max Maximum length, or null for no bound. String is also acceptable.
  22       */
  23      public function __construct($min = null, $max = null)
  24      {
  25          $this->min = $min !== null ? HTMLPurifier_Length::make($min) : null;
  26          $this->max = $max !== null ? HTMLPurifier_Length::make($max) : null;
  27      }
  28  
  29      /**
  30       * @param string $string
  31       * @param HTMLPurifier_Config $config
  32       * @param HTMLPurifier_Context $context
  33       * @return bool|string
  34       */
  35      public function validate($string, $config, $context)
  36      {
  37          $string = $this->parseCDATA($string);
  38  
  39          // Optimizations
  40          if ($string === '') {
  41              return false;
  42          }
  43          if ($string === '0') {
  44              return '0';
  45          }
  46          if (strlen($string) === 1) {
  47              return false;
  48          }
  49  
  50          $length = HTMLPurifier_Length::make($string);
  51          if (!$length->isValid()) {
  52              return false;
  53          }
  54  
  55          if ($this->min) {
  56              $c = $length->compareTo($this->min);
  57              if ($c === false) {
  58                  return false;
  59              }
  60              if ($c < 0) {
  61                  return false;
  62              }
  63          }
  64          if ($this->max) {
  65              $c = $length->compareTo($this->max);
  66              if ($c === false) {
  67                  return false;
  68              }
  69              if ($c > 0) {
  70                  return false;
  71              }
  72          }
  73          return $length->toString();
  74      }
  75  }
  76  
  77  // vim: et sw=4 sts=4