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   * Definition that uses different definitions depending on context.
   5   *
   6   * The del and ins tags are notable because they allow different types of
   7   * elements depending on whether or not they're in a block or inline context.
   8   * Chameleon allows this behavior to happen by using two different
   9   * definitions depending on context.  While this somewhat generalized,
  10   * it is specifically intended for those two tags.
  11   */
  12  class HTMLPurifier_ChildDef_Chameleon extends HTMLPurifier_ChildDef
  13  {
  14  
  15      /**
  16       * Instance of the definition object to use when inline. Usually stricter.
  17       * @type HTMLPurifier_ChildDef_Optional
  18       */
  19      public $inline;
  20  
  21      /**
  22       * Instance of the definition object to use when block.
  23       * @type HTMLPurifier_ChildDef_Optional
  24       */
  25      public $block;
  26  
  27      /**
  28       * @type string
  29       */
  30      public $type = 'chameleon';
  31  
  32      /**
  33       * @param array $inline List of elements to allow when inline.
  34       * @param array $block List of elements to allow when block.
  35       */
  36      public function __construct($inline, $block)
  37      {
  38          $this->inline = new HTMLPurifier_ChildDef_Optional($inline);
  39          $this->block = new HTMLPurifier_ChildDef_Optional($block);
  40          $this->elements = $this->block->elements;
  41      }
  42  
  43      /**
  44       * @param HTMLPurifier_Node[] $children
  45       * @param HTMLPurifier_Config $config
  46       * @param HTMLPurifier_Context $context
  47       * @return bool
  48       */
  49      public function validateChildren($children, $config, $context)
  50      {
  51          if ($context->get('IsInline') === false) {
  52              return $this->block->validateChildren(
  53                  $children,
  54                  $config,
  55                  $context
  56              );
  57          } else {
  58              return $this->inline->validateChildren(
  59                  $children,
  60                  $config,
  61                  $context
  62              );
  63          }
  64      }
  65  }
  66  
  67  // vim: et sw=4 sts=4