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 the HTML type length (not to be confused with CSS's length).

   5   *

   6   * This accepts integer pixels or percentages as lengths for certain

   7   * HTML attributes.

   8   */
   9  
  10  class HTMLPurifier_AttrDef_HTML_Length extends HTMLPurifier_AttrDef_HTML_Pixels
  11  {
  12  
  13      /**

  14       * @param string $string

  15       * @param HTMLPurifier_Config $config

  16       * @param HTMLPurifier_Context $context

  17       * @return bool|string

  18       */
  19      public function validate($string, $config, $context)
  20      {
  21          $string = trim($string);
  22          if ($string === '') {
  23              return false;
  24          }
  25  
  26          $parent_result = parent::validate($string, $config, $context);
  27          if ($parent_result !== false) {
  28              return $parent_result;
  29          }
  30  
  31          $length = strlen($string);
  32          $last_char = $string[$length - 1];
  33  
  34          if ($last_char !== '%') {
  35              return false;
  36          }
  37  
  38          $points = substr($string, 0, $length - 1);
  39  
  40          if (!is_numeric($points)) {
  41              return false;
  42          }
  43  
  44          $points = (int)$points;
  45  
  46          if ($points < 0) {
  47              return '0%';
  48          }
  49          if ($points > 100) {
  50              return '100%';
  51          }
  52          return ((string)$points) . '%';
  53      }
  54  }
  55  
  56  // vim: et sw=4 sts=4