You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.9 KiB
67 lines
1.9 KiB
<?php |
|
|
|
/** |
|
* Definition that uses different definitions depending on context. |
|
* |
|
* The del and ins tags are notable because they allow different types of |
|
* elements depending on whether or not they're in a block or inline context. |
|
* Chameleon allows this behavior to happen by using two different |
|
* definitions depending on context. While this somewhat generalized, |
|
* it is specifically intended for those two tags. |
|
*/ |
|
class HTMLPurifier_ChildDef_Chameleon extends HTMLPurifier_ChildDef |
|
{ |
|
|
|
/** |
|
* Instance of the definition object to use when inline. Usually stricter. |
|
* @type HTMLPurifier_ChildDef_Optional |
|
*/ |
|
public $inline; |
|
|
|
/** |
|
* Instance of the definition object to use when block. |
|
* @type HTMLPurifier_ChildDef_Optional |
|
*/ |
|
public $block; |
|
|
|
/** |
|
* @type string |
|
*/ |
|
public $type = 'chameleon'; |
|
|
|
/** |
|
* @param array $inline List of elements to allow when inline. |
|
* @param array $block List of elements to allow when block. |
|
*/ |
|
public function __construct($inline, $block) |
|
{ |
|
$this->inline = new HTMLPurifier_ChildDef_Optional($inline); |
|
$this->block = new HTMLPurifier_ChildDef_Optional($block); |
|
$this->elements = $this->block->elements; |
|
} |
|
|
|
/** |
|
* @param HTMLPurifier_Node[] $children |
|
* @param HTMLPurifier_Config $config |
|
* @param HTMLPurifier_Context $context |
|
* @return bool |
|
*/ |
|
public function validateChildren($children, $config, $context) |
|
{ |
|
if ($context->get('IsInline') === false) { |
|
return $this->block->validateChildren( |
|
$children, |
|
$config, |
|
$context |
|
); |
|
} else { |
|
return $this->inline->validateChildren( |
|
$children, |
|
$config, |
|
$context |
|
); |
|
} |
|
} |
|
} |
|
|
|
// vim: et sw=4 sts=4
|
|
|