Source for file forms.php
Documentation is available at forms.php
* forms.php - html form functions
* Functions to build HTML forms in a safe and consistent manner.
* All attribute values are sanitized with htmlspecialchars().
* Currently functions don't provide simple wrappers for file and
* image input fields, support only submit and reset buttons and use
* html input tags for buttons.
* * all form functions should support id tags. Original
* idea by dugan <at> passwall.com. Tags can be used for Section 508
* * input tag functions accept extra html attributes that can be submitted
* * default css class attributes are added.
* @link http://www.section508.gov/ Section 508
* @link http://www.w3.org/WAI/ Web Accessibility Initiative (WAI)
* @link http://www.w3.org/TR/html4/ W3.org HTML 4.01 form specs
* @copyright © 2004-2006 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: forms.php,v 1.24 2006/07/15 12:00:44 tokul Exp $
* Helper function to create form fields, not to be called directly,
* only by other functions below.
* Function used different syntax before 1.5.1
* @param string $sType type of input field. Possible values (html 4.01
* specs.): text, password, checkbox, radio, submit, reset, file,
* @param array $aAttribs (since 1.5.1) extra attributes. Array key is
* attribute name, array value is attribute value. Array keys must use
* @return string html formated input field
* @deprecated use other functions that provide simple wrappers to this function
// define unique identifier
if (! isset
($aAttribs['id']) && isset
($aAttribs['name']) &&
! is_null($aAttribs['name'])) {
* if 'id' is not set, set it to 'name' and replace brackets
* with underscores. 'name' might contain field name with squire
* brackets (array). Brackets are not allowed in id (validator.w3.org
* fails to validate document). According to html 4.01 manual cdata
* type description, 'name' attribute uses same type, but validator.w3.org
* does not barf on brackets in 'name' attributes.
$aAttribs['id'] =
strtr($aAttribs['name'],'[]','__');
// create attribute string (do we have to sanitize keys?)
foreach ($aAttribs as $key =>
$value) {
return '<input type="'.
$sType.
'"'.
$sAttribs.
" />\n";
* @param string $sName field name
* @param string $sValue initial password value
* @param array $aAttribs (since 1.5.1) extra attributes
* @return string html formated password field
function addPwField($sName, $sValue =
null, $aAttribs=
array()) {
$aAttribs['name'] =
$sName;
$aAttribs['value'] =
(! is_null($sValue) ?
$sValue :
'');
if (! isset
($aAttribs['class'])) $aAttribs['class'] =
'sqmpwfield';
* @param string $sName field name
* @param boolean $bChecked controls if field is checked
* @param array $aAttribs (since 1.5.1) extra attributes
* @return string html formated checkbox field
function addCheckBox($sName, $bChecked =
false, $sValue =
null, $aAttribs=
array()) {
$aAttribs['name'] =
$sName;
if ($bChecked) $aAttribs['checked'] =
'checked';
if (! is_null($sValue)) $aAttribs['value'] =
$sValue;
if (! isset
($aAttribs['class'])) $aAttribs['class'] =
'sqmcheckbox';
* @param string $sName field name
* @param boolean $bChecked controls if field is selected
* @param array $aAttribs (since 1.5.1) extra attributes.
* @return string html formated radio box
function addRadioBox($sName, $bChecked =
false, $sValue =
null, $aAttribs=
array()) {
$aAttribs['name'] =
$sName;
if ($bChecked) $aAttribs['checked'] =
'checked';
if (! is_null($sValue)) $aAttribs['value'] =
$sValue;
if (! isset
($aAttribs['id'])) $aAttribs['id'] =
$sName .
$sValue;
if (! isset
($aAttribs['class'])) $aAttribs['class'] =
'sqmradiobox';
* @param string $sName field name
* @param string $sValue field value
* @param array $aAttribs (since 1.5.1) extra attributes
* @return html formated hidden form field
function addHidden($sName, $sValue, $aAttribs=
array()) {
$aAttribs['name'] =
$sName;
$aAttribs['value'] =
$sValue;
if (! isset
($aAttribs['class'])) $aAttribs['class'] =
'sqmhiddenfield';
* @param string $sName field name
* @param string $sValue initial field value
* @param integer $iSize field size (number of characters)
* @param integer $iMaxlength maximum number of characters the user may enter
* @param array $aAttribs (since 1.5.1) extra attributes - should be given
* in the form array('attribute_name' => 'attribute_value', ...)
* @return string html formated text input field
function addInput($sName, $sValue =
'', $iSize =
0, $iMaxlength =
0, $aAttribs=
array()) {
$aAttribs['name'] =
$sName;
$aAttribs['value'] =
$sValue;
if ($iSize) $aAttribs['size'] = (int)
$iSize;
if ($iMaxlength) $aAttribs['maxlength'] = (int)
$iMaxlength;
if (! isset
($aAttribs['class'])) $aAttribs['class'] =
'sqmtextfield';
* Function to create a selectlist from an array.
* @param string $sName field name
* @param array $aValues field values array ( key => value ) -> <option value="key">value</option>
* @param mixed $default the key that will be selected
* @param boolean $bUsekeys use the keys of the array as option value or not
* @param array $aAttribs (since 1.5.1) extra attributes
* @return string html formated selection box
* @todo add attributes argument for option tags and default css
function addSelect($sName, $aValues, $default =
null, $bUsekeys =
false, $aAttribs =
array()) {
if(count($aValues) ==
1) {
return addHidden($sName, ($bUsekeys ?
$k:
$v), $aAttribs).
if (isset
($aAttribs['id'])) {
$label_close =
'</label>';
// create attribute string for select tag
foreach ($aAttribs as $key =>
$value) {
foreach ($aValues as $k =>
$v) {
$ret .=
'<option value="' .
(($default ==
$k) ?
' selected="selected"' :
'') .
* Note the switched value/name parameters!
* @param string $sValue button name
* @param string $sName submitted key name
* @param array $aAttribs (since 1.5.1) extra attributes
* @return string html formated submit input field
function addSubmit($sValue, $sName =
null, $aAttribs=
array()) {
$aAttribs['value'] =
$sValue;
if (! is_null($sName)) $aAttribs['name'] =
$sName;
if (! isset
($aAttribs['class'])) $aAttribs['class'] =
'sqmsubmitfield';
* @param string $sValue button name
* @param array $aAttribs (since 1.5.1) extra attributes
* @return string html formated reset input field
function addReset($sValue, $aAttribs=
array()) {
$aAttribs['value'] =
$sValue;
if (! isset
($aAttribs['class'])) $aAttribs['class'] =
'sqmresetfield';
* @param string $sName field name
* @param string $sText initial field value
* @param integer $iCols field width (number of chars)
* @param integer $iRows field height (number of character rows)
* @param array $aAttribs (since 1.5.1) extra attributes. function accepts string argument
* for backward compatibility.
* @return string html formated text area field
function addTextArea($sName, $sText =
'', $iCols =
40, $iRows =
10, $aAttribs =
array()) {
// maybe id can default to name?
if (isset
($aAttribs['id'])) {
$label_close =
'</label>';
if (! isset
($aAttribs['class'])) $aAttribs['class'] =
'sqmtextarea';
// create attribute string (do we have to sanitize keys?)
foreach ($aAttribs as $key =>
$value) {
// backward compatibility mode. deprecated.
$sAttribs =
' ' .
$aAttribs;
'rows="'.(int)
$iRows .
'" cols="'.(int)
$iCols.
'"'.
$sAttribs .
'>'.
$label_open .
htmlspecialchars($sText) .
$label_close .
"</textarea>\n";
* Make a <form> start-tag.
* @param string $sAction form handler URL
* @param string $sMethod http method used to submit form data. 'get' or 'post'
* @param string $sName form name used for identification (used for backward
* compatibility). Use of id is recommended.
* @param string $sEnctype content type that is used to submit data. html 4.01
* defaults to 'application/x-www-form-urlencoded'. Form with file field needs
* 'multipart/form-data' encoding type.
* @param string $sCharset charset that is used for submitted data
* @param array $aAttribs (since 1.5.1) extra attributes
* @return string html formated form start string
function addForm($sAction, $sMethod =
'post', $sName =
'', $sEnctype =
'', $sCharset =
'', $aAttribs =
array()) {
if (! isset
($aAttribs['id']) &&
! empty($sName))
$aAttribs['id'] =
$sName;
$sName =
' name="'.
$sName.
'"';
$sEnctype =
' enctype="'.
$sEnctype.
'"';
// create attribute string (do we have to sanitize keys?)
foreach ($aAttribs as $key =>
$value) {
return '<form action="'.
$sAction .
'" method="'.
$sMethod .
'"'.
$sEnctype .
$sName .
$sCharset .
$sAttribs .
">\n";
Documentation generated on Sat, 07 Oct 2006 16:11:06 +0300 by phpDocumentor 1.3.0RC6