68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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
 |