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
 |