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 color according to the HTML spec.

   5   */
   6  class HTMLPurifier_AttrDef_HTML_Color extends HTMLPurifier_AttrDef
   7  {
   8  
   9      /**

  10       * @param string $string

  11       * @param HTMLPurifier_Config $config

  12       * @param HTMLPurifier_Context $context

  13       * @return bool|string

  14       */
  15      public function validate($string, $config, $context)
  16      {
  17          static $colors = null;
  18          if ($colors === null) {
  19              $colors = $config->get('Core.ColorKeywords');
  20          }
  21  
  22          $string = trim($string);
  23  
  24          if (empty($string)) {
  25              return false;
  26          }
  27          $lower = strtolower($string);
  28          if (isset($colors[$lower])) {
  29              return $colors[$lower];
  30          }
  31          if ($string[0] === '#') {
  32              $hex = substr($string, 1);
  33          } else {
  34              $hex = $string;
  35          }
  36  
  37          $length = strlen($hex);
  38          if ($length !== 3 && $length !== 6) {
  39              return false;
  40          }
  41          if (!ctype_xdigit($hex)) {
  42              return false;
  43          }
  44          if ($length === 3) {
  45              $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
  46          }
  47          return "#$hex";
  48      }
  49  }
  50  
  51  // vim: et sw=4 sts=4