Source for file forms.php

Documentation is available at forms.php

  1. <?php
  2.  
  3. /**
  4.  * forms.php - html form functions
  5.  *
  6.  * Functions to build HTML forms in a safe and consistent manner.
  7.  * All name, value attributes are htmlentitied.
  8.  *
  9.  * @link http://www.section508.gov/ Section 508
  10.  * @link http://www.w3.org/WAI/ Web Accessibility Initiative (WAI)
  11.  * @link http://www.w3.org/TR/html4/ W3.org HTML 4.01 form specs
  12.  * @copyright 2004-2020 The SquirrelMail Project Team
  13.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  14.  * @version $Id: forms.php 14840 2020-01-07 07:42:38Z pdontthink $
  15.  * @package squirrelmail
  16.  * @subpackage forms
  17.  * @since 1.4.3 and 1.5.1
  18.  */
  19.  
  20. /**
  21.  * Helper function to create form fields, not to be called directly,
  22.  * only by other functions below.
  23.  */
  24. function addInputField($type, $name = null, $value = null, $attributes = '') {
  25.     return '<input type="'.$type.'"'.
  26.         ($name !== null ? ' name="'.sm_encode_html_special_chars($name).'"' : '').
  27.         ($name !== null && strpos($attributes, 'id="') === FALSE ? ' id="'.sm_encode_html_special_chars(strtr($name, '[]', '__')).'"' : '').
  28.         ($value !== null ? ' value="'.sm_encode_html_special_chars($value).'"' : '').
  29.         ' ' . $attributes . " />\n";
  30. }
  31.  
  32. /**
  33.  * Password input field
  34.  */
  35. function addPwField($name , $value = null, $extra_attributes='') {
  36.     return addInputField('password', $name , $value, $extra_attributes);
  37. }
  38.  
  39.  
  40. /**
  41.  * Form checkbox
  42.  */
  43. function addCheckBox($name, $checked = false, $value = null, $extra_attributes='') {
  44.     return addInputField('checkbox', $name, $value,
  45.         ($checked ? ' checked="checked"' : '') . $extra_attributes);
  46. }
  47.  
  48. /**
  49.  * Form radio box
  50.  */
  51. function addRadioBox($name, $checked = false, $value = null) {
  52.     return addInputField('radio', $name, $value,
  53.         ($checked ? ' checked="checked"' : ''));
  54. }
  55.  
  56. /**
  57.  * A hidden form field.
  58.  */
  59. function addHidden($name, $value) {
  60.     return addInputField('hidden', $name, $value);
  61. }
  62.  
  63. /**
  64.  * An input textbox.
  65.  */
  66. function addInput($name, $value = '', $size = 0, $maxlength = 0, $extra_attributes='') {
  67.  
  68.     if ($size) {
  69.         $extra_attributes .= ' size="'.(int)$size.'"';
  70.     }
  71.     if ($maxlength) {
  72.         $extra_attributes .= ' maxlength="'.(int)$maxlength .'"';
  73.     }
  74.  
  75.     return addInputField('text', $name, $value, $extra_attributes);
  76. }
  77.  
  78.  
  79. /**
  80.  * Function to create a selectlist from an array.
  81.  * Usage:
  82.  * name: html name attribute
  83.  * values: array ( key => value )  ->     <option value="key">value</option>
  84.  * default: the key that will be selected
  85.  * usekeys: use the keys of the array as option value or not
  86.  */
  87. function addSelect($name, $values, $default = null, $usekeys = false)
  88. {
  89.     // only one element
  90.     if(count($values) == 1) {
  91.         $k = key($values); $v = array_pop($values);
  92.         return addHidden($name, ($usekeys ? $k:$v)).
  93.             sm_encode_html_special_chars($v) . "\n";
  94.     }
  95.  
  96.     $ret = '<select name="'.sm_encode_html_special_chars($name)
  97.          . ($name !== null ? '" id="'.sm_encode_html_special_chars(strtr($name, '[]', '__')).'"' : '"')
  98.          . ">\n";
  99.     foreach ($values as $k => $v) {
  100.         if(!$usekeys) $k = $v;
  101.         $ret .= '<option value="' .
  102.             sm_encode_html_special_chars( $k ) . '"' .
  103.             (($default == $k) ? ' selected="selected"' : '') .
  104.             '>' . sm_encode_html_special_chars($v) ."</option>\n";
  105.     }
  106.     $ret .= "</select>\n";
  107.  
  108.     return $ret;
  109. }
  110.  
  111. /**
  112.  * Form submission button
  113.  * Note the switched value/name parameters!
  114.  */
  115. function addSubmit($value, $name = null, $extra_attributes='') {
  116.     return addInputField('submit', $name, $value, $extra_attributes);
  117. }
  118. /**
  119.  * Form reset button, $value = caption
  120.  */
  121. function addReset($value) {
  122.     return addInputField('reset', null, $value);
  123. }
  124.  
  125. /**
  126.  * Textarea form element.
  127.  */
  128. function addTextArea($name, $text = '', $cols = 40, $rows = 10, $attr = '') {
  129.     return '<textarea name="'.sm_encode_html_special_chars($name).'" '.
  130.         ($name !== null && strpos($attr, 'id="') === FALSE ? 'id="'.sm_encode_html_special_chars(strtr($name, '[]', '__')).'" ' : ' ').
  131.         'rows="'.(int)$rows .'" cols="'.(int)$cols.'" '.
  132.         $attr . '>'. "\n" . sm_encode_html_special_chars($text) ."</textarea>\n";
  133. }
  134.  
  135. /**
  136.  * Make a <form> start-tag.
  137.  *
  138.  * @param string $action 
  139.  * @param string $method 
  140.  * @param string $name 
  141.  * @param string $enctype 
  142.  * @param string $charset 
  143.  * @param string $extra     Any other attributes can be added with this parameter;
  144.  *                           they should use double quotes around attribute values
  145.  *                           (OPTIONAL; default empty)
  146.  * @param mixed  $add_token When given as a string or as boolean TRUE, a hidden
  147.  *                           input is also added to the form containing a security
  148.  *                           token.  When given as TRUE, the input name is "smtoken";
  149.  *                           otherwise the name is the string that is given for this
  150.  *                           parameter.  When FALSE, no hidden token input field is
  151.  *                           added.  (OPTIONAL; default not used)
  152.  *
  153.  */
  154. function addForm($action, $method = 'post', $name = '', $enctype = '', $charset = '', $extra = '', $add_token = FALSE)
  155. {
  156.     if($name) {
  157.         $name = ' name="'.$name.'"';
  158.     }
  159.     if($enctype) {
  160.         $enctype = ' enctype="'.$enctype.'"';
  161.     }
  162.     if($charset) {
  163.         $charset = ' accept-charset="'.sm_encode_html_special_chars($charset).'"';
  164.     }
  165.  
  166.     $form_string = '<form action="'. $action .'" method="'. $method .'"'.
  167.         $enctype . $name . $charset . ' ' . $extra . " >\n";
  168.  
  169.     if($add_token) {
  170.         $form_string .= '<input type="hidden" value="' . sm_generate_security_token()
  171.                       . '" name="' . (is_string($add_token) ? $add_token : 'smtoken')
  172.                       . "\" />\n";
  173.     }
  174.  
  175.     return $form_string;
  176. }

Documentation generated on Mon, 13 Jan 2020 04:24:38 +0100 by phpDocumentor 1.4.3