Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.
   1  <?php
   2  
   3  /**

   4   * Implements special behavior for class attribute (normally NMTOKENS)

   5   */
   6  class HTMLPurifier_AttrDef_HTML_Class extends HTMLPurifier_AttrDef_HTML_Nmtokens
   7  {
   8      /**

   9       * @param string $string

  10       * @param HTMLPurifier_Config $config

  11       * @param HTMLPurifier_Context $context

  12       * @return bool|string

  13       */
  14      protected function split($string, $config, $context)
  15      {
  16          // really, this twiddle should be lazy loaded

  17          $name = $config->getDefinition('HTML')->doctype->name;
  18          if ($name == "XHTML 1.1" || $name == "XHTML 2.0") {
  19              return parent::split($string, $config, $context);
  20          } else {
  21              return preg_split('/\s+/', $string);
  22          }
  23      }
  24  
  25      /**

  26       * @param array $tokens

  27       * @param HTMLPurifier_Config $config

  28       * @param HTMLPurifier_Context $context

  29       * @return array

  30       */
  31      protected function filter($tokens, $config, $context)
  32      {
  33          $allowed = $config->get('Attr.AllowedClasses');
  34          $forbidden = $config->get('Attr.ForbiddenClasses');
  35          $ret = array();
  36          foreach ($tokens as $token) {
  37              if (($allowed === null || isset($allowed[$token])) &&
  38                  !isset($forbidden[$token]) &&
  39                  // We need this O(n) check because of PHP's array

  40                  // implementation that casts -0 to 0.

  41                  !in_array($token, $ret, true)
  42              ) {
  43                  $ret[] = $token;
  44              }
  45          }
  46          return $ret;
  47      }
  48  }