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   * Validates a Percentage as defined by the CSS spec.
   5   */
   6  class HTMLPurifier_AttrDef_CSS_Percentage extends HTMLPurifier_AttrDef
   7  {
   8  
   9      /**
  10       * Instance to defer number validation to.
  11       * @type HTMLPurifier_AttrDef_CSS_Number
  12       */
  13      protected $number_def;
  14  
  15      /**
  16       * @param bool $non_negative Whether to forbid negative values
  17       */
  18      public function __construct($non_negative = false)
  19      {
  20          $this->number_def = new HTMLPurifier_AttrDef_CSS_Number($non_negative);
  21      }
  22  
  23      /**
  24       * @param string $string
  25       * @param HTMLPurifier_Config $config
  26       * @param HTMLPurifier_Context $context
  27       * @return bool|string
  28       */
  29      public function validate($string, $config, $context)
  30      {
  31          $string = $this->parseCDATA($string);
  32  
  33          if ($string === '') {
  34              return false;
  35          }
  36          $length = strlen($string);
  37          if ($length === 1) {
  38              return false;
  39          }
  40          if ($string[$length - 1] !== '%') {
  41              return false;
  42          }
  43  
  44          $number = substr($string, 0, $length - 1);
  45          $number = $this->number_def->validate($number, $config, $context);
  46  
  47          if ($number === false) {
  48              return false;
  49          }
  50          return "$number%";
  51      }
  52  }
  53  
  54  // vim: et sw=4 sts=4