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