57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | /** | ||
|  |  * Performs miscellaneous cross attribute validation and filtering for | ||
|  |  * input elements. This is meant to be a post-transform. | ||
|  |  */ | ||
|  | class HTMLPurifier_AttrTransform_Input extends HTMLPurifier_AttrTransform | ||
|  | { | ||
|  |     /** | ||
|  |      * @type HTMLPurifier_AttrDef_HTML_Pixels | ||
|  |      */ | ||
|  |     protected $pixels; | ||
|  | 
 | ||
|  |     public function __construct() | ||
|  |     { | ||
|  |         $this->pixels = new HTMLPurifier_AttrDef_HTML_Pixels(); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @param array $attr | ||
|  |      * @param HTMLPurifier_Config $config | ||
|  |      * @param HTMLPurifier_Context $context | ||
|  |      * @return array | ||
|  |      */ | ||
|  |     public function transform($attr, $config, $context) | ||
|  |     { | ||
|  |         if (!isset($attr['type'])) { | ||
|  |             $t = 'text'; | ||
|  |         } else { | ||
|  |             $t = strtolower($attr['type']); | ||
|  |         } | ||
|  |         if (isset($attr['checked']) && $t !== 'radio' && $t !== 'checkbox') { | ||
|  |             unset($attr['checked']); | ||
|  |         } | ||
|  |         if (isset($attr['maxlength']) && $t !== 'text' && $t !== 'password') { | ||
|  |             unset($attr['maxlength']); | ||
|  |         } | ||
|  |         if (isset($attr['size']) && $t !== 'text' && $t !== 'password') { | ||
|  |             $result = $this->pixels->validate($attr['size'], $config, $context); | ||
|  |             if ($result === false) { | ||
|  |                 unset($attr['size']); | ||
|  |             } else { | ||
|  |                 $attr['size'] = $result; | ||
|  |             } | ||
|  |         } | ||
|  |         if (isset($attr['src']) && $t !== 'image') { | ||
|  |             unset($attr['src']); | ||
|  |         } | ||
|  |         if (!isset($attr['value']) && ($t === 'radio' || $t === 'checkbox')) { | ||
|  |             $attr['value'] = ''; | ||
|  |         } | ||
|  |         return $attr; | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | // vim: et sw=4 sts=4
 |