Blame | Last modification | View Log
<?php/*** Smarty plugin** @package Smarty* @subpackage PluginsFunction*//*** Smarty {html_checkboxes} function plugin* File: function.html_checkboxes.php* Type: function* Name: html_checkboxes* Date: 24.Feb.2003* Purpose: Prints out a list of checkbox input types* Examples:** {html_checkboxes values=$ids output=$names}* {html_checkboxes values=$ids name='box' separator='<br>' output=$names}* {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}** Params:** - name (optional) - string default "checkbox"* - values (required) - array* - options (optional) - associative array* - checked (optional) - array default not set* - separator (optional) - ie <br> or * - output (optional) - the output next to each checkbox* - assign (optional) - assign the output as an array to this variable* - escape (optional) - escape the content (not value), defaults to true** @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}* (Smarty online manual)* @author Christopher Kvarme <christopher.kvarme@flashjab.com>* @author credits to Monte Ohrt <monte at ohrt dot com>* @version 1.0** @param array $params parameters* @param Smarty_Internal_Template $template template object** @return string* @uses smarty_function_escape_special_chars()* @throws \SmartyException*/function smarty_function_html_checkboxes($params, Smarty_Internal_Template $template){$template->_checkPlugins(array(array('function' => 'smarty_function_escape_special_chars','file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php')));$name = 'checkbox';$values = null;$options = null;$selected = array();$separator = '';$escape = true;$labels = true;$label_ids = false;$output = null;$extra = '';foreach ($params as $_key => $_val) {switch ($_key) {case 'name':case 'separator':$$_key = (string)$_val;break;case 'escape':case 'labels':case 'label_ids':$$_key = (bool)$_val;break;case 'options':$$_key = (array)$_val;break;case 'values':case 'output':$$_key = array_values((array)$_val);break;case 'checked':case 'selected':if (is_array($_val)) {$selected = array();foreach ($_val as $_sel) {if (is_object($_sel)) {if (method_exists($_sel, '__toString')) {$_sel = smarty_function_escape_special_chars((string)$_sel->__toString());} else {trigger_error('html_checkboxes: selected attribute contains an object of class \'' .get_class($_sel) . '\' without __toString() method',E_USER_NOTICE);continue;}} else {$_sel = smarty_function_escape_special_chars((string)$_sel);}$selected[ $_sel ] = true;}} elseif (is_object($_val)) {if (method_exists($_val, '__toString')) {$selected = smarty_function_escape_special_chars((string)$_val->__toString());} else {trigger_error('html_checkboxes: selected attribute is an object of class \'' . get_class($_val) .'\' without __toString() method',E_USER_NOTICE);}} else {$selected = smarty_function_escape_special_chars((string)$_val);}break;case 'checkboxes':trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead',E_USER_WARNING);$options = (array)$_val;break;case 'assign':break;case 'strict':break;case 'disabled':case 'readonly':if (!empty($params[ 'strict' ])) {if (!is_scalar($_val)) {trigger_error("html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute",E_USER_NOTICE);}if ($_val === true || $_val === $_key) {$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';}break;}// omit break; to fall through!// no breakdefault:if (!is_array($_val)) {$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';} else {trigger_error("html_checkboxes: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE);}break;}}if (!isset($options) && !isset($values)) {return '';} /* raise error here? */$_html_result = array();if (isset($options)) {foreach ($options as $_key => $_val) {$_html_result[] =smarty_function_html_checkboxes_output($name,$_key,$_val,$selected,$extra,$separator,$labels,$label_ids,$escape);}} else {foreach ($values as $_i => $_key) {$_val = isset($output[ $_i ]) ? $output[ $_i ] : '';$_html_result[] =smarty_function_html_checkboxes_output($name,$_key,$_val,$selected,$extra,$separator,$labels,$label_ids,$escape);}}if (!empty($params[ 'assign' ])) {$template->assign($params[ 'assign' ], $_html_result);} else {return implode("\n", $_html_result);}}/*** @param $name* @param $value* @param $output* @param $selected* @param $extra* @param $separator* @param $labels* @param $label_ids* @param bool $escape** @return string*/function smarty_function_html_checkboxes_output($name,$value,$output,$selected,$extra,$separator,$labels,$label_ids,$escape = true) {$_output = '';if (is_object($value)) {if (method_exists($value, '__toString')) {$value = (string)$value->__toString();} else {trigger_error('html_options: value is an object of class \'' . get_class($value) .'\' without __toString() method',E_USER_NOTICE);return '';}} else {$value = (string)$value;}if (is_object($output)) {if (method_exists($output, '__toString')) {$output = (string)$output->__toString();} else {trigger_error('html_options: output is an object of class \'' . get_class($output) .'\' without __toString() method',E_USER_NOTICE);return '';}} else {$output = (string)$output;}if ($labels) {if ($label_ids) {$_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER,'_',$name . '_' . $value));$_output .= '<label for="' . $_id . '">';} else {$_output .= '<label>';}}$name = smarty_function_escape_special_chars($name);$value = smarty_function_escape_special_chars($value);if ($escape) {$output = smarty_function_escape_special_chars($output);}$_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"';if ($labels && $label_ids) {$_output .= ' id="' . $_id . '"';}if (is_array($selected)) {if (isset($selected[ $value ])) {$_output .= ' checked="checked"';}} elseif ($value === $selected) {$_output .= ' checked="checked"';}$_output .= $extra . ' />' . $output;if ($labels) {$_output .= '</label>';}$_output .= $separator;return $_output;}