Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
420 lines (376 sloc) 10.5 KB
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP version 4.0 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Adam Daniel <adaniel1@eesus.jnj.com> |
// | Bertrand Mansion <bmansion@mamasam.com> |
// +----------------------------------------------------------------------+
//
// $Id$
require_once('HTML/Common.php');
/**
* Base class for form elements
*
* @author Adam Daniel <adaniel1@eesus.jnj.com>
* @author Bertrand Mansion <bmansion@mamasam.com>
* @version 1.3
* @since PHP4.04pl1
* @access public
* @abstract
*/
class HTML_QuickForm_element extends HTML_Common {
// {{{ properties
/**
* Label of the field
* @var string
* @since 1.3
* @access private
*/
var $_label = '';
/**
* Form element type
* @var string
* @since 1.0
* @access private
*/
var $_type = '';
/**
* Flag to tell if element is frozen
* @var
* @since 1.0
* @access private
*/
var $_flagFrozen = false;
/**
* Does the element support persistant data when frozen
* @var boolean
* @since 1.3
* @access private
*/
var $_persistantFreeze = false;
// }}}
// {{{ constructor
/**
* Class constructor
*
* @param mixed $attributes (optional)Associative array of table tag attributes
* or HTML attributes name="value" pairs
* @since 1.0
* @access public
* @return void
* @throws
*/
function HTML_QuickForm_element($elementName=null, $elementLabel=null, $attributes=null)
{
HTML_Common::HTML_Common($attributes);
if (isset($elementName)) {
$this->setName($elementName);
}
if (isset($elementLabel)) {
$this->setLabel($elementLabel);
}
} //end constructor
// }}}
// {{{ apiVersion()
/**
* Returns the current API version
*
* @since 1.0
* @access public
* @return float
*/
function apiVersion()
{
return 2.0;
} // end func apiVersion
// }}}
// {{{ getType()
/**
* Returns element type
*
* @since 1.0
* @access public
* @return string
* @throws
*/
function getType()
{
return $this->_type;
} // end func getType
// }}}
// {{{ setName()
/**
* Sets the input field name
*
* @param string $name Input field name attribute
* @since 1.0
* @access public
* @return void
* @throws
*/
function setName($name)
{
// interface method
} //end func setName
// }}}
// {{{ getName()
/**
* Returns the element name
*
* @since 1.0
* @access public
* @return string
* @throws
*/
function getName()
{
// interface method
} //end func getName
// }}}
// {{{ setValue()
/**
* Sets the value of the form element
*
* @param string $value Default value of the form element
* @since 1.0
* @access public
* @return void
* @throws
*/
function setValue($value)
{
// interface
} // end func setValue
// }}}
// {{{ getValue()
/**
* Returns the value of the form element
*
* @since 1.0
* @access public
* @return void
* @throws
*/
function getValue()
{
// interface
return null;
} // end func getValue
// }}}
// {{{ freeze()
/**
* Freeze the element so that only its value is returned
*
* @access public
* @return void
* @throws
*/
function freeze()
{
$this->_flagFrozen = true;
} //end func freeze
// }}}
// {{{ getFrozenHtml()
/**
* Returns the value of field without HTML tags
*
* @since 1.0
* @access public
* @return string
* @throws
*/
function getFrozenHtml()
{
$value = $this->getValue();
if ($value != '') {
$html = htmlspecialchars($value);
} else {
$html = '&nbsp;';
}
if ($this->_persistantFreeze) {
$html .= '<input type="hidden" name="' .
$this->getName() . '" value="' . htmlspecialchars($value) . '" />';
}
return $html;
} //end func getFrozenHtml
// }}}
// {{{ isFrozen()
/**
* Returns whether or not the element is frozen
*
* @since 1.3
* @access public
* @return void
* @throws
*/
function isFrozen()
{
return $this->_flagFrozen;
} // end func isFrozen
// }}}
// {{{ setPersistantFreeze()
/**
* Sets wether an element value should be kept in an hidden field
* when the element is frozen or not
*
* @param bool $persistant True if persistant value
* @since 2.0
* @access public
* @return void
* @throws
*/
function setPersistantFreeze($persistant=false)
{
$this->_persistantFreeze = $persistant;
} //end func setPersistantFreeze
// }}}
// {{{ setLabel()
/**
* Sets display text for the element
*
* @param string $label Display text for a checkbox
* @since 1.3
* @access public
* @return void
* @throws
*/
function setLabel($label)
{
$this->_label = $label;
} //end func setLabel
// }}}
// {{{ getLabel()
/**
* Returns display text for the element
*
* @since 1.3
* @access public
* @return string
* @throws
*/
function getLabel()
{
return $this->_label;
} //end func getLabel
// }}}
// {{{ _findValue()
/**
* Tries to find the element value from the submitted values array
*
* @since 2.7
* @access private
* @return string
* @throws
*/
function _findValue(&$values)
{
if (empty($values)) {
return null;
}
$elementName = $this->getName();
if (isset($values[$elementName])) {
$value = $values[$elementName];
if (is_string($value) && get_magic_quotes_gpc() == 1) {
$value = stripslashes($value);
}
return $value;
}
$myVar = str_replace(array(']', '['), array('', "']['"), $elementName);
$myVar = "['".$myVar."']";
$value = eval("return (isset(\$values$myVar)) ? \$values$myVar : null;");
if (is_string($value) && get_magic_quotes_gpc() == 1) {
$value = stripslashes($value);
}
return $value;
} //end func _findValue
// }}}
// {{{ onQuickFormEvent()
/**
* Called by HTML_QuickForm whenever form event is made on this element
*
* @param string $event Name of event
* @param mixed $arg event arguments
* @param object $callerLocal calling object
* @since 1.0
* @access public
* @return void
* @throws
*/
function onQuickFormEvent($event, $arg, &$caller)
{
switch ($event) {
case 'createElement':
$className = get_class($this);
$this->$className($arg[0], $arg[1], $arg[2], $arg[3], $arg[4]);
break;
case 'addElement':
$this->onQuickFormEvent('createElement', $arg, $caller);
$this->onQuickFormEvent('updateValue', null, $caller);
break;
case 'updateValue':
// constant values override both default and submitted ones
// default values are overriden by submitted
$value = $this->_findValue($caller->_constantValues);
if (null === $value) {
if (isset($caller->_submitValues) && count($caller->_submitValues) > 0) {
$value = $this->_findValue($caller->_submitValues);
} else {
$value = $this->_findValue($caller->_defaultValues);
}
}
if (null !== $value) {
$this->setValue($value);
}
break;
case 'setGroupValue':
$this->setValue($arg);
}
return true;
} // end func onQuickFormEvent
// }}}
// {{{ accept()
/**
* Accepts a renderer
*
* @param object An HTML_QuickForm_Renderer object
* @param bool Whether an element is required
* @param string An error message associated with an element
* @access public
* @return void
*/
function accept(&$renderer, $required=false, $error=null)
{
$renderer->renderElement($this, $required, $error);
} // end func accept
// }}}
// {{{ _generateId()
/**
* Automatically generates and assigns an 'id' attribute for the element.
*
* Currently used to ensure that labels work on radio buttons and
* checkboxes. Per idea of Alexander Radivanovich.
*
* @access private
* @return void
*/
function _generateId()
{
static $idx = 1;
if (!$this->getAttribute('id')) {
$this->updateAttributes(array('id' => 'qf_' . substr(md5(microtime() . $idx++), 0, 6)));
}
} // end func _generateId
// }}}
} // end class HTML_QuickForm_element
?>
Jump to Line
Something went wrong with that request. Please try again.