Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.0.x will end 8 May 2023 (12 months).
  • Bug fixes for security issues in 4.0.x will end 13 November 2023 (18 months).
  • PHP version: minimum PHP 7.3.0 Note: the minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is also supported.
   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