1<?php 2/** 3 * Base class for <input> elements 4 * 5 * PHP version 5 6 * 7 * LICENSE: 8 * 9 * Copyright (c) 2006-2010, Alexey Borzov <avb@php.net>, 10 * Bertrand Mansion <golgote@mamasam.com> 11 * All rights reserved. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions 15 * are met: 16 * 17 * * Redistributions of source code must retain the above copyright 18 * notice, this list of conditions and the following disclaimer. 19 * * Redistributions in binary form must reproduce the above copyright 20 * notice, this list of conditions and the following disclaimer in the 21 * documentation and/or other materials provided with the distribution. 22 * * The names of the authors may not be used to endorse or promote products 23 * derived from this software without specific prior written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 26 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 27 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 29 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 31 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 32 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 33 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 34 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 35 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 * 37 * @category HTML 38 * @package HTML_QuickForm2 39 * @author Alexey Borzov <avb@php.net> 40 * @author Bertrand Mansion <golgote@mamasam.com> 41 * @license http://opensource.org/licenses/bsd-license.php New BSD License 42 * @version SVN: $Id: Input.php 300722 2010-06-24 10:15:52Z mansion $ 43 * @link http://pear.php.net/package/HTML_QuickForm2 44 */ 45 46/** 47 * Base class for simple HTML_QuickForm2 elements (not Containers) 48 */ 49// require_once 'HTML/QuickForm2/Element.php'; 50 51/** 52 * Base class for <input> elements 53 * 54 * @category HTML 55 * @package HTML_QuickForm2 56 * @author Alexey Borzov <avb@php.net> 57 * @author Bertrand Mansion <golgote@mamasam.com> 58 * @version Release: @package_version@ 59 */ 60class HTML_QuickForm2_Element_Input extends HTML_QuickForm2_Element 61{ 62 /** 63 * 'type' attribute should not be changeable 64 * @var array 65 */ 66 protected $watchedAttributes = array('id', 'name', 'type'); 67 68 protected function onAttributeChange($name, $value = null) 69 { 70 if ('type' == $name) { 71 throw new HTML_QuickForm2_InvalidArgumentException( 72 "Attribute 'type' is read-only" 73 ); 74 } 75 parent::onAttributeChange($name, $value); 76 } 77 78 public function getType() 79 { 80 return $this->attributes['type']; 81 } 82 83 public function setValue($value) 84 { 85 $this->setAttribute('value', $value); 86 return $this; 87 } 88 89 public function getValue() 90 { 91 return $this->getAttribute('disabled')? null: $this->applyFilters($this->getAttribute('value')); 92 } 93 94 public function __toString() 95 { 96 if ($this->frozen) { 97 return $this->getFrozenHtml(); 98 } else { 99 return '<input' . $this->getAttributes(true) . ' />'; 100 } 101 } 102 103 /** 104 * Returns the field's value without HTML tags 105 * @return string 106 */ 107 protected function getFrozenHtml() 108 { 109 $value = $this->getAttribute('value'); 110 return (('' != $value)? htmlspecialchars($value, ENT_QUOTES, self::getOption('charset')): ' ') . 111 $this->getPersistentContent(); 112 } 113} 114?> 115