2006-11-22 18:55:15 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Definition that uses different definitions depending on context.
|
2008-12-06 07:28:20 +00:00
|
|
|
*
|
2006-11-22 18:55:15 +00:00
|
|
|
* 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
|
|
|
|
{
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-11-22 18:55:15 +00:00
|
|
|
/**
|
|
|
|
* Instance of the definition object to use when inline. Usually stricter.
|
|
|
|
*/
|
2007-11-25 02:24:39 +00:00
|
|
|
public $inline;
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-11-22 18:55:15 +00:00
|
|
|
/**
|
|
|
|
* Instance of the definition object to use when block.
|
|
|
|
*/
|
2007-11-25 02:24:39 +00:00
|
|
|
public $block;
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2007-11-25 02:24:39 +00:00
|
|
|
public $type = 'chameleon';
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2006-11-22 18:55:15 +00:00
|
|
|
/**
|
|
|
|
* @param $inline List of elements to allow when inline.
|
|
|
|
* @param $block List of elements to allow when block.
|
|
|
|
*/
|
2007-11-29 04:29:51 +00:00
|
|
|
public function __construct($inline, $block) {
|
2006-11-22 18:55:15 +00:00
|
|
|
$this->inline = new HTMLPurifier_ChildDef_Optional($inline);
|
|
|
|
$this->block = new HTMLPurifier_ChildDef_Optional($block);
|
2007-06-26 19:38:26 +00:00
|
|
|
$this->elements = $this->block->elements;
|
2006-11-22 18:55:15 +00:00
|
|
|
}
|
2008-12-06 07:28:20 +00:00
|
|
|
|
2008-01-05 00:10:43 +00:00
|
|
|
public function validateChildren($tokens_of_children, $config, $context) {
|
2007-02-04 03:53:57 +00:00
|
|
|
if ($context->get('IsInline') === false) {
|
|
|
|
return $this->block->validateChildren(
|
|
|
|
$tokens_of_children, $config, $context);
|
|
|
|
} else {
|
|
|
|
return $this->inline->validateChildren(
|
|
|
|
$tokens_of_children, $config, $context);
|
2006-11-22 18:55:15 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-12-06 09:24:59 +00:00
|
|
|
// vim: et sw=4 sts=4
|