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
							 |