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