63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * A "safe" object module. In theory, objects permitted by this module will
							 | 
						||
| 
								 | 
							
								 * be safe, and untrusted users can be allowed to embed arbitrary flash objects
							 | 
						||
| 
								 | 
							
								 * (maybe other types too, but only Flash is supported as of right now).
							 | 
						||
| 
								 | 
							
								 * Highly experimental.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class HTMLPurifier_HTMLModule_SafeObject extends HTMLPurifier_HTMLModule
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @type string
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public $name = 'SafeObject';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @param HTMLPurifier_Config $config
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function setup($config)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // These definitions are not intrinsically safe: the attribute transforms
							 | 
						||
| 
								 | 
							
								        // are a vital part of ensuring safety.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $max = $config->get('HTML.MaxImgLength');
							 | 
						||
| 
								 | 
							
								        $object = $this->addElement(
							 | 
						||
| 
								 | 
							
								            'object',
							 | 
						||
| 
								 | 
							
								            'Inline',
							 | 
						||
| 
								 | 
							
								            'Optional: param | Flow | #PCDATA',
							 | 
						||
| 
								 | 
							
								            'Common',
							 | 
						||
| 
								 | 
							
								            array(
							 | 
						||
| 
								 | 
							
								                // While technically not required by the spec, we're forcing
							 | 
						||
| 
								 | 
							
								                // it to this value.
							 | 
						||
| 
								 | 
							
								                'type' => 'Enum#application/x-shockwave-flash',
							 | 
						||
| 
								 | 
							
								                'width' => 'Pixels#' . $max,
							 | 
						||
| 
								 | 
							
								                'height' => 'Pixels#' . $max,
							 | 
						||
| 
								 | 
							
								                'data' => 'URI#embedded',
							 | 
						||
| 
								 | 
							
								                'codebase' => new HTMLPurifier_AttrDef_Enum(
							 | 
						||
| 
								 | 
							
								                    array(
							 | 
						||
| 
								 | 
							
								                        'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'
							 | 
						||
| 
								 | 
							
								                    )
							 | 
						||
| 
								 | 
							
								                ),
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        $object->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeObject();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $param = $this->addElement(
							 | 
						||
| 
								 | 
							
								            'param',
							 | 
						||
| 
								 | 
							
								            false,
							 | 
						||
| 
								 | 
							
								            'Empty',
							 | 
						||
| 
								 | 
							
								            false,
							 | 
						||
| 
								 | 
							
								            array(
							 | 
						||
| 
								 | 
							
								                'id' => 'ID',
							 | 
						||
| 
								 | 
							
								                'name*' => 'Text',
							 | 
						||
| 
								 | 
							
								                'value' => 'Text'
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        $param->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeParam();
							 | 
						||
| 
								 | 
							
								        $this->info_injector[] = 'SafeObject';
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// vim: et sw=4 sts=4
							 |