[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/Smarty/libs/plugins/ -> function.html_radios.php (source)

   1  <?php
   2  /**
   3   * Smarty plugin
   4   * 
   5   * @package Smarty
   6   * @subpackage PluginsFunction
   7   */
   8  
   9  /**
  10   * Smarty {html_radios} function plugin
  11   * 
  12   * File:       function.html_radios.php<br>
  13   * Type:       function<br>
  14   * Name:       html_radios<br>
  15   * Date:       24.Feb.2003<br>
  16   * Purpose:    Prints out a list of radio input types<br>
  17   * Params:
  18   * <pre>
  19   * - name       (optional) - string default "radio"
  20   * - values     (required) - array
  21   * - options    (required) - associative array
  22   * - checked    (optional) - array default not set
  23   * - separator  (optional) - ie <br> or &nbsp;
  24   * - output     (optional) - the output next to each radio button
  25   * - assign     (optional) - assign the output as an array to this variable
  26   * - escape     (optional) - escape the content (not value), defaults to true
  27   * </pre>
  28   * Examples:
  29   * <pre>
  30   * {html_radios values=$ids output=$names}
  31   * {html_radios values=$ids name='box' separator='<br>' output=$names}
  32   * {html_radios values=$ids checked=$checked separator='<br>' output=$names}
  33   * </pre>
  34   * 
  35   * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
  36   *      (Smarty online manual)
  37   * @author Christopher Kvarme <[email protected]> 
  38   * @author credits to Monte Ohrt <monte at ohrt dot com> 
  39   * @version 1.0
  40   * @param array                    $params   parameters
  41   * @param Smarty_Internal_Template $template template object
  42   * @return string 
  43   * @uses smarty_function_escape_special_chars()
  44   */
  45  function smarty_function_html_radios($params, $template)
  46  {
  47      require_once (SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
  48  
  49      $name = 'radio';
  50      $values = null;
  51      $options = null;
  52      $selected = null;
  53      $separator = '';
  54      $escape = true;
  55      $labels = true;
  56      $label_ids = false;
  57      $output = null;
  58      $extra = '';
  59  
  60      foreach($params as $_key => $_val) {
  61          switch ($_key) {
  62              case 'name':
  63              case 'separator':
  64                  $$_key = (string) $_val;
  65                  break;
  66  
  67              case 'checked':
  68              case 'selected':
  69                  if (is_array($_val)) {
  70                      trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
  71                  } elseif (is_object($_val)) {
  72                      if (method_exists($_val, "__toString")) {
  73                          $selected = smarty_function_escape_special_chars((string) $_val->__toString());
  74                      } else {
  75                          trigger_error("html_radios: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
  76                      }
  77                  } else {
  78                      $selected = (string) $_val;
  79                  } 
  80                  break;
  81  
  82              case 'escape':
  83              case 'labels':
  84              case 'label_ids':
  85                  $$_key = (bool) $_val;
  86                  break;
  87  
  88              case 'options':
  89                  $$_key = (array) $_val;
  90                  break;
  91  
  92              case 'values':
  93              case 'output':
  94                  $$_key = array_values((array) $_val);
  95                  break;
  96  
  97              case 'radios':
  98                  trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead', E_USER_WARNING);
  99                  $options = (array) $_val;
 100                  break;
 101  
 102              case 'assign':
 103                  break;
 104  
 105              default:
 106                  if (!is_array($_val)) {
 107                      $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
 108                  } else {
 109                      trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
 110                  } 
 111                  break;
 112          } 
 113      } 
 114  
 115      if (!isset($options) && !isset($values)) {
 116          /* raise error here? */
 117          return '';
 118      }
 119  
 120      $_html_result = array();
 121  
 122      if (isset($options)) {
 123          foreach ($options as $_key => $_val) {
 124              $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
 125          }
 126      } else {
 127          foreach ($values as $_i => $_key) {
 128              $_val = isset($output[$_i]) ? $output[$_i] : '';
 129              $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
 130          } 
 131      } 
 132  
 133      if (!empty($params['assign'])) {
 134          $template->assign($params['assign'], $_html_result);
 135      } else {
 136          return implode("\n", $_html_result);
 137      } 
 138  } 
 139  
 140  function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape)
 141  {
 142      $_output = '';
 143      
 144      if (is_object($value)) {
 145          if (method_exists($value, "__toString")) {
 146              $value = (string) $value->__toString();
 147          } else {
 148              trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
 149              return '';
 150          }
 151      } else {
 152          $value = (string) $value;
 153      }
 154      
 155      if (is_object($output)) {
 156          if (method_exists($output, "__toString")) {
 157              $output = (string) $output->__toString();
 158          } else {
 159              trigger_error("html_options: output is an object of class '". get_class($output) ."' without __toString() method", E_USER_NOTICE);
 160              return '';
 161          }
 162      } else {
 163          $output = (string) $output;
 164      }
 165      
 166      if ($labels) {
 167          if ($label_ids) {
 168              $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
 169              $_output .= '<label for="' . $_id . '">';
 170          } else {
 171              $_output .= '<label>';
 172          } 
 173      }
 174      
 175      $name = smarty_function_escape_special_chars($name);
 176      $value = smarty_function_escape_special_chars($value);
 177      if ($escape) {
 178          $output = smarty_function_escape_special_chars($output);
 179      }
 180      
 181      $_output .= '<input type="radio" name="' . $name . '" value="' . $value . '"';
 182  
 183      if ($labels && $label_ids) {
 184          $_output .= ' id="' . $_id . '"';
 185      }
 186  
 187      if ($value === $selected) {
 188          $_output .= ' checked="checked"';
 189      }
 190      
 191      $_output .= $extra . ' />' . $output;
 192      if ($labels) {
 193          $_output .= '</label>';
 194      }
 195      
 196      $_output .= $separator;
 197      return $_output;
 198  } 
 199  
 200  ?>


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1