root/afridex/plugins/Flutter/purifier_lib/HTMLPurifier/ChildDef/Chameleon.php @ 21

Revision 21, 1.5 kB (checked in by admin, 18 years ago)
Line 
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 */
12class HTMLPurifier_ChildDef_Chameleon extends HTMLPurifier_ChildDef
13{
14   
15    /**
16     * Instance of the definition object to use when inline. Usually stricter.
17     */
18    public $inline;
19   
20    /**
21     * Instance of the definition object to use when block.
22     */
23    public $block;
24   
25    public $type = 'chameleon';
26   
27    /**
28     * @param $inline List of elements to allow when inline.
29     * @param $block List of elements to allow when block.
30     */
31    public function __construct($inline, $block) {
32        $this->inline = new HTMLPurifier_ChildDef_Optional($inline);
33        $this->block  = new HTMLPurifier_ChildDef_Optional($block);
34        $this->elements = $this->block->elements;
35    }
36   
37    public function validateChildren($tokens_of_children, $config, $context) {
38        if ($context->get('IsInline') === false) {
39            return $this->block->validateChildren(
40                $tokens_of_children, $config, $context);
41        } else {
42            return $this->inline->validateChildren(
43                $tokens_of_children, $config, $context);
44        }
45    }
46}
47
Note: See TracBrowser for help on using the browser.