diff options
Diffstat (limited to 'lib/smarty3/plugins')
47 files changed, 1146 insertions, 998 deletions
diff --git a/lib/smarty3/plugins/block.textformat.php b/lib/smarty3/plugins/block.textformat.php index e9f5fe2..5e49463 100644 --- a/lib/smarty3/plugins/block.textformat.php +++ b/lib/smarty3/plugins/block.textformat.php @@ -5,22 +5,20 @@ * @package Smarty * @subpackage PluginsBlock */ - /** * Smarty {textformat}{/textformat} block plugin - * Type: block function<br> - * Name: textformat<br> + * Type: block function + * Name: textformat * Purpose: format text a certain way with preset styles - * or custom wrap/indent settings<br> + * or custom wrap/indent settings * Params: - * <pre> + * * - style - string (email) * - indent - integer (0) * - wrap - integer (80) * - wrap_char - string ("\n") * - indent_char - string (" ") * - wrap_boundary - boolean (true) - * </pre> * * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat} * (Smarty online manual) @@ -32,13 +30,23 @@ * * @return string content re-formatted * @author Monte Ohrt <monte at ohrt dot com> + * @throws \SmartyException */ -function smarty_block_textformat($params, $content, $template, &$repeat) +function smarty_block_textformat($params, $content, Smarty_Internal_Template $template, &$repeat) { if (is_null($content)) { return; } - + if (Smarty::$_MBSTRING) { + $template->_checkPlugins( + array( + array( + 'function' => 'smarty_modifier_mb_wordwrap', + 'file' => SMARTY_PLUGINS_DIR . 'modifier.mb_wordwrap.php' + ) + ) + ); + } $style = null; $indent = 0; $indent_first = 0; @@ -47,53 +55,55 @@ function smarty_block_textformat($params, $content, $template, &$repeat) $wrap_char = "\n"; $wrap_cut = false; $assign = null; - foreach ($params as $_key => $_val) { switch ($_key) { case 'style': case 'indent_char': case 'wrap_char': case 'assign': - $$_key = (string) $_val; + $$_key = (string)$_val; break; - case 'indent': case 'indent_first': case 'wrap': - $$_key = (int) $_val; + $$_key = (int)$_val; break; - case 'wrap_cut': - $$_key = (bool) $_val; + $$_key = (bool)$_val; break; - default: - trigger_error("textformat: unknown attribute '$_key'"); + trigger_error("textformat: unknown attribute '{$_key}'"); } } - - if ($style == 'email') { + if ($style === 'email') { $wrap = 72; } // split into paragraphs $_paragraphs = preg_split('![\r\n]{2}!', $content); - foreach ($_paragraphs as &$_paragraph) { if (!$_paragraph) { continue; } // convert mult. spaces & special chars to single space $_paragraph = - preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER), - array(' ', ''), $_paragraph); + preg_replace( + array( + '!\s+!' . Smarty::$_UTF8_MODIFIER, + '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER + ), + array( + ' ', + '' + ), + $_paragraph + ); // indent first line if ($indent_first > 0) { $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph; } // wordwrap sentences if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php'); - $_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); + $_paragraph = smarty_modifier_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); } else { $_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); } @@ -103,7 +113,6 @@ function smarty_block_textformat($params, $content, $template, &$repeat) } } $_output = implode($wrap_char . $wrap_char, $_paragraphs); - if ($assign) { $template->assign($assign, $_output); } else { diff --git a/lib/smarty3/plugins/function.counter.php b/lib/smarty3/plugins/function.counter.php index bcc8f49..a4129e7 100644 --- a/lib/smarty3/plugins/function.counter.php +++ b/lib/smarty3/plugins/function.counter.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsFunction */ - /** * Smarty {counter} function plugin - * Type: function<br> - * Name: counter<br> + * Type: function + * Name: counter * Purpose: print out a counter value * * @author Monte Ohrt <monte at ohrt dot com> @@ -24,50 +23,40 @@ function smarty_function_counter($params, $template) { static $counters = array(); - $name = (isset($params[ 'name' ])) ? $params[ 'name' ] : 'default'; if (!isset($counters[ $name ])) { $counters[ $name ] = array('start' => 1, 'skip' => 1, 'direction' => 'up', 'count' => 1); } $counter =& $counters[ $name ]; - if (isset($params[ 'start' ])) { - $counter[ 'start' ] = $counter[ 'count' ] = (int) $params[ 'start' ]; + $counter[ 'start' ] = $counter[ 'count' ] = (int)$params[ 'start' ]; } - if (!empty($params[ 'assign' ])) { $counter[ 'assign' ] = $params[ 'assign' ]; } - if (isset($counter[ 'assign' ])) { $template->assign($counter[ 'assign' ], $counter[ 'count' ]); } - if (isset($params[ 'print' ])) { - $print = (bool) $params[ 'print' ]; + $print = (bool)$params[ 'print' ]; } else { $print = empty($counter[ 'assign' ]); } - if ($print) { $retval = $counter[ 'count' ]; } else { $retval = null; } - if (isset($params[ 'skip' ])) { $counter[ 'skip' ] = $params[ 'skip' ]; } - if (isset($params[ 'direction' ])) { $counter[ 'direction' ] = $params[ 'direction' ]; } - - if ($counter[ 'direction' ] == "down") { + if ($counter[ 'direction' ] === 'down') { $counter[ 'count' ] -= $counter[ 'skip' ]; } else { $counter[ 'count' ] += $counter[ 'skip' ]; } - return $retval; } diff --git a/lib/smarty3/plugins/function.cycle.php b/lib/smarty3/plugins/function.cycle.php index a76d49a..07ffcc5 100644 --- a/lib/smarty3/plugins/function.cycle.php +++ b/lib/smarty3/plugins/function.cycle.php @@ -5,15 +5,14 @@ * @package Smarty * @subpackage PluginsFunction */ - /** * Smarty {cycle} function plugin - * Type: function<br> - * Name: cycle<br> - * Date: May 3, 2002<br> - * Purpose: cycle through given values<br> + * Type: function + * Name: cycle + * Date: May 3, 2002 + * Purpose: cycle through given values * Params: - * <pre> + * * - name - name of cycle (optional) * - values - comma separated list of values to cycle, or an array of values to cycle * (this can be left out for subsequent calls) @@ -22,84 +21,72 @@ * - advance - boolean - whether or not to advance the cycle * - delimiter - the value delimiter, default is "," * - assign - boolean, assigns to template var instead of printed. - * </pre> - * Examples:<br> - * <pre> + * + * Examples: + * * {cycle values="#eeeeee,#d0d0d0d"} * {cycle name=row values="one,two,three" reset=true} * {cycle name=row} - * </pre> * - * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle} + * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle} * (Smarty online manual) - * @author Monte Ohrt <monte at ohrt dot com> - * @author credit to Mark Priatel <mpriatel@rogers.com> - * @author credit to Gerard <gerard@interfold.com> - * @author credit to Jason Sweat <jsweat_php@yahoo.com> - * @version 1.3 + * @author Monte Ohrt <monte at ohrt dot com> + * @author credit to Mark Priatel <mpriatel@rogers.com> + * @author credit to Gerard <gerard@interfold.com> + * @author credit to Jason Sweat <jsweat_php@yahoo.com> + * @version 1.3 * * @param array $params parameters * @param Smarty_Internal_Template $template template object * * @return string|null */ - function smarty_function_cycle($params, $template) { static $cycle_vars; - $name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ]; - $print = (isset($params[ 'print' ])) ? (bool) $params[ 'print' ] : true; - $advance = (isset($params[ 'advance' ])) ? (bool) $params[ 'advance' ] : true; - $reset = (isset($params[ 'reset' ])) ? (bool) $params[ 'reset' ] : false; - + $print = (isset($params[ 'print' ])) ? (bool)$params[ 'print' ] : true; + $advance = (isset($params[ 'advance' ])) ? (bool)$params[ 'advance' ] : true; + $reset = (isset($params[ 'reset' ])) ? (bool)$params[ 'reset' ] : false; if (!isset($params[ 'values' ])) { if (!isset($cycle_vars[ $name ][ 'values' ])) { - trigger_error("cycle: missing 'values' parameter"); - + trigger_error('cycle: missing \'values\' parameter'); return; } } else { - if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] != $params[ 'values' ]) { + if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] !== $params[ 'values' ]) { $cycle_vars[ $name ][ 'index' ] = 0; } $cycle_vars[ $name ][ 'values' ] = $params[ 'values' ]; } - if (isset($params[ 'delimiter' ])) { $cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ]; } elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) { $cycle_vars[ $name ][ 'delimiter' ] = ','; } - if (is_array($cycle_vars[ $name ][ 'values' ])) { $cycle_array = $cycle_vars[ $name ][ 'values' ]; } else { $cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]); } - if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) { $cycle_vars[ $name ][ 'index' ] = 0; } - if (isset($params[ 'assign' ])) { $print = false; $template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]); } - if ($print) { $retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]; } else { $retval = null; } - if ($advance) { if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) { $cycle_vars[ $name ][ 'index' ] = 0; } else { - $cycle_vars[ $name ][ 'index' ] ++; + $cycle_vars[ $name ][ 'index' ]++; } } - return $retval; } diff --git a/lib/smarty3/plugins/function.fetch.php b/lib/smarty3/plugins/function.fetch.php index cb60dd9..768761b 100644 --- a/lib/smarty3/plugins/function.fetch.php +++ b/lib/smarty3/plugins/function.fetch.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsFunction */ - /** * Smarty {fetch} plugin - * Type: function<br> - * Name: fetch<br> + * Type: function + * Name: fetch * Purpose: fetch file, web or ftp data and display results * * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch} @@ -25,21 +24,17 @@ function smarty_function_fetch($params, $template) { if (empty($params[ 'file' ])) { - trigger_error("[plugin] fetch parameter 'file' cannot be empty", E_USER_NOTICE); - + trigger_error('[plugin] fetch parameter \'file\' cannot be empty', E_USER_NOTICE); return; } - // strip file protocol if (stripos($params[ 'file' ], 'file://') === 0) { $params[ 'file' ] = substr($params[ 'file' ], 7); } - $protocol = strpos($params[ 'file' ], '://'); if ($protocol !== false) { $protocol = strtolower(substr($params[ 'file' ], 0, $protocol)); } - if (isset($template->smarty->security_policy)) { if ($protocol) { // remote resource (or php stream, …) @@ -53,17 +48,16 @@ function smarty_function_fetch($params, $template) } } } - $content = ''; - if ($protocol == 'http') { + if ($protocol === 'http') { // http fetch if ($uri_parts = parse_url($params[ 'file' ])) { // set defaults $host = $server_name = $uri_parts[ 'host' ]; $timeout = 30; - $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"; - $agent = "Smarty Template Engine " . Smarty::SMARTY_VERSION; - $referer = ""; + $accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*'; + $agent = 'Smarty Template Engine ' . Smarty::SMARTY_VERSION; + $referer = ''; $uri = !empty($uri_parts[ 'path' ]) ? $uri_parts[ 'path' ] : '/'; $uri .= !empty($uri_parts[ 'query' ]) ? '?' . $uri_parts[ 'query' ] : ''; $_is_proxy = false; @@ -81,72 +75,68 @@ function smarty_function_fetch($params, $template) // loop through parameters, setup headers foreach ($params as $param_key => $param_value) { switch ($param_key) { - case "file": - case "assign": - case "assign_headers": + case 'file': + case 'assign': + case 'assign_headers': break; - case "user": + case 'user': if (!empty($param_value)) { $user = $param_value; } break; - case "pass": + case 'pass': if (!empty($param_value)) { $pass = $param_value; } break; - case "accept": + case 'accept': if (!empty($param_value)) { $accept = $param_value; } break; - case "header": + case 'header': if (!empty($param_value)) { if (!preg_match('![\w\d-]+: .+!', $param_value)) { - trigger_error("[plugin] invalid header format '" . $param_value . "'", E_USER_NOTICE); - + trigger_error("[plugin] invalid header format '{$param_value}'", E_USER_NOTICE); return; } else { $extra_headers[] = $param_value; } } break; - case "proxy_host": + case 'proxy_host': if (!empty($param_value)) { $proxy_host = $param_value; } break; - case "proxy_port": + case 'proxy_port': if (!preg_match('!\D!', $param_value)) { - $proxy_port = (int) $param_value; + $proxy_port = (int)$param_value; } else { - trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE); - + trigger_error("[plugin] invalid value for attribute '{$param_key }'", E_USER_NOTICE); return; } break; - case "agent": + case 'agent': if (!empty($param_value)) { $agent = $param_value; } break; - case "referer": + case 'referer': if (!empty($param_value)) { $referer = $param_value; } break; - case "timeout": + case 'timeout': if (!preg_match('!\D!', $param_value)) { - $timeout = (int) $param_value; + $timeout = (int)$param_value; } else { - trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE); - + trigger_error("[plugin] invalid value for attribute '{$param_key}'", E_USER_NOTICE); return; } break; default: - trigger_error("[plugin] unrecognized attribute '" . $param_key . "'", E_USER_NOTICE); - + trigger_error("[plugin] unrecognized attribute '{$param_key}'", E_USER_NOTICE); return; } } @@ -156,10 +146,8 @@ function smarty_function_fetch($params, $template) } else { $fp = fsockopen($server_name, $port, $errno, $errstr, $timeout); } - if (!$fp) { trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE); - return; } else { if ($_is_proxy) { @@ -185,25 +173,21 @@ function smarty_function_fetch($params, $template) } } if (!empty($user) && !empty($pass)) { - fputs($fp, "Authorization: BASIC " . base64_encode("$user:$pass") . "\r\n"); + fputs($fp, 'Authorization: BASIC ' . base64_encode("$user:$pass") . "\r\n"); } - fputs($fp, "\r\n"); while (!feof($fp)) { $content .= fgets($fp, 4096); } fclose($fp); $csplit = preg_split("!\r\n\r\n!", $content, 2); - $content = $csplit[ 1 ]; - if (!empty($params[ 'assign_headers' ])) { $template->assign($params[ 'assign_headers' ], preg_split("!\r\n!", $csplit[ 0 ])); } } } else { trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE); - return; } } else { @@ -212,7 +196,6 @@ function smarty_function_fetch($params, $template) throw new SmartyException("{fetch} cannot read resource '" . $params[ 'file' ] . "'"); } } - if (!empty($params[ 'assign' ])) { $template->assign($params[ 'assign' ], $content); } else { diff --git a/lib/smarty3/plugins/function.html_checkboxes.php b/lib/smarty3/plugins/function.html_checkboxes.php index 33f2efe..302358e 100644 --- a/lib/smarty3/plugins/function.html_checkboxes.php +++ b/lib/smarty3/plugins/function.html_checkboxes.php @@ -5,22 +5,21 @@ * @package Smarty * @subpackage PluginsFunction */ - /** * Smarty {html_checkboxes} function plugin - * File: function.html_checkboxes.php<br> - * Type: function<br> - * Name: html_checkboxes<br> - * Date: 24.Feb.2003<br> - * Purpose: Prints out a list of checkbox input types<br> + * File: function.html_checkboxes.php + * Type: function + * Name: html_checkboxes + * Date: 24.Feb.2003 + * Purpose: Prints out a list of checkbox input types * Examples: - * <pre> + * * {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} - * </pre> + * * Params: - * <pre> + * * - name (optional) - string default "checkbox" * - values (required) - array * - options (optional) - associative array @@ -29,24 +28,30 @@ * - 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 - * </pre> * - * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} + * @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 + * @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 object $template template object + * @param array $params parameters + * @param Smarty_Internal_Template $template template object * * @return string - * @uses smarty_function_escape_special_chars() + * @uses smarty_function_escape_special_chars() + * @throws \SmartyException */ -function smarty_function_html_checkboxes($params, $template) +function smarty_function_html_checkboxes($params, Smarty_Internal_Template $template) { - require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); - + $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; @@ -56,120 +61,132 @@ function smarty_function_html_checkboxes($params, $template) $labels = true; $label_ids = false; $output = null; - $extra = ''; - foreach ($params as $_key => $_val) { switch ($_key) { case 'name': case 'separator': - $$_key = (string) $_val; + $$_key = (string)$_val; break; - case 'escape': case 'labels': case 'label_ids': - $$_key = (bool) $_val; + $$_key = (bool)$_val; break; - case 'options': - $$_key = (array) $_val; + $$_key = (array)$_val; break; - case 'values': case 'output': - $$_key = array_values((array) $_val); + $$_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()); + 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); + 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); + $_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()); + 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); + 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); + $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; + 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); + 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 break default: 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); + 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); + 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); + 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 { @@ -177,59 +194,82 @@ function smarty_function_html_checkboxes($params, $template) } } -function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, - $label_ids, $escape = true) -{ +/** + * @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(); + 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); - + trigger_error( + 'html_options: value is an object of class \'' . get_class($value) . + '\' without __toString() method', + E_USER_NOTICE + ); return ''; } } else { - $value = (string) $value; + $value = (string)$value; } - if (is_object($output)) { - if (method_exists($output, "__toString")) { - $output = (string) $output->__toString(); + 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); - + trigger_error( + 'html_options: output is an object of class \'' . get_class($output) . + '\' without __toString() method', + E_USER_NOTICE + ); return ''; } } else { - $output = (string) $output; + $output = (string)$output; } - if ($labels) { if ($label_ids) { - $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', - $name . '_' . $value)); + $_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"'; @@ -237,13 +277,10 @@ function smarty_function_html_checkboxes_output($name, $value, $output, $selecte } elseif ($value === $selected) { $_output .= ' checked="checked"'; } - $_output .= $extra . ' />' . $output; if ($labels) { $_output .= '</label>'; } - $_output .= $separator; - return $_output; } diff --git a/lib/smarty3/plugins/function.html_image.php b/lib/smarty3/plugins/function.html_image.php index 854af61..ad468e4 100644 --- a/lib/smarty3/plugins/function.html_image.php +++ b/lib/smarty3/plugins/function.html_image.php @@ -5,23 +5,21 @@ * @package Smarty * @subpackage PluginsFunction */ - /** * Smarty {html_image} function plugin - * Type: function<br> - * Name: html_image<br> - * Date: Feb 24, 2003<br> - * Purpose: format HTML tags for the image<br> - * Examples: {html_image file="/images/masthead.gif"}<br> - * Output: <img src="/images/masthead.gif" width=400 height=23><br> + * Type: function + * Name: html_image + * Date: Feb 24, 2003 + * Purpose: format HTML tags for the image + * Examples: {html_image file="/images/masthead.gif"} + * Output: <img src="/images/masthead.gif" width=400 height=23> * Params: - * <pre> + * * - file - (required) - file (and path) of image * - height - (optional) - image height (default actual height) * - width - (optional) - image width (default actual width) * - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT * - path_prefix - prefix for path output (optional, default empty) - * </pre> * * @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image} * (Smarty online manual) @@ -36,10 +34,16 @@ * @return string * @uses smarty_function_escape_special_chars() */ -function smarty_function_html_image($params, $template) +function smarty_function_html_image($params, Smarty_Internal_Template $template) { - require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); - + $template->_checkPlugins( + array( + array( + 'function' => 'smarty_function_escape_special_chars', + 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' + ) + ) + ); $alt = ''; $file = ''; $height = ''; @@ -59,53 +63,50 @@ function smarty_function_html_image($params, $template) case 'basedir': $$_key = $_val; break; - case 'alt': if (!is_array($_val)) { $$_key = smarty_function_escape_special_chars($_val); } else { - throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + throw new SmartyException( + "html_image: extra attribute '{$_key}' cannot be an array", + E_USER_NOTICE + ); } break; - case 'link': case 'href': $prefix = '<a href="' . $_val . '">'; $suffix = '</a>'; break; - default: if (!is_array($_val)) { $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; } else { - throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + throw new SmartyException( + "html_image: extra attribute '{$_key}' cannot be an array", + E_USER_NOTICE + ); } break; } } - if (empty($file)) { - trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE); - + trigger_error('html_image: missing \'file\' parameter', E_USER_NOTICE); return; } - - if ($file[ 0 ] == '/') { + if ($file[ 0 ] === '/') { $_image_path = $basedir . $file; } else { $_image_path = $file; } - // strip file protocol if (stripos($params[ 'file' ], 'file://') === 0) { $params[ 'file' ] = substr($params[ 'file' ], 7); } - $protocol = strpos($params[ 'file' ], '://'); if ($protocol !== false) { $protocol = strtolower(substr($params[ 'file' ], 0, $protocol)); } - if (isset($template->smarty->security_policy)) { if ($protocol) { // remote resource (or php stream, …) @@ -119,25 +120,20 @@ function smarty_function_html_image($params, $template) } } } - if (!isset($params[ 'width' ]) || !isset($params[ 'height' ])) { // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader! if (!$_image_data = @getimagesize($_image_path)) { if (!file_exists($_image_path)) { - trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE); - + trigger_error("html_image: unable to find '{$_image_path}'", E_USER_NOTICE); return; } elseif (!is_readable($_image_path)) { - trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE); - + trigger_error("html_image: unable to read '{$_image_path}'", E_USER_NOTICE); return; } else { - trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE); - + trigger_error("html_image: '{$_image_path}' is not a valid image file", E_USER_NOTICE); return; } } - if (!isset($params[ 'width' ])) { $width = $_image_data[ 0 ]; } @@ -145,7 +141,6 @@ function smarty_function_html_image($params, $template) $height = $_image_data[ 1 ]; } } - if (isset($params[ 'dpi' ])) { if (strstr($_SERVER[ 'HTTP_USER_AGENT' ], 'Mac')) { // FIXME: (rodneyrehm) wrong dpi assumption @@ -158,7 +153,6 @@ function smarty_function_html_image($params, $template) $width = round($width * $_resize); $height = round($height * $_resize); } - return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' . $height . '"' . $extra . ' />' . $suffix; } diff --git a/lib/smarty3/plugins/function.html_options.php b/lib/smarty3/plugins/function.html_options.php index 20e6677..6907e8e 100644 --- a/lib/smarty3/plugins/function.html_options.php +++ b/lib/smarty3/plugins/function.html_options.php @@ -5,15 +5,14 @@ * @package Smarty * @subpackage PluginsFunction */ - /** * Smarty {html_options} function plugin - * Type: function<br> - * Name: html_options<br> + * Type: function + * Name: html_options * Purpose: Prints the list of <option> tags generated from - * the passed parameters<br> + * the passed parameters * Params: - * <pre> + * * - name (optional) - string default "select" * - values (required) - if no options supplied) - array * - options (required) - if no values supplied) - associative array @@ -21,22 +20,30 @@ * - output (required) - if not options supplied) - array * - id (optional) - string default not set * - class (optional) - string default not set - * </pre> * - * @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image} + * @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image} * (Smarty online manual) - * @author Monte Ohrt <monte at ohrt dot com> - * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de> + * @author Monte Ohrt <monte at ohrt dot com> + * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de> * - * @param array $params parameters + * @param array $params parameters + * + * @param \Smarty_Internal_Template $template * * @return string - * @uses smarty_function_escape_special_chars() + * @uses smarty_function_escape_special_chars() + * @throws \SmartyException */ -function smarty_function_html_options($params) +function smarty_function_html_options($params, Smarty_Internal_Template $template) { - require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); - + $template->_checkPlugins( + array( + array( + 'function' => 'smarty_function_escape_special_chars', + 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' + ) + ) + ); $name = null; $values = null; $options = null; @@ -44,93 +51,88 @@ function smarty_function_html_options($params) $output = null; $id = null; $class = null; - $extra = ''; - foreach ($params as $_key => $_val) { switch ($_key) { case 'name': case 'class': case 'id': - $$_key = (string) $_val; + $$_key = (string)$_val; break; - case 'options': - $options = (array) $_val; + $options = (array)$_val; break; - case 'values': case 'output': - $$_key = array_values((array) $_val); + $$_key = array_values((array)$_val); break; - 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()); + if (method_exists($_sel, '__toString')) { + $_sel = smarty_function_escape_special_chars((string)$_sel->__toString()); } else { - trigger_error("html_options: selected attribute contains an object of class '" . - get_class($_sel) . "' without __toString() method", E_USER_NOTICE); + trigger_error( + 'html_options: 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); + $_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()); + if (method_exists($_val, '__toString')) { + $selected = smarty_function_escape_special_chars((string)$_val->__toString()); } else { - trigger_error("html_options: selected attribute is an object of class '" . get_class($_val) . - "' without __toString() method", E_USER_NOTICE); + trigger_error( + 'html_options: 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); + $selected = smarty_function_escape_special_chars((string)$_val); } 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); + 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 break default: if (!is_array($_val)) { $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; } else { - trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + trigger_error("html_options: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); } break; } } - if (!isset($options) && !isset($values)) { /* raise error here? */ - return ''; } - $_html_result = ''; $_idx = 0; - if (isset($options)) { foreach ($options as $_key => $_val) { $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx); @@ -141,7 +143,6 @@ function smarty_function_html_options($params) $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx); } } - if (!empty($name)) { $_html_class = !empty($class) ? ' class="' . $class . '"' : ''; $_html_id = !empty($id) ? ' id="' . $id . '"' : ''; @@ -149,10 +150,19 @@ function smarty_function_html_options($params) '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result . '</select>' . "\n"; } - return $_html_result; } +/** + * @param $key + * @param $value + * @param $selected + * @param $id + * @param $class + * @param $idx + * + * @return string + */ function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx) { if (!is_array($value)) { @@ -168,30 +178,47 @@ function smarty_function_html_options_optoutput($key, $value, $selected, $id, $c $_html_class = !empty($class) ? ' class="' . $class . ' option"' : ''; $_html_id = !empty($id) ? ' id="' . $id . '-' . $idx . '"' : ''; if (is_object($value)) { - if (method_exists($value, "__toString")) { - $value = smarty_function_escape_special_chars((string) $value->__toString()); + if (method_exists($value, '__toString')) { + $value = smarty_function_escape_special_chars((string)$value->__toString()); } else { - trigger_error("html_options: value is an object of class '" . get_class($value) . - "' without __toString() method", E_USER_NOTICE); - + trigger_error( + 'html_options: value is an object of class \'' . get_class($value) . + '\' without __toString() method', + E_USER_NOTICE + ); return ''; } } else { - $value = smarty_function_escape_special_chars((string) $value); + $value = smarty_function_escape_special_chars((string)$value); } $_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n"; - $idx ++; + $idx++; } else { $_idx = 0; $_html_result = - smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id . '-' . $idx) : null, - $class, $_idx); - $idx ++; + smarty_function_html_options_optgroup( + $key, + $value, + $selected, + !empty($id) ? ($id . '-' . $idx) : null, + $class, + $_idx + ); + $idx++; } - return $_html_result; } +/** + * @param $key + * @param $values + * @param $selected + * @param $id + * @param $class + * @param $idx + * + * @return string + */ function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx) { $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n"; @@ -199,6 +226,5 @@ function smarty_function_html_options_optgroup($key, $values, $selected, $id, $c $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx); } $optgroup_html .= "</optgroup>\n"; - return $optgroup_html; } diff --git a/lib/smarty3/plugins/function.html_radios.php b/lib/smarty3/plugins/function.html_radios.php index 53b342d..5e83458 100644 --- a/lib/smarty3/plugins/function.html_radios.php +++ b/lib/smarty3/plugins/function.html_radios.php @@ -5,16 +5,15 @@ * @package Smarty * @subpackage PluginsFunction */ - /** * Smarty {html_radios} function plugin - * File: function.html_radios.php<br> - * Type: function<br> - * Name: html_radios<br> - * Date: 24.Feb.2003<br> - * Purpose: Prints out a list of radio input types<br> + * File: function.html_radios.php + * Type: function + * Name: html_radios + * Date: 24.Feb.2003 + * Purpose: Prints out a list of radio input types * Params: - * <pre> + * * - name (optional) - string default "radio" * - values (required) - array * - options (required) - associative array @@ -23,13 +22,12 @@ * - output (optional) - the output next to each radio button * - assign (optional) - assign the output as an array to this variable * - escape (optional) - escape the content (not value), defaults to true - * </pre> + * * Examples: - * <pre> + * * {html_radios values=$ids output=$names} * {html_radios values=$ids name='box' separator='<br>' output=$names} * {html_radios values=$ids checked=$checked separator='<br>' output=$names} - * </pre> * * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios} * (Smarty online manual) @@ -42,11 +40,18 @@ * * @return string * @uses smarty_function_escape_special_chars() + * @throws \SmartyException */ -function smarty_function_html_radios($params, $template) +function smarty_function_html_radios($params, Smarty_Internal_Template $template) { - require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); - + $template->_checkPlugins( + array( + array( + 'function' => 'smarty_function_escape_special_chars', + 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' + ) + ) + ); $name = 'radio'; $values = null; $options = null; @@ -57,106 +62,115 @@ function smarty_function_html_radios($params, $template) $label_ids = false; $output = null; $extra = ''; - foreach ($params as $_key => $_val) { switch ($_key) { case 'name': case 'separator': - $$_key = (string) $_val; + $$_key = (string)$_val; break; - case 'checked': case 'selected': if (is_array($_val)) { trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING); } elseif (is_object($_val)) { - if (method_exists($_val, "__toString")) { - $selected = smarty_function_escape_special_chars((string) $_val->__toString()); + if (method_exists($_val, '__toString')) { + $selected = smarty_function_escape_special_chars((string)$_val->__toString()); } else { - trigger_error("html_radios: selected attribute is an object of class '" . get_class($_val) . - "' without __toString() method", E_USER_NOTICE); + trigger_error( + 'html_radios: selected attribute is an object of class \'' . get_class($_val) . + '\' without __toString() method', + E_USER_NOTICE + ); } } else { - $selected = (string) $_val; + $selected = (string)$_val; } break; - case 'escape': case 'labels': case 'label_ids': - $$_key = (bool) $_val; + $$_key = (bool)$_val; break; - case 'options': - $$_key = (array) $_val; + $$_key = (array)$_val; break; - case 'values': case 'output': - $$_key = array_values((array) $_val); + $$_key = array_values((array)$_val); break; - case 'radios': - trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead', - E_USER_WARNING); - $options = (array) $_val; + trigger_error( + 'html_radios: the use of the "radios" 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); + 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 break default: if (!is_array($_val)) { $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; } else { - trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + trigger_error("html_radios: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); } break; } } - if (!isset($options) && !isset($values)) { /* raise error here? */ - return ''; } - $_html_result = array(); - if (isset($options)) { foreach ($options as $_key => $_val) { $_html_result[] = - smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, - $label_ids, $escape); + smarty_function_html_radios_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_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, - $label_ids, $escape); + smarty_function_html_radios_output( + $name, + $_key, + $_val, + $selected, + $extra, + $separator, + $labels, + $label_ids, + $escape + ); } } - if (!empty($params[ 'assign' ])) { $template->assign($params[ 'assign' ], $_html_result); } else { @@ -164,69 +178,89 @@ function smarty_function_html_radios($params, $template) } } -function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, - $escape) -{ +/** + * @param $name + * @param $value + * @param $output + * @param $selected + * @param $extra + * @param $separator + * @param $labels + * @param $label_ids + * @param $escape + * + * @return string + */ +function smarty_function_html_radios_output( + $name, + $value, + $output, + $selected, + $extra, + $separator, + $labels, + $label_ids, + $escape +) { $_output = ''; - if (is_object($value)) { - if (method_exists($value, "__toString")) { - $value = (string) $value->__toString(); + 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); - + trigger_error( + 'html_options: value is an object of class \'' . get_class($value) . + '\' without __toString() method', + E_USER_NOTICE + ); return ''; } } else { - $value = (string) $value; + $value = (string)$value; } - if (is_object($output)) { - if (method_exists($output, "__toString")) { - $output = (string) $output->__toString(); + 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); - + trigger_error( + 'html_options: output is an object of class \'' . get_class($output) . + '\' without __toString() method', + E_USER_NOTICE + ); return ''; } } else { - $output = (string) $output; + $output = (string)$output; } - if ($labels) { if ($label_ids) { - $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', - $name . '_' . $value)); + $_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="radio" name="' . $name . '" value="' . $value . '"'; - if ($labels && $label_ids) { $_output .= ' id="' . $_id . '"'; } - if ($value === $selected) { $_output .= ' checked="checked"'; } - $_output .= $extra . ' />' . $output; if ($labels) { $_output .= '</label>'; } - $_output .= $separator; - return $_output; } diff --git a/lib/smarty3/plugins/function.html_select_date.php b/lib/smarty3/plugins/function.html_select_date.php index 8191700..86403e3 100644 --- a/lib/smarty3/plugins/function.html_select_date.php +++ b/lib/smarty3/plugins/function.html_select_date.php @@ -5,23 +5,13 @@ * @package Smarty * @subpackage PluginsFunction */ - -/** - * @ignore - */ -require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); -/** - * @ignore - */ -require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'); - /** * Smarty {html_select_date} plugin - * Type: function<br> - * Name: html_select_date<br> + * Type: function + * Name: html_select_date * Purpose: Prints the dropdowns for date selection. * ChangeLog: - * <pre> + * * - 1.0 initial release * - 1.1 added support for +/- N syntax for begin * and end year values. (Monte) @@ -37,45 +27,54 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'); * of 0000-00-00 dates (cybot, boots) * - 2.0 complete rewrite for performance, * added attributes month_names, *_id - * </pre> * - * @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date} + * @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date} * (Smarty online manual) - * @version 2.0 - * @author Andrei Zmievski - * @author Monte Ohrt <monte at ohrt dot com> - * @author Rodney Rehm + * @version 2.0 + * @author Andrei Zmievski + * @author Monte Ohrt <monte at ohrt dot com> + * @author Rodney Rehm + * + * @param array $params parameters * - * @param array $params parameters + * @param \Smarty_Internal_Template $template * * @return string + * @throws \SmartyException */ -function smarty_function_html_select_date($params) +function smarty_function_html_select_date($params, Smarty_Internal_Template $template) { + $template->_checkPlugins( + array( + array( + 'function' => 'smarty_function_escape_special_chars', + 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' + ) + ) + ); // generate timestamps used for month names only static $_month_timestamps = null; static $_current_year = null; if ($_month_timestamps === null) { $_current_year = date('Y'); $_month_timestamps = array(); - for ($i = 1; $i <= 12; $i ++) { + for ($i = 1; $i <= 12; $i++) { $_month_timestamps[ $i ] = mktime(0, 0, 0, $i, 1, 2000); } } - /* Default values. */ - $prefix = "Date_"; + $prefix = 'Date_'; $start_year = null; $end_year = null; $display_days = true; $display_months = true; $display_years = true; - $month_format = "%B"; + $month_format = '%B'; /* Write months as numbers by default GL */ - $month_value_format = "%m"; - $day_format = "%02d"; + $month_value_format = '%m'; + $day_format = '%02d'; /* Write day values using this format MB */ - $day_value_format = "%d"; + $day_value_format = '%d'; $year_as_text = false; /* Display years in reverse order? Ie. 2000,1999,.... */ $reverse_years = false; @@ -111,23 +110,28 @@ function smarty_function_html_select_date($params) $day_id = null; $month_id = null; $year_id = null; - foreach ($params as $_key => $_value) { switch ($_key) { case 'time': if (!is_array($_value) && $_value !== null) { + $template->_checkPlugins( + array( + array( + 'function' => 'smarty_make_timestamp', + 'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php' + ) + ) + ); $time = smarty_make_timestamp($_value); } break; - case 'month_names': - if (is_array($_value) && count($_value) == 12) { + if (is_array($_value) && count($_value) === 12) { $$_key = $_value; } else { - trigger_error("html_select_date: month_names must be an array of 12 strings", E_USER_NOTICE); + trigger_error('html_select_date: month_names must be an array of 12 strings', E_USER_NOTICE); } break; - case 'prefix': case 'field_array': case 'start_year': @@ -154,33 +158,34 @@ function smarty_function_html_select_date($params) case 'month_id': case 'day_id': case 'year_id': - $$_key = (string) $_value; + $$_key = (string)$_value; break; - case 'display_days': case 'display_months': case 'display_years': case 'year_as_text': case 'reverse_years': - $$_key = (bool) $_value; + $$_key = (bool)$_value; break; - default: if (!is_array($_value)) { $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"'; } else { - trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); } break; } } - // Note: date() is faster than strftime() // Note: explode(date()) is faster than date() date() date() if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) { if (isset($params[ 'time' ][ $prefix . 'Year' ])) { // $_REQUEST[$field_array] given - foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) { + foreach (array( + 'Y' => 'Year', + 'm' => 'Month', + 'd' => 'Day' + ) as $_elementKey => $_elementName) { $_variableName = '_' . strtolower($_elementName); $$_variableName = isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] : @@ -188,7 +193,11 @@ function smarty_function_html_select_date($params) } } elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Year' ])) { // $_REQUEST given - foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) { + foreach (array( + 'Y' => 'Year', + 'm' => 'Month', + 'd' => 'Day' + ) as $_elementKey => $_elementName) { $_variableName = '_' . strtolower($_elementName); $$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey); @@ -206,30 +215,30 @@ function smarty_function_html_select_date($params) } else { list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d', $time)); } - // make syntax "+N" or "-N" work with $start_year and $end_year // Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr - foreach (array('start', 'end') as $key) { + foreach (array( + 'start', + 'end' + ) as $key) { $key .= '_year'; $t = $$key; if ($t === null) { - $$key = (int) $_current_year; - } elseif ($t[ 0 ] == '+') { - $$key = (int) ($_current_year + (int) trim(substr($t, 1))); - } elseif ($t[ 0 ] == '-') { - $$key = (int) ($_current_year - (int) trim(substr($t, 1))); + $$key = (int)$_current_year; + } elseif ($t[ 0 ] === '+') { + $$key = (int)($_current_year + (int)trim(substr($t, 1))); + } elseif ($t[ 0 ] === '-') { + $$key = (int)($_current_year - (int)trim(substr($t, 1))); } else { - $$key = (int) $$key; + $$key = (int)$$key; } } - // flip for ascending or descending if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) { $t = $end_year; $end_year = $start_year; $start_year = $t; } - // generate year <select> or <input> if ($display_years) { $_extra = ''; @@ -240,7 +249,6 @@ function smarty_function_html_select_date($params) if ($year_extra) { $_extra .= ' ' . $year_extra; } - if ($year_as_text) { $_html_years = '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra . @@ -248,31 +256,29 @@ function smarty_function_html_select_date($params) } else { $_html_years = '<select name="' . $_name . '"'; if ($year_id !== null || $all_id !== null) { - $_html_years .= ' id="' . smarty_function_escape_special_chars($year_id !== null ? - ($year_id ? $year_id : $_name) : - ($all_id ? ($all_id . $_name) : - $_name)) . '"'; + $_html_years .= ' id="' . smarty_function_escape_special_chars( + $year_id !== null ? + ($year_id ? $year_id : $_name) : + ($all_id ? ($all_id . $_name) : + $_name) + ) . '"'; } if ($year_size) { $_html_years .= ' size="' . $year_size . '"'; } $_html_years .= $_extra . $extra_attrs . '>' . $option_separator; - if (isset($year_empty) || isset($all_empty)) { $_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' . $option_separator; } - - $op = $start_year > $end_year ? - 1 : 1; + $op = $start_year > $end_year ? -1 : 1; for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) { $_html_years .= '<option value="' . $i . '"' . ($_year == $i ? ' selected="selected"' : '') . '>' . $i . '</option>' . $option_separator; } - $_html_years .= '</select>'; } } - // generate month <select> or <input> if ($display_months) { $_extra = ''; @@ -283,36 +289,33 @@ function smarty_function_html_select_date($params) if ($month_extra) { $_extra .= ' ' . $month_extra; } - $_html_months = '<select name="' . $_name . '"'; if ($month_id !== null || $all_id !== null) { - $_html_months .= ' id="' . smarty_function_escape_special_chars($month_id !== null ? - ($month_id ? $month_id : $_name) : - ($all_id ? ($all_id . $_name) : - $_name)) . '"'; + $_html_months .= ' id="' . smarty_function_escape_special_chars( + $month_id !== null ? + ($month_id ? $month_id : $_name) : + ($all_id ? ($all_id . $_name) : + $_name) + ) . '"'; } if ($month_size) { $_html_months .= ' size="' . $month_size . '"'; } $_html_months .= $_extra . $extra_attrs . '>' . $option_separator; - if (isset($month_empty) || isset($all_empty)) { $_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' . $option_separator; } - - for ($i = 1; $i <= 12; $i ++) { + for ($i = 1; $i <= 12; $i++) { $_val = sprintf('%02d', $i); $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[ $i ]) : - ($month_format == "%m" ? $_val : strftime($month_format, $_month_timestamps[ $i ])); - $_value = $month_value_format == "%m" ? $_val : strftime($month_value_format, $_month_timestamps[ $i ]); + ($month_format === '%m' ? $_val : strftime($month_format, $_month_timestamps[ $i ])); + $_value = $month_value_format === '%m' ? $_val : strftime($month_value_format, $_month_timestamps[ $i ]); $_html_months .= '<option value="' . $_value . '"' . ($_val == $_month ? ' selected="selected"' : '') . '>' . $_text . '</option>' . $option_separator; } - $_html_months .= '</select>'; } - // generate day <select> or <input> if ($display_days) { $_extra = ''; @@ -323,37 +326,34 @@ function smarty_function_html_select_date($params) if ($day_extra) { $_extra .= ' ' . $day_extra; } - $_html_days = '<select name="' . $_name . '"'; if ($day_id !== null || $all_id !== null) { $_html_days .= ' id="' . - smarty_function_escape_special_chars($day_id !== null ? ($day_id ? $day_id : $_name) : - ($all_id ? ($all_id . $_name) : $_name)) . '"'; + smarty_function_escape_special_chars( + $day_id !== null ? ($day_id ? $day_id : $_name) : + ($all_id ? ($all_id . $_name) : $_name) + ) . '"'; } if ($day_size) { $_html_days .= ' size="' . $day_size . '"'; } $_html_days .= $_extra . $extra_attrs . '>' . $option_separator; - if (isset($day_empty) || isset($all_empty)) { $_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' . $option_separator; } - - for ($i = 1; $i <= 31; $i ++) { + for ($i = 1; $i <= 31; $i++) { $_val = sprintf('%02d', $i); - $_text = $day_format == '%02d' ? $_val : sprintf($day_format, $i); - $_value = $day_value_format == '%02d' ? $_val : sprintf($day_value_format, $i); + $_text = $day_format === '%02d' ? $_val : sprintf($day_format, $i); + $_value = $day_value_format === '%02d' ? $_val : sprintf($day_value_format, $i); $_html_days .= '<option value="' . $_value . '"' . ($_val == $_day ? ' selected="selected"' : '') . '>' . $_text . '</option>' . $option_separator; } - $_html_days .= '</select>'; } - // order the fields for output $_html = ''; - for ($i = 0; $i <= 2; $i ++) { + for ($i = 0; $i <= 2; $i++) { switch ($field_order[ $i ]) { case 'Y': case 'y': @@ -364,7 +364,6 @@ function smarty_function_html_select_date($params) $_html .= $_html_years; } break; - case 'm': case 'M': if (isset($_html_months)) { @@ -374,7 +373,6 @@ function smarty_function_html_select_date($params) $_html .= $_html_months; } break; - case 'd': case 'D': if (isset($_html_days)) { @@ -386,6 +384,5 @@ function smarty_function_html_select_date($params) break; } } - return $_html; } diff --git a/lib/smarty3/plugins/function.html_select_time.php b/lib/smarty3/plugins/function.html_select_time.php index 4a3639b..cb047bc 100644 --- a/lib/smarty3/plugins/function.html_select_time.php +++ b/lib/smarty3/plugins/function.html_select_time.php @@ -5,153 +5,147 @@ * @package Smarty * @subpackage PluginsFunction */ - -/** - * @ignore - */ -require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); -/** - * @ignore - */ -require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'); - /** * Smarty {html_select_time} function plugin - * Type: function<br> - * Name: html_select_time<br> + * Type: function + * Name: html_select_time * Purpose: Prints the dropdowns for time selection * - * @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time} + * @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time} * (Smarty online manual) - * @author Roberto Berto <roberto@berto.net> - * @author Monte Ohrt <monte AT ohrt DOT com> + * @author Roberto Berto <roberto@berto.net> + * @author Monte Ohrt <monte AT ohrt DOT com> + * + * @param array $params parameters * - * @param array $params parameters + * @param \Smarty_Internal_Template $template * * @return string - * @uses smarty_make_timestamp() + * @uses smarty_make_timestamp() + * @throws \SmartyException */ -function smarty_function_html_select_time($params) +function smarty_function_html_select_time($params, Smarty_Internal_Template $template) { - $prefix = "Time_"; + $template->_checkPlugins( + array( + array( + 'function' => 'smarty_function_escape_special_chars', + 'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' + ) + ) + ); + $prefix = 'Time_'; $field_array = null; $field_separator = "\n"; $option_separator = "\n"; $time = null; - $display_hours = true; $display_minutes = true; $display_seconds = true; $display_meridian = true; - $hour_format = '%02d'; $hour_value_format = '%02d'; $minute_format = '%02d'; $minute_value_format = '%02d'; $second_format = '%02d'; $second_value_format = '%02d'; - $hour_size = null; $minute_size = null; $second_size = null; $meridian_size = null; - $all_empty = null; $hour_empty = null; $minute_empty = null; $second_empty = null; $meridian_empty = null; - $all_id = null; $hour_id = null; $minute_id = null; $second_id = null; $meridian_id = null; - $use_24_hours = true; $minute_interval = 1; $second_interval = 1; - $extra_attrs = ''; $all_extra = null; $hour_extra = null; $minute_extra = null; $second_extra = null; $meridian_extra = null; - foreach ($params as $_key => $_value) { switch ($_key) { case 'time': if (!is_array($_value) && $_value !== null) { + $template->_checkPlugins( + array( + array( + 'function' => 'smarty_make_timestamp', + 'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php' + ) + ) + ); $time = smarty_make_timestamp($_value); } break; - case 'prefix': case 'field_array': - case 'field_separator': case 'option_separator': - case 'all_extra': case 'hour_extra': case 'minute_extra': case 'second_extra': case 'meridian_extra': - case 'all_empty': case 'hour_empty': case 'minute_empty': case 'second_empty': case 'meridian_empty': - case 'all_id': case 'hour_id': case 'minute_id': case 'second_id': case 'meridian_id': - case 'hour_format': case 'hour_value_format': case 'minute_format': case 'minute_value_format': case 'second_format': case 'second_value_format': - $$_key = (string) $_value; + $$_key = (string)$_value; break; - case 'display_hours': case 'display_minutes': case 'display_seconds': case 'display_meridian': case 'use_24_hours': - $$_key = (bool) $_value; + $$_key = (bool)$_value; break; - case 'minute_interval': case 'second_interval': - case 'hour_size': case 'minute_size': case 'second_size': case 'meridian_size': - $$_key = (int) $_value; + $$_key = (int)$_value; break; - default: if (!is_array($_value)) { $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"'; } else { - trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); } break; } } - if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) { if (isset($params[ 'time' ][ $prefix . 'Hour' ])) { // $_REQUEST[$field_array] given - foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) { + foreach (array( + 'H' => 'Hour', + 'i' => 'Minute', + 's' => 'Second' + ) as $_elementKey => $_elementName) { $_variableName = '_' . strtolower($_elementName); $$_variableName = isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] : @@ -164,7 +158,11 @@ function smarty_function_html_select_time($params) list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time)); } elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Hour' ])) { // $_REQUEST given - foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) { + foreach (array( + 'H' => 'Hour', + 'i' => 'Minute', + 's' => 'Second' + ) as $_elementKey => $_elementName) { $_variableName = '_' . strtolower($_elementName); $$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey); @@ -186,7 +184,6 @@ function smarty_function_html_select_time($params) } else { list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time)); } - // generate hour <select> if ($display_hours) { $_html_hours = ''; @@ -198,42 +195,37 @@ function smarty_function_html_select_time($params) if ($hour_extra) { $_extra .= ' ' . $hour_extra; } - $_html_hours = '<select name="' . $_name . '"'; if ($hour_id !== null || $all_id !== null) { $_html_hours .= ' id="' . - smarty_function_escape_special_chars($hour_id !== null ? ($hour_id ? $hour_id : $_name) : - ($all_id ? ($all_id . $_name) : $_name)) . '"'; + smarty_function_escape_special_chars( + $hour_id !== null ? ($hour_id ? $hour_id : $_name) : + ($all_id ? ($all_id . $_name) : $_name) + ) . '"'; } if ($hour_size) { $_html_hours .= ' size="' . $hour_size . '"'; } $_html_hours .= $_extra . $extra_attrs . '>' . $option_separator; - if (isset($hour_empty) || isset($all_empty)) { $_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' . $option_separator; } - $start = $use_24_hours ? 0 : 1; $end = $use_24_hours ? 23 : 12; - for ($i = $start; $i <= $end; $i ++) { + for ($i = $start; $i <= $end; $i++) { $_val = sprintf('%02d', $i); - $_text = $hour_format == '%02d' ? $_val : sprintf($hour_format, $i); - $_value = $hour_value_format == '%02d' ? $_val : sprintf($hour_value_format, $i); - + $_text = $hour_format === '%02d' ? $_val : sprintf($hour_format, $i); + $_value = $hour_value_format === '%02d' ? $_val : sprintf($hour_value_format, $i); if (!$use_24_hours) { $_hour12 = $_hour == 0 ? 12 : ($_hour <= 12 ? $_hour : $_hour - 12); } - $selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null; $_html_hours .= '<option value="' . $_value . '"' . ($selected ? ' selected="selected"' : '') . '>' . $_text . '</option>' . $option_separator; } - $_html_hours .= '</select>'; } - // generate minute <select> if ($display_minutes) { $_html_minutes = ''; @@ -245,36 +237,33 @@ function smarty_function_html_select_time($params) if ($minute_extra) { $_extra .= ' ' . $minute_extra; } - $_html_minutes = '<select name="' . $_name . '"'; if ($minute_id !== null || $all_id !== null) { - $_html_minutes .= ' id="' . smarty_function_escape_special_chars($minute_id !== null ? - ($minute_id ? $minute_id : $_name) : - ($all_id ? ($all_id . $_name) : - $_name)) . '"'; + $_html_minutes .= ' id="' . smarty_function_escape_special_chars( + $minute_id !== null ? + ($minute_id ? $minute_id : $_name) : + ($all_id ? ($all_id . $_name) : + $_name) + ) . '"'; } if ($minute_size) { $_html_minutes .= ' size="' . $minute_size . '"'; } $_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator; - if (isset($minute_empty) || isset($all_empty)) { $_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' . $option_separator; } - $selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null; for ($i = 0; $i <= 59; $i += $minute_interval) { $_val = sprintf('%02d', $i); - $_text = $minute_format == '%02d' ? $_val : sprintf($minute_format, $i); - $_value = $minute_value_format == '%02d' ? $_val : sprintf($minute_value_format, $i); + $_text = $minute_format === '%02d' ? $_val : sprintf($minute_format, $i); + $_value = $minute_value_format === '%02d' ? $_val : sprintf($minute_value_format, $i); $_html_minutes .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') . '>' . $_text . '</option>' . $option_separator; } - $_html_minutes .= '</select>'; } - // generate second <select> if ($display_seconds) { $_html_seconds = ''; @@ -286,36 +275,33 @@ function smarty_function_html_select_time($params) if ($second_extra) { $_extra .= ' ' . $second_extra; } - $_html_seconds = '<select name="' . $_name . '"'; if ($second_id !== null || $all_id !== null) { - $_html_seconds .= ' id="' . smarty_function_escape_special_chars($second_id !== null ? - ($second_id ? $second_id : $_name) : - ($all_id ? ($all_id . $_name) : - $_name)) . '"'; + $_html_seconds .= ' id="' . smarty_function_escape_special_chars( + $second_id !== null ? + ($second_id ? $second_id : $_name) : + ($all_id ? ($all_id . $_name) : + $_name) + ) . '"'; } if ($second_size) { $_html_seconds .= ' size="' . $second_size . '"'; } $_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator; - if (isset($second_empty) || isset($all_empty)) { $_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' . $option_separator; } - $selected = $_second !== null ? ($_second - $_second % $second_interval) : null; for ($i = 0; $i <= 59; $i += $second_interval) { $_val = sprintf('%02d', $i); - $_text = $second_format == '%02d' ? $_val : sprintf($second_format, $i); - $_value = $second_value_format == '%02d' ? $_val : sprintf($second_value_format, $i); + $_text = $second_format === '%02d' ? $_val : sprintf($second_format, $i); + $_value = $second_value_format === '%02d' ? $_val : sprintf($second_value_format, $i); $_html_seconds .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') . '>' . $_text . '</option>' . $option_separator; } - $_html_seconds .= '</select>'; } - // generate meridian <select> if ($display_meridian && !$use_24_hours) { $_html_meridian = ''; @@ -327,33 +313,36 @@ function smarty_function_html_select_time($params) if ($meridian_extra) { $_extra .= ' ' . $meridian_extra; } - $_html_meridian = '<select name="' . $_name . '"'; if ($meridian_id !== null || $all_id !== null) { - $_html_meridian .= ' id="' . smarty_function_escape_special_chars($meridian_id !== null ? - ($meridian_id ? $meridian_id : - $_name) : - ($all_id ? ($all_id . $_name) : - $_name)) . '"'; + $_html_meridian .= ' id="' . smarty_function_escape_special_chars( + $meridian_id !== null ? + ($meridian_id ? $meridian_id : + $_name) : + ($all_id ? ($all_id . $_name) : + $_name) + ) . '"'; } if ($meridian_size) { $_html_meridian .= ' size="' . $meridian_size . '"'; } $_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator; - if (isset($meridian_empty) || isset($all_empty)) { $_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) . '</option>' . $option_separator; } - $_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') . '>AM</option>' . $option_separator . '<option value="pm"' . ($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator . '</select>'; } - $_html = ''; - foreach (array('_html_hours', '_html_minutes', '_html_seconds', '_html_meridian') as $k) { + foreach (array( + '_html_hours', + '_html_minutes', + '_html_seconds', + '_html_meridian' + ) as $k) { if (isset($$k)) { if ($_html) { $_html .= $field_separator; @@ -361,6 +350,5 @@ function smarty_function_html_select_time($params) $_html .= $$k; } } - return $_html; } diff --git a/lib/smarty3/plugins/function.html_table.php b/lib/smarty3/plugins/function.html_table.php index 42e23e7..ae61e83 100644 --- a/lib/smarty3/plugins/function.html_table.php +++ b/lib/smarty3/plugins/function.html_table.php @@ -5,15 +5,14 @@ * @package Smarty * @subpackage PluginsFunction */ - /** * Smarty {html_table} function plugin - * Type: function<br> - * Name: html_table<br> - * Date: Feb 17, 2003<br> - * Purpose: make an html table from an array of data<br> + * Type: function + * Name: html_table + * Date: Feb 17, 2003 + * Purpose: make an html table from an array of data * Params: - * <pre> + * * - loop - array to loop through * - cols - number of columns, comma separated list of column names * or array of column names @@ -28,19 +27,18 @@ * - hdir - horizontal direction (default: "right", means left-to-right) * - inner - inner loop (default "cols": print $loop line by line, * $loop will be printed column by column otherwise) - * </pre> + * * Examples: - * <pre> + * * {table loop=$data} * {table loop=$data cols=4 tr_attr='"bgcolor=red"'} * {table loop=$data cols="first,second,third" tr_attr=$colors} - * </pre> * - * @author Monte Ohrt <monte at ohrt dot com> - * @author credit to Messju Mohr <messju at lammfellpuschen dot de> - * @author credit to boots <boots dot smarty at yahoo dot com> - * @version 1.1 - * @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table} + * @author Monte Ohrt <monte at ohrt dot com> + * @author credit to Messju Mohr <messju at lammfellpuschen dot de> + * @author credit to boots <boots dot smarty at yahoo dot com> + * @version 1.1 + * @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table} * (Smarty online manual) * * @param array $params parameters @@ -61,19 +59,15 @@ function smarty_function_html_table($params) $inner = 'cols'; $caption = ''; $loop = null; - if (!isset($params[ 'loop' ])) { trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING); - return; } - foreach ($params as $_key => $_value) { switch ($_key) { case 'loop': - $$_key = (array) $_value; + $$_key = (array)$_value; break; - case 'cols': if (is_array($_value) && !empty($_value)) { $cols = $_value; @@ -82,25 +76,22 @@ function smarty_function_html_table($params) $cols = explode(',', $_value); $cols_count = count($cols); } elseif (!empty($_value)) { - $cols_count = (int) $_value; + $cols_count = (int)$_value; } else { $cols_count = $cols; } break; - case 'rows': - $$_key = (int) $_value; + $$_key = (int)$_value; break; - case 'table_attr': case 'trailpad': case 'hdir': case 'vdir': case 'inner': case 'caption': - $$_key = (string) $_value; + $$_key = (string)$_value; break; - case 'tr_attr': case 'td_attr': case 'th_attr': @@ -108,7 +99,6 @@ function smarty_function_html_table($params) break; } } - $loop_count = count($loop); if (empty($params[ 'rows' ])) { /* no rows specified */ @@ -119,37 +109,30 @@ function smarty_function_html_table($params) $cols_count = ceil($loop_count / $rows); } } - $output = "<table $table_attr>\n"; - if (!empty($caption)) { $output .= '<caption>' . $caption . "</caption>\n"; } - if (is_array($cols)) { - $cols = ($hdir == 'right') ? $cols : array_reverse($cols); + $cols = ($hdir === 'right') ? $cols : array_reverse($cols); $output .= "<thead><tr>\n"; - - for ($r = 0; $r < $cols_count; $r ++) { + for ($r = 0; $r < $cols_count; $r++) { $output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>'; $output .= $cols[ $r ]; $output .= "</th>\n"; } $output .= "</tr></thead>\n"; } - $output .= "<tbody>\n"; - for ($r = 0; $r < $rows; $r ++) { + for ($r = 0; $r < $rows; $r++) { $output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n"; - $rx = ($vdir == 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count; - - for ($c = 0; $c < $cols_count; $c ++) { - $x = ($hdir == 'right') ? $rx + $c : $rx + $cols_count - 1 - $c; - if ($inner != 'cols') { + $rx = ($vdir === 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count; + for ($c = 0; $c < $cols_count; $c++) { + $x = ($hdir === 'right') ? $rx + $c : $rx + $cols_count - 1 - $c; + if ($inner !== 'cols') { /* shuffle x to loop over rows*/ $x = floor($x / $cols_count) + ($x % $cols_count) * $rows; } - if ($x < $loop_count) { $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[ $x ] . "</td>\n"; } else { @@ -160,10 +143,16 @@ function smarty_function_html_table($params) } $output .= "</tbody>\n"; $output .= "</table>\n"; - return $output; } +/** + * @param $name + * @param $var + * @param $no + * + * @return string + */ function smarty_function_html_table_cycle($name, $var, $no) { if (!is_array($var)) { @@ -171,6 +160,5 @@ function smarty_function_html_table_cycle($name, $var, $no) } else { $ret = $var[ $no % count($var) ]; } - return ($ret) ? ' ' . $ret : ''; } diff --git a/lib/smarty3/plugins/function.mailto.php b/lib/smarty3/plugins/function.mailto.php index 9d2a5d2..27351df 100644 --- a/lib/smarty3/plugins/function.mailto.php +++ b/lib/smarty3/plugins/function.mailto.php @@ -5,44 +5,42 @@ * @package Smarty * @subpackage PluginsFunction */ - /** * Smarty {mailto} function plugin - * Type: function<br> - * Name: mailto<br> + * Type: function + * Name: mailto * Date: May 21, 2002 - * Purpose: automate mailto address link creation, and optionally encode them.<br> + * Purpose: automate mailto address link creation, and optionally encode them. * Params: - * <pre> + * * - address - (required) - e-mail address * - text - (optional) - text to display, default is address * - encode - (optional) - can be one of: * * none : no encoding (default) * * javascript : encode with javascript * * javascript_charcode : encode with javascript charcode - * * hex : encode with hexidecimal (no javascript) + * * hex : encode with hexadecimal (no javascript) * - cc - (optional) - address(es) to carbon copy * - bcc - (optional) - address(es) to blind carbon copy * - subject - (optional) - e-mail subject * - newsgroups - (optional) - newsgroup(s) to post to * - followupto - (optional) - address(es) to follow up to * - extra - (optional) - extra tags for the href link - * </pre> + * * Examples: - * <pre> + * * {mailto address="me@domain.com"} * {mailto address="me@domain.com" encode="javascript"} * {mailto address="me@domain.com" encode="hex"} * {mailto address="me@domain.com" subject="Hello to you!"} * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"} * {mailto address="me@domain.com" extra='class="mailto"'} - * </pre> * - * @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto} + * @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto} * (Smarty online manual) - * @version 1.2 - * @author Monte Ohrt <monte at ohrt dot com> - * @author credits to Jason Sweat (added cc, bcc and subject functionality) + * @version 1.2 + * @author Monte Ohrt <monte at ohrt dot com> + * @author credits to Jason Sweat (added cc, bcc and subject functionality) * * @param array $params parameters * @@ -53,15 +51,12 @@ function smarty_function_mailto($params) static $_allowed_encoding = array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true); $extra = ''; - if (empty($params[ 'address' ])) { trigger_error("mailto: missing 'address' parameter", E_USER_WARNING); - return; } else { $address = $params[ 'address' ]; } - $text = $address; // netscape and mozilla do not decode %40 (@) in BCC field (bug?) // so, don't encode it. @@ -77,61 +72,52 @@ function smarty_function_mailto($params) $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value)); } break; - case 'subject': case 'newsgroups': $mail_parms[] = $var . '=' . rawurlencode($value); break; - case 'extra': case 'text': $$var = $value; - + // no break default: } } - if ($mail_parms) { $address .= '?' . join('&', $mail_parms); } - $encode = (empty($params[ 'encode' ])) ? 'none' : $params[ 'encode' ]; if (!isset($_allowed_encoding[ $encode ])) { - trigger_error("mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", - E_USER_WARNING); - + trigger_error( + "mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", + E_USER_WARNING + ); return; } // FIXME: (rodneyrehm) document.write() excues me what? 1998 has passed! - if ($encode == 'javascript') { + if ($encode === 'javascript') { $string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');'; - $js_encode = ''; - for ($x = 0, $_length = strlen($string); $x < $_length; $x ++) { + for ($x = 0, $_length = strlen($string); $x < $_length; $x++) { $js_encode .= '%' . bin2hex($string[ $x ]); } - return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>'; - } elseif ($encode == 'javascript_charcode') { + } elseif ($encode === 'javascript_charcode') { $string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>'; - - for ($x = 0, $y = strlen($string); $x < $y; $x ++) { + for ($x = 0, $y = strlen($string); $x < $y; $x++) { $ord[] = ord($string[ $x ]); } - $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n" . "{document.write(String.fromCharCode(" . implode(',', $ord) . "))" . "}\n" . "</script>\n"; - return $_ret; - } elseif ($encode == 'hex') { + } elseif ($encode === 'hex') { preg_match('!^(.*)(\?.*)$!', $address, $match); if (!empty($match[ 2 ])) { trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING); - return; } $address_encode = ''; - for ($x = 0, $_length = strlen($address); $x < $_length; $x ++) { + for ($x = 0, $_length = strlen($address); $x < $_length; $x++) { if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[ $x ])) { $address_encode .= '%' . bin2hex($address[ $x ]); } else { @@ -139,12 +125,10 @@ function smarty_function_mailto($params) } } $text_encode = ''; - for ($x = 0, $_length = strlen($text); $x < $_length; $x ++) { + for ($x = 0, $_length = strlen($text); $x < $_length; $x++) { $text_encode .= '&#x' . bin2hex($text[ $x ]) . ';'; } - $mailto = "mailto:"; - return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>'; } else { // no encoding diff --git a/lib/smarty3/plugins/function.math.php b/lib/smarty3/plugins/function.math.php index 655fe72..7348d96 100644 --- a/lib/smarty3/plugins/function.math.php +++ b/lib/smarty3/plugins/function.math.php @@ -6,16 +6,15 @@ * @package Smarty * @subpackage PluginsFunction */ - /** * Smarty {math} function plugin - * Type: function<br> - * Name: math<br> + * Type: function + * Name: math * Purpose: handle math computations in template * - * @link http://www.smarty.net/manual/en/language.function.math.php {math} + * @link http://www.smarty.net/manual/en/language.function.math.php {math} * (Smarty online manual) - * @author Monte Ohrt <monte at ohrt dot com> + * @author Monte Ohrt <monte at ohrt dot com> * * @param array $params parameters * @param Smarty_Internal_Template $template template object @@ -25,69 +24,78 @@ function smarty_function_math($params, $template) { static $_allowed_funcs = - array('int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true, - 'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true, 'rand' => true, - 'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true, 'tan' => true); + array( + 'int' => true, + 'abs' => true, + 'ceil' => true, + 'cos' => true, + 'exp' => true, + 'floor' => true, + 'log' => true, + 'log10' => true, + 'max' => true, + 'min' => true, + 'pi' => true, + 'pow' => true, + 'rand' => true, + 'round' => true, + 'sin' => true, + 'sqrt' => true, + 'srand' => true, + 'tan' => true + ); // be sure equation parameter is present if (empty($params[ 'equation' ])) { trigger_error("math: missing equation parameter", E_USER_WARNING); - return; } - $equation = $params[ 'equation' ]; - // make sure parenthesis are balanced - if (substr_count($equation, "(") != substr_count($equation, ")")) { + if (substr_count($equation, '(') !== substr_count($equation, ')')) { trigger_error("math: unbalanced parenthesis", E_USER_WARNING); - return; } - // disallow backticks if (strpos($equation, '`') !== false) { trigger_error("math: backtick character not allowed in equation", E_USER_WARNING); - return; } - // also disallow dollar signs if (strpos($equation, '$') !== false) { trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING); - return; } - + foreach ($params as $key => $val) { + if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') { + // make sure value is not empty + if (strlen($val) === 0) { + trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING); + return; + } + if (!is_numeric($val)) { + trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING); + return; + } + } + } // match all vars in equation, make sure all are passed preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match); - foreach ($match[ 1 ] as $curr_var) { if ($curr_var && !isset($params[ $curr_var ]) && !isset($_allowed_funcs[ $curr_var ])) { - trigger_error("math: function call $curr_var not allowed", E_USER_WARNING); - + trigger_error( + "math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'", + E_USER_WARNING + ); return; } } - foreach ($params as $key => $val) { - if ($key != "equation" && $key != "format" && $key != "assign") { - // make sure value is not empty - if (strlen($val) == 0) { - trigger_error("math: parameter $key is empty", E_USER_WARNING); - - return; - } - if (!is_numeric($val)) { - trigger_error("math: parameter $key: is not numeric", E_USER_WARNING); - - return; - } + if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') { $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation); } } $smarty_math_result = null; eval("\$smarty_math_result = " . $equation . ";"); - if (empty($params[ 'format' ])) { if (empty($params[ 'assign' ])) { return $smarty_math_result; diff --git a/lib/smarty3/plugins/modifier.capitalize.php b/lib/smarty3/plugins/modifier.capitalize.php index 6513a04..c5fc400 100644 --- a/lib/smarty3/plugins/modifier.capitalize.php +++ b/lib/smarty3/plugins/modifier.capitalize.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifier */ - /** * Smarty capitalize modifier plugin - * Type: modifier<br> - * Name: capitalize<br> + * Type: modifier + * Name: capitalize * Purpose: capitalize words in the string * {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }} * @@ -29,50 +28,75 @@ function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = fals $upper_string = mb_convert_case($string, MB_CASE_TITLE, Smarty::$_CHARSET); } else { // uppercase word breaks - $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, - 'smarty_mod_cap_mbconvert_cb', $string); + $upper_string = preg_replace_callback( + "!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, + 'smarty_mod_cap_mbconvert_cb', + $string + ); } // check uc_digits case if (!$uc_digits) { - if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, - PREG_OFFSET_CAPTURE)) { + if (preg_match_all( + "!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, + $string, + $matches, + PREG_OFFSET_CAPTURE + ) + ) { foreach ($matches[ 1 ] as $match) { $upper_string = - substr_replace($upper_string, mb_strtolower($match[ 0 ], Smarty::$_CHARSET), $match[ 1 ], - strlen($match[ 0 ])); + substr_replace( + $upper_string, + mb_strtolower($match[ 0 ], Smarty::$_CHARSET), + $match[ 1 ], + strlen($match[ 0 ]) + ); } } } $upper_string = - preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert2_cb', - $upper_string); + preg_replace_callback( + "!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, + 'smarty_mod_cap_mbconvert2_cb', + $upper_string + ); return $upper_string; } - // lowercase first if ($lc_rest) { $string = strtolower($string); } // uppercase (including hyphenated words) $upper_string = - preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst_cb', - $string); + preg_replace_callback( + "!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, + 'smarty_mod_cap_ucfirst_cb', + $string + ); // check uc_digits case if (!$uc_digits) { - if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, - PREG_OFFSET_CAPTURE)) { + if (preg_match_all( + "!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, + $string, + $matches, + PREG_OFFSET_CAPTURE + ) + ) { foreach ($matches[ 1 ] as $match) { $upper_string = substr_replace($upper_string, strtolower($match[ 0 ]), $match[ 1 ], strlen($match[ 0 ])); } } } - $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst2_cb', - $upper_string); + $upper_string = preg_replace_callback( + "!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, + 'smarty_mod_cap_ucfirst2_cb', + $upper_string + ); return $upper_string; } -/* +/** * * Bug: create_function() use exhausts memory when used in long loops * Fix: use declared functions for callbacks instead of using create_function() @@ -80,21 +104,41 @@ function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = fals * * @author Kyle Renfrow */ +/** + * @param $matches + * + * @return string + */ function smarty_mod_cap_mbconvert_cb($matches) { return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 2 ]), MB_CASE_UPPER, Smarty::$_CHARSET); } +/** + * @param $matches + * + * @return string + */ function smarty_mod_cap_mbconvert2_cb($matches) { return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]), MB_CASE_UPPER, Smarty::$_CHARSET); } +/** + * @param $matches + * + * @return string + */ function smarty_mod_cap_ucfirst_cb($matches) { return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 2 ])); } +/** + * @param $matches + * + * @return string + */ function smarty_mod_cap_ucfirst2_cb($matches) { return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 3 ])); diff --git a/lib/smarty3/plugins/modifier.date_format.php b/lib/smarty3/plugins/modifier.date_format.php index 28d6ff0..23b6943 100644 --- a/lib/smarty3/plugins/modifier.date_format.php +++ b/lib/smarty3/plugins/modifier.date_format.php @@ -5,13 +5,12 @@ * @package Smarty * @subpackage PluginsModifier */ - /** * Smarty date_format modifier plugin - * Type: modifier<br> - * Name: date_format<br> - * Purpose: format datestamps via strftime<br> - * Input:<br> + * Type: modifier + * Name: date_format + * Purpose: format datestamps via strftime + * Input: * - string: input date string * - format: strftime format for output * - default_date: default date if $string is empty @@ -35,18 +34,40 @@ function smarty_modifier_date_format($string, $format = null, $default_date = '' /** * require_once the {@link shared.make_timestamp.php} plugin */ - require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'); - if ($string != '' && $string != '0000-00-00' && $string != '0000-00-00 00:00:00') { + static $is_loaded = false; + if (!$is_loaded) { + if (!is_callable('smarty_make_timestamp')) { + include_once SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'; + } + $is_loaded = true; + } + if ($string !== '' && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') { $timestamp = smarty_make_timestamp($string); - } elseif ($default_date != '') { + } elseif ($default_date !== '') { $timestamp = smarty_make_timestamp($default_date); } else { return; } - if ($formatter == 'strftime' || ($formatter == 'auto' && strpos($format, '%') !== false)) { - if (DS == '\\') { - $_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T'); - $_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S'); + if ($formatter === 'strftime' || ($formatter === 'auto' && strpos($format, '%') !== false)) { + if (Smarty::$_IS_WINDOWS) { + $_win_from = array( + '%D', + '%h', + '%n', + '%r', + '%R', + '%t', + '%T' + ); + $_win_to = array( + '%m/%d/%y', + '%b', + "\n", + '%I:%M:%S %p', + '%H:%M', + "\t", + '%H:%M:%S' + ); if (strpos($format, '%e') !== false) { $_win_from[] = '%e'; $_win_to[] = sprintf('%\' 2d', date('j', $timestamp)); @@ -57,7 +78,6 @@ function smarty_modifier_date_format($string, $format = null, $default_date = '' } $format = str_replace($_win_from, $_win_to, $format); } - return strftime($format, $timestamp); } else { return date($format, $timestamp); diff --git a/lib/smarty3/plugins/modifier.debug_print_var.php b/lib/smarty3/plugins/modifier.debug_print_var.php index 34f85dc..78397d0 100644 --- a/lib/smarty3/plugins/modifier.debug_print_var.php +++ b/lib/smarty3/plugins/modifier.debug_print_var.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage Debug */ - /** * Smarty debug_print_var modifier plugin - * Type: modifier<br> - * Name: debug_print_var<br> + * Type: modifier + * Name: debug_print_var * Purpose: formats variable contents for display in the console * * @author Monte Ohrt <monte at ohrt dot com> @@ -26,40 +25,38 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = { $_replace = array("\n" => '\n', "\r" => '\r', "\t" => '\t'); switch (gettype($var)) { - case 'array' : + case 'array': $results = '<b>Array (' . count($var) . ')</b>'; - if ($depth == $max) { + if ($depth === $max) { break; } foreach ($var as $curr_key => $curr_val) { $results .= '<br>' . str_repeat(' ', $depth * 2) . '<b>' . strtr($curr_key, $_replace) . '</b> => ' . - smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects); - $depth --; + smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects); + $depth--; } break; - - case 'object' : + case 'object': $object_vars = get_object_vars($var); $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>'; if (in_array($var, $objects)) { $results .= ' called recursive'; break; } - if ($depth == $max) { + if ($depth === $max) { break; } $objects[] = $var; foreach ($object_vars as $curr_key => $curr_val) { $results .= '<br>' . str_repeat(' ', $depth * 2) . '<b> ->' . strtr($curr_key, $_replace) . - '</b> = ' . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects); - $depth --; + '</b> = ' . smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects); + $depth--; } break; - - case 'boolean' : - case 'NULL' : - case 'resource' : + case 'boolean': + case 'NULL': + case 'resource': if (true === $var) { $results = 'true'; } elseif (false === $var) { @@ -67,17 +64,15 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = } elseif (null === $var) { $results = 'null'; } else { - $results = htmlspecialchars((string) $var); + $results = htmlspecialchars((string)$var); } $results = '<i>' . $results . '</i>'; break; - - case 'integer' : - case 'float' : - $results = htmlspecialchars((string) $var); + case 'integer': + case 'float': + $results = htmlspecialchars((string)$var); break; - - case 'string' : + case 'string': $results = strtr($var, $_replace); if (Smarty::$_MBSTRING) { if (mb_strlen($var, Smarty::$_CHARSET) > $length) { @@ -88,13 +83,11 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = $results = substr($var, 0, $length - 3) . '...'; } } - $results = htmlspecialchars('"' . $results . '"', ENT_QUOTES, Smarty::$_CHARSET); break; - - case 'unknown type' : - default : - $results = strtr((string) $var, $_replace); + case 'unknown type': + default: + $results = strtr((string)$var, $_replace); if (Smarty::$_MBSTRING) { if (mb_strlen($results, Smarty::$_CHARSET) > $length) { $results = mb_substr($results, 0, $length - 3, Smarty::$_CHARSET) . '...'; @@ -104,9 +97,7 @@ function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = $results = substr($results, 0, $length - 3) . '...'; } } - $results = htmlspecialchars($results, ENT_QUOTES, Smarty::$_CHARSET); } - return $results; } diff --git a/lib/smarty3/plugins/modifier.escape.php b/lib/smarty3/plugins/modifier.escape.php index b9842aa..150901c 100644 --- a/lib/smarty3/plugins/modifier.escape.php +++ b/lib/smarty3/plugins/modifier.escape.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifier */ - /** * Smarty escape modifier plugin - * Type: modifier<br> - * Name: escape<br> + * Type: modifier + * Name: escape * Purpose: escape string for output * * @link http://www.smarty.net/docs/en/language.modifier.escape @@ -25,14 +24,14 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true) { static $_double_encode = null; + static $is_loaded_1 = false; + static $is_loaded_2 = false; if ($_double_encode === null) { $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>='); } - if (!$char_set) { $char_set = Smarty::$_CHARSET; } - switch ($esc_type) { case 'html': if ($_double_encode) { @@ -46,12 +45,21 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $ // php <5.2.3 - prevent double encoding $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); $string = htmlspecialchars($string, ENT_QUOTES, $char_set); - $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string); - + $string = str_replace( + array( + '%%%SMARTY_START%%%', + '%%%SMARTY_END%%%' + ), + array( + '&', + ';' + ), + $string + ); return $string; } } - + // no break case 'htmlall': if (Smarty::$_MBSTRING) { // mb_convert_encoding ignores htmlspecialchars() @@ -67,16 +75,23 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $ $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); $string = htmlspecialchars($string, ENT_QUOTES, $char_set); $string = - str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string); - + str_replace( + array( + '%%%SMARTY_START%%%', + '%%%SMARTY_END%%%' + ), + array( + '&', + ';' + ), + $string + ); return $string; } } - // htmlentities() won't convert everything, so use mb_convert_encoding return mb_convert_encoding($string, 'HTML-ENTITIES', $char_set); } - // no MBString fallback if ($_double_encode) { return htmlentities($string, ENT_QUOTES, $char_set, $double_encode); @@ -86,90 +101,134 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $ } else { $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); $string = htmlentities($string, ENT_QUOTES, $char_set); - $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string); - + $string = str_replace( + array( + '%%%SMARTY_START%%%', + '%%%SMARTY_END%%%' + ), + array( + '&', + ';' + ), + $string + ); return $string; } } - + // no break case 'url': return rawurlencode($string); - case 'urlpathinfo': return str_replace('%2F', '/', rawurlencode($string)); - case 'quotes': // escape unescaped single quotes return preg_replace("%(?<!\\\\)'%", "\\'", $string); - case 'hex': // escape every byte into hex // Note that the UTF-8 encoded character ä will be represented as %c3%a4 $return = ''; $_length = strlen($string); - for ($x = 0; $x < $_length; $x ++) { + for ($x = 0; $x < $_length; $x++) { $return .= '%' . bin2hex($string[ $x ]); } - return $return; - case 'hexentity': $return = ''; if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'); + if (!$is_loaded_1) { + if (!is_callable('smarty_mb_to_unicode')) { + include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'; + } + $is_loaded_1 = true; + } $return = ''; foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { $return .= '&#x' . strtoupper(dechex($unicode)) . ';'; } - return $return; } // no MBString fallback $_length = strlen($string); - for ($x = 0; $x < $_length; $x ++) { + for ($x = 0; $x < $_length; $x++) { $return .= '&#x' . bin2hex($string[ $x ]) . ';'; } - return $return; - case 'decentity': $return = ''; if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'); + if (!$is_loaded_1) { + if (!is_callable('smarty_mb_to_unicode')) { + include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'; + } + $is_loaded_1 = true; + } $return = ''; foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { $return .= '&#' . $unicode . ';'; } - return $return; } // no MBString fallback $_length = strlen($string); - for ($x = 0; $x < $_length; $x ++) { + for ($x = 0; $x < $_length; $x++) { $return .= '&#' . ord($string[ $x ]) . ';'; } - return $return; - case 'javascript': // escape quotes and backslashes, newlines, etc. - return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n', - '</' => '<\/')); - + return strtr( + $string, + array( + '\\' => '\\\\', + "'" => "\\'", + '"' => '\\"', + "\r" => '\\r', + "\n" => '\\n', + '</' => '<\/' + ) + ); case 'mail': if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'); - - return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string); + if (!$is_loaded_2) { + if (!is_callable('smarty_mb_str_replace')) { + include_once SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'; + } + $is_loaded_2 = true; + } + return smarty_mb_str_replace( + array( + '@', + '.' + ), + array( + ' [AT] ', + ' [DOT] ' + ), + $string + ); } // no MBString fallback - return str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string); - + return str_replace( + array( + '@', + '.' + ), + array( + ' [AT] ', + ' [DOT] ' + ), + $string + ); case 'nonstd': // escape non-standard chars, such as ms document quotes $return = ''; if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'); + if (!$is_loaded_1) { + if (!is_callable('smarty_mb_to_unicode')) { + include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'; + } + $is_loaded_1 = true; + } foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { if ($unicode >= 126) { $return .= '&#' . $unicode . ';'; @@ -177,12 +236,10 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $ $return .= chr($unicode); } } - return $return; } - $_length = strlen($string); - for ($_i = 0; $_i < $_length; $_i ++) { + for ($_i = 0; $_i < $_length; $_i++) { $_ord = ord(substr($string, $_i, 1)); // non-standard char, escape it if ($_ord >= 126) { @@ -191,9 +248,7 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $ $return .= substr($string, $_i, 1); } } - return $return; - default: return $string; } diff --git a/lib/smarty3/plugins/modifier.mb_wordwrap.php b/lib/smarty3/plugins/modifier.mb_wordwrap.php new file mode 100644 index 0000000..1cd625b --- /dev/null +++ b/lib/smarty3/plugins/modifier.mb_wordwrap.php @@ -0,0 +1,71 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifier + */ +/** + * Smarty wordwrap modifier plugin + * Type: modifier + * Name: mb_wordwrap + * Purpose: Wrap a string to a given number of characters + * + * @link http://php.net/manual/en/function.wordwrap.php for similarity + * + * @param string $str the string to wrap + * @param int $width the width of the output + * @param string $break the character used to break the line + * @param boolean $cut ignored parameter, just for the sake of + * + * @return string wrapped string + * @author Rodney Rehm + */ +function smarty_modifier_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false) +{ + // break words into tokens using white space as a delimiter + $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE); + $length = 0; + $t = ''; + $_previous = false; + $_space = false; + foreach ($tokens as $_token) { + $token_length = mb_strlen($_token, Smarty::$_CHARSET); + $_tokens = array($_token); + if ($token_length > $width) { + if ($cut) { + $_tokens = preg_split( + '!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, + $_token, + -1, + PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE + ); + } + } + foreach ($_tokens as $token) { + $_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token); + $token_length = mb_strlen($token, Smarty::$_CHARSET); + $length += $token_length; + if ($length > $width) { + // remove space before inserted break + if ($_previous) { + $t = mb_substr($t, 0, -1, Smarty::$_CHARSET); + } + if (!$_space) { + // add the break before the token + if (!empty($t)) { + $t .= $break; + } + $length = $token_length; + } + } elseif ($token === "\n") { + // hard break must reset counters + $length = 0; + } + $_previous = $_space; + // add the token + $t .= $token; + } + } + return $t; +} diff --git a/lib/smarty3/plugins/modifier.regex_replace.php b/lib/smarty3/plugins/modifier.regex_replace.php index 85f41fd..7eb5506 100644 --- a/lib/smarty3/plugins/modifier.regex_replace.php +++ b/lib/smarty3/plugins/modifier.regex_replace.php @@ -5,16 +5,15 @@ * @package Smarty * @subpackage PluginsModifier */ - /** * Smarty regex_replace modifier plugin - * Type: modifier<br> - * Name: regex_replace<br> + * Type: modifier + * Name: regex_replace * Purpose: regular expression search/replace * - * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php + * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php * regex_replace (Smarty online manual) - * @author Monte Ohrt <monte at ohrt dot com> + * @author Monte Ohrt <monte at ohrt dot com> * * @param string $string input string * @param string|array $search regular expression(s) to search for @@ -23,7 +22,7 @@ * * @return string */ -function smarty_modifier_regex_replace($string, $search, $replace, $limit = - 1) +function smarty_modifier_regex_replace($string, $search, $replace, $limit = -1) { if (is_array($search)) { foreach ($search as $idx => $s) { @@ -32,7 +31,6 @@ function smarty_modifier_regex_replace($string, $search, $replace, $limit = - 1) } else { $search = _smarty_regex_replace_check($search); } - return preg_replace($search, $replace, $string, $limit); } @@ -51,8 +49,7 @@ function _smarty_regex_replace_check($search) } // remove eval-modifier from $search if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[ 1 ], 'e') !== false)) { - $search = substr($search, 0, - strlen($match[ 1 ])) . preg_replace('![e\s]+!', '', $match[ 1 ]); + $search = substr($search, 0, -strlen($match[ 1 ])) . preg_replace('![e\s]+!', '', $match[ 1 ]); } - return $search; } diff --git a/lib/smarty3/plugins/modifier.replace.php b/lib/smarty3/plugins/modifier.replace.php index aa5e857..a98f5a4 100644 --- a/lib/smarty3/plugins/modifier.replace.php +++ b/lib/smarty3/plugins/modifier.replace.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifier */ - /** * Smarty replace modifier plugin - * Type: modifier<br> - * Name: replace<br> + * Type: modifier + * Name: replace * Purpose: simple search/replace * * @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual) @@ -24,11 +23,15 @@ */ function smarty_modifier_replace($string, $search, $replace) { + static $is_loaded = false; if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'); - + if (!$is_loaded) { + if (!is_callable('smarty_mb_str_replace')) { + include_once SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'; + } + $is_loaded = true; + } return smarty_mb_str_replace($search, $replace, $string); } - return str_replace($search, $replace, $string); } diff --git a/lib/smarty3/plugins/modifier.spacify.php b/lib/smarty3/plugins/modifier.spacify.php index e5c41ad..98efd4b 100644 --- a/lib/smarty3/plugins/modifier.spacify.php +++ b/lib/smarty3/plugins/modifier.spacify.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifier */ - /** * Smarty spacify modifier plugin - * Type: modifier<br> - * Name: spacify<br> + * Type: modifier + * Name: spacify * Purpose: add spaces between characters in a string * * @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual) @@ -23,5 +22,5 @@ function smarty_modifier_spacify($string, $spacify_char = ' ') { // well… what about charsets besides latin and UTF-8? - return implode($spacify_char, preg_split('//' . Smarty::$_UTF8_MODIFIER, $string, - 1, PREG_SPLIT_NO_EMPTY)); + return implode($spacify_char, preg_split('//' . Smarty::$_UTF8_MODIFIER, $string, -1, PREG_SPLIT_NO_EMPTY)); } diff --git a/lib/smarty3/plugins/modifier.truncate.php b/lib/smarty3/plugins/modifier.truncate.php index 6fe8442..bb881bf 100644 --- a/lib/smarty3/plugins/modifier.truncate.php +++ b/lib/smarty3/plugins/modifier.truncate.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifier */ - /** * Smarty truncate modifier plugin - * Type: modifier<br> - * Name: truncate<br> + * Type: modifier + * Name: truncate * Purpose: Truncate a string to a certain length if necessary, * optionally splitting in the middle of a word, and * appending the $etc string or inserting $etc into the middle. @@ -27,28 +26,27 @@ */ function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) { - if ($length == 0) { + if ($length === 0) { return ''; } - if (Smarty::$_MBSTRING) { if (mb_strlen($string, Smarty::$_CHARSET) > $length) { $length -= min($length, mb_strlen($etc, Smarty::$_CHARSET)); if (!$break_words && !$middle) { - $string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '', - mb_substr($string, 0, $length + 1, Smarty::$_CHARSET)); + $string = preg_replace( + '/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, + '', + mb_substr($string, 0, $length + 1, Smarty::$_CHARSET) + ); } if (!$middle) { return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc; } - return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc . - mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET); + mb_substr($string, -$length / 2, $length, Smarty::$_CHARSET); } - return $string; } - // no MBString fallback if (isset($string[ $length ])) { $length -= min($length, strlen($etc)); @@ -58,9 +56,7 @@ function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_wo if (!$middle) { return substr($string, 0, $length) . $etc; } - - return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2); + return substr($string, 0, $length / 2) . $etc . substr($string, -$length / 2); } - return $string; } diff --git a/lib/smarty3/plugins/modifiercompiler.cat.php b/lib/smarty3/plugins/modifiercompiler.cat.php index db9d81f..21d0e66 100644 --- a/lib/smarty3/plugins/modifiercompiler.cat.php +++ b/lib/smarty3/plugins/modifiercompiler.cat.php @@ -5,19 +5,18 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty cat modifier plugin - * Type: modifier<br> - * Name: cat<br> - * Date: Feb 24, 2003<br> - * Purpose: catenate a value to a variable<br> - * Input: string to catenate<br> + * Type: modifier + * Name: cat + * Date: Feb 24, 2003 + * Purpose: catenate a value to a variable + * Input: string to catenate * Example: {$var|cat:"foo"} * - * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat + * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat * (Smarty online manual) - * @author Uwe Tews + * @author Uwe Tews * * @param array $params parameters * diff --git a/lib/smarty3/plugins/modifiercompiler.count_characters.php b/lib/smarty3/plugins/modifiercompiler.count_characters.php index 0a3ce25..6c44278 100644 --- a/lib/smarty3/plugins/modifiercompiler.count_characters.php +++ b/lib/smarty3/plugins/modifiercompiler.count_characters.php @@ -5,14 +5,14 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty count_characters modifier plugin - * Type: modifier<br> - * Name: count_characteres<br> + * Type: modifier + * Name: count_characters * Purpose: count the number of characters in a text * - * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual) + * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online + * manual) * @author Uwe Tews * * @param array $params parameters @@ -21,7 +21,7 @@ */ function smarty_modifiercompiler_count_characters($params) { - if (!isset($params[ 1 ]) || $params[ 1 ] != 'true') { + if (!isset($params[ 1 ]) || $params[ 1 ] !== 'true') { return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[ 0 ] . ', $tmp)'; } if (Smarty::$_MBSTRING) { diff --git a/lib/smarty3/plugins/modifiercompiler.count_paragraphs.php b/lib/smarty3/plugins/modifiercompiler.count_paragraphs.php index f7f4477..e214a56 100644 --- a/lib/smarty3/plugins/modifiercompiler.count_paragraphs.php +++ b/lib/smarty3/plugins/modifiercompiler.count_paragraphs.php @@ -5,16 +5,15 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty count_paragraphs modifier plugin - * Type: modifier<br> - * Name: count_paragraphs<br> + * Type: modifier + * Name: count_paragraphs * Purpose: count the number of paragraphs in a text * - * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php + * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php * count_paragraphs (Smarty online manual) - * @author Uwe Tews + * @author Uwe Tews * * @param array $params parameters * diff --git a/lib/smarty3/plugins/modifiercompiler.count_sentences.php b/lib/smarty3/plugins/modifiercompiler.count_sentences.php index 2003292..0277456 100644 --- a/lib/smarty3/plugins/modifiercompiler.count_sentences.php +++ b/lib/smarty3/plugins/modifiercompiler.count_sentences.php @@ -5,16 +5,15 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty count_sentences modifier plugin - * Type: modifier<br> + * Type: modifier * Name: count_sentences * Purpose: count the number of sentences in a text * - * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php + * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php * count_sentences (Smarty online manual) - * @author Uwe Tews + * @author Uwe Tews * * @param array $params parameters * diff --git a/lib/smarty3/plugins/modifiercompiler.count_words.php b/lib/smarty3/plugins/modifiercompiler.count_words.php index f20a197..6d889da 100644 --- a/lib/smarty3/plugins/modifiercompiler.count_words.php +++ b/lib/smarty3/plugins/modifiercompiler.count_words.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty count_words modifier plugin - * Type: modifier<br> - * Name: count_words<br> + * Type: modifier + * Name: count_words * Purpose: count the number of words in a text * * @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual) diff --git a/lib/smarty3/plugins/modifiercompiler.default.php b/lib/smarty3/plugins/modifiercompiler.default.php index 2c4c00a..ae886c4 100644 --- a/lib/smarty3/plugins/modifiercompiler.default.php +++ b/lib/smarty3/plugins/modifiercompiler.default.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty default modifier plugin - * Type: modifier<br> - * Name: default<br> + * Type: modifier + * Name: default * Purpose: designate default value for empty variables * * @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual) @@ -25,11 +24,9 @@ function smarty_modifiercompiler_default($params) if (!isset($params[ 1 ])) { $params[ 1 ] = "''"; } - array_shift($params); foreach ($params as $param) { $output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $param . ' : $tmp)'; } - return $output; } diff --git a/lib/smarty3/plugins/modifiercompiler.escape.php b/lib/smarty3/plugins/modifiercompiler.escape.php index 4816106..e0763ad 100644 --- a/lib/smarty3/plugins/modifiercompiler.escape.php +++ b/lib/smarty3/plugins/modifiercompiler.escape.php @@ -5,42 +5,43 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - -/** - * @ignore - */ -require_once(SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php'); - /** * Smarty escape modifier plugin - * Type: modifier<br> - * Name: escape<br> + * Type: modifier + * Name: escape * Purpose: escape string for output * * @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual) * @author Rodney Rehm * - * @param array $params parameters - * @param $compiler + * @param array $params parameters + * @param Smarty_Internal_TemplateCompilerBase $compiler * * @return string with compiled code + * @throws \SmartyException */ -function smarty_modifiercompiler_escape($params, $compiler) +function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompilerBase $compiler) { static $_double_encode = null; + static $is_loaded = false; + $compiler->template->_checkPlugins( + array( + array( + 'function' => 'smarty_literal_compiler_param', + 'file' => SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php' + ) + ) + ); if ($_double_encode === null) { $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>='); } - try { $esc_type = smarty_literal_compiler_param($params, 1, 'html'); $char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET); $double_encode = smarty_literal_compiler_param($params, 3, true); - if (!$char_set) { $char_set = Smarty::$_CHARSET; } - switch ($esc_type) { case 'html': if ($_double_encode) { @@ -51,7 +52,7 @@ function smarty_modifiercompiler_escape($params, $compiler) } else { // fall back to modifier.escape.php } - + // no break case 'htmlall': if (Smarty::$_MBSTRING) { if ($_double_encode) { @@ -67,7 +68,6 @@ function smarty_modifiercompiler_escape($params, $compiler) // fall back to modifier.escape.php } } - // no MBString fallback if ($_double_encode) { // php >=5.2.3 - go native @@ -79,39 +79,34 @@ function smarty_modifiercompiler_escape($params, $compiler) } else { // fall back to modifier.escape.php } - + // no break case 'url': return 'rawurlencode(' . $params[ 0 ] . ')'; - case 'urlpathinfo': return 'str_replace("%2F", "/", rawurlencode(' . $params[ 0 ] . '))'; - case 'quotes': // escape unescaped single quotes return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[ 0 ] . ')'; - case 'javascript': // escape quotes and backslashes, newlines, etc. - return 'strtr(' . $params[ 0 ] . + return 'strtr(' . + $params[ 0 ] . ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))'; } - } - catch (SmartyException $e) { + } catch (SmartyException $e) { // pass through to regular plugin fallback } - // could not optimize |escape call, so fallback to regular plugin if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) { - $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'file' ] = + $compiler->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'file' ] = SMARTY_PLUGINS_DIR . 'modifier.escape.php'; - $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'function' ] = + $compiler->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'function' ] = 'smarty_modifier_escape'; } else { - $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'file' ] = + $compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'file' ] = SMARTY_PLUGINS_DIR . 'modifier.escape.php'; - $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'function' ] = + $compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'function' ] = 'smarty_modifier_escape'; } - return 'smarty_modifier_escape(' . join(', ', $params) . ')'; } diff --git a/lib/smarty3/plugins/modifiercompiler.from_charset.php b/lib/smarty3/plugins/modifiercompiler.from_charset.php index e25a957..acce778 100644 --- a/lib/smarty3/plugins/modifiercompiler.from_charset.php +++ b/lib/smarty3/plugins/modifiercompiler.from_charset.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty from_charset modifier plugin - * Type: modifier<br> - * Name: from_charset<br> + * Type: modifier + * Name: from_charset * Purpose: convert character encoding from $charset to internal encoding * * @author Rodney Rehm @@ -24,10 +23,8 @@ function smarty_modifiercompiler_from_charset($params) // FIXME: (rodneyrehm) shouldn't this throw an error? return $params[ 0 ]; } - if (!isset($params[ 1 ])) { $params[ 1 ] = '"ISO-8859-1"'; } - return 'mb_convert_encoding(' . $params[ 0 ] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[ 1 ] . ')'; } diff --git a/lib/smarty3/plugins/modifiercompiler.indent.php b/lib/smarty3/plugins/modifiercompiler.indent.php index 851f184..2088ad6 100644 --- a/lib/smarty3/plugins/modifiercompiler.indent.php +++ b/lib/smarty3/plugins/modifiercompiler.indent.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty indent modifier plugin - * Type: modifier<br> - * Name: indent<br> + * Type: modifier + * Name: indent * Purpose: indent lines of text * * @link http://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual) @@ -19,7 +18,6 @@ * * @return string with compiled code */ - function smarty_modifiercompiler_indent($params) { if (!isset($params[ 1 ])) { @@ -28,6 +26,5 @@ function smarty_modifiercompiler_indent($params) if (!isset($params[ 2 ])) { $params[ 2 ] = "' '"; } - return 'preg_replace(\'!^!m\',str_repeat(' . $params[ 2 ] . ',' . $params[ 1 ] . '),' . $params[ 0 ] . ')'; } diff --git a/lib/smarty3/plugins/modifiercompiler.lower.php b/lib/smarty3/plugins/modifiercompiler.lower.php index a335eff..0d899a0 100644 --- a/lib/smarty3/plugins/modifiercompiler.lower.php +++ b/lib/smarty3/plugins/modifiercompiler.lower.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty lower modifier plugin - * Type: modifier<br> - * Name: lower<br> + * Type: modifier + * Name: lower * Purpose: convert string to lowercase * * @link http://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual) @@ -20,7 +19,6 @@ * * @return string with compiled code */ - function smarty_modifiercompiler_lower($params) { if (Smarty::$_MBSTRING) { diff --git a/lib/smarty3/plugins/modifiercompiler.noprint.php b/lib/smarty3/plugins/modifiercompiler.noprint.php index 4906908..1275190 100644 --- a/lib/smarty3/plugins/modifiercompiler.noprint.php +++ b/lib/smarty3/plugins/modifiercompiler.noprint.php @@ -5,14 +5,13 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty noprint modifier plugin - * Type: modifier<br> - * Name: noprint<br> + * Type: modifier + * Name: noprint * Purpose: return an empty string * - * @author Uwe Tews + * @author Uwe Tews * @return string with compiled code */ function smarty_modifiercompiler_noprint() diff --git a/lib/smarty3/plugins/modifiercompiler.string_format.php b/lib/smarty3/plugins/modifiercompiler.string_format.php index bcf9883..6630943 100644 --- a/lib/smarty3/plugins/modifiercompiler.string_format.php +++ b/lib/smarty3/plugins/modifiercompiler.string_format.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty string_format modifier plugin - * Type: modifier<br> - * Name: string_format<br> + * Type: modifier + * Name: string_format * Purpose: format strings via sprintf * * @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual) diff --git a/lib/smarty3/plugins/modifiercompiler.strip.php b/lib/smarty3/plugins/modifiercompiler.strip.php index 8173eed..04ea332 100644 --- a/lib/smarty3/plugins/modifiercompiler.strip.php +++ b/lib/smarty3/plugins/modifiercompiler.strip.php @@ -5,14 +5,13 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty strip modifier plugin - * Type: modifier<br> - * Name: strip<br> + * Type: modifier + * Name: strip * Purpose: Replace all repeated spaces, newlines, tabs - * with a single space or supplied replacement string.<br> - * Example: {$var|strip} {$var|strip:" "}<br> + * with a single space or supplied replacement string. + * Example: {$var|strip} {$var|strip:" "} * Date: September 25th, 2002 * * @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual) @@ -22,12 +21,10 @@ * * @return string with compiled code */ - function smarty_modifiercompiler_strip($params) { if (!isset($params[ 1 ])) { $params[ 1 ] = "' '"; } - return "preg_replace('!\s+!" . Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})"; } diff --git a/lib/smarty3/plugins/modifiercompiler.strip_tags.php b/lib/smarty3/plugins/modifiercompiler.strip_tags.php index e56bf93..1bca1a2 100644 --- a/lib/smarty3/plugins/modifiercompiler.strip_tags.php +++ b/lib/smarty3/plugins/modifiercompiler.strip_tags.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty strip_tags modifier plugin - * Type: modifier<br> - * Name: strip_tags<br> + * Type: modifier + * Name: strip_tags * Purpose: strip html tags from text * * @link http://www.smarty.net/docs/en/language.modifier.strip.tags.tpl strip_tags (Smarty online manual) @@ -21,7 +20,7 @@ */ function smarty_modifiercompiler_strip_tags($params) { - if (!isset($params[ 1 ]) || $params[ 1 ] === true || trim($params[ 1 ], '"') == 'true') { + if (!isset($params[ 1 ]) || $params[ 1 ] === true || trim($params[ 1 ], '"') === 'true') { return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})"; } else { return 'strip_tags(' . $params[ 0 ] . ')'; diff --git a/lib/smarty3/plugins/modifiercompiler.to_charset.php b/lib/smarty3/plugins/modifiercompiler.to_charset.php index fea8d82..d652eab 100644 --- a/lib/smarty3/plugins/modifiercompiler.to_charset.php +++ b/lib/smarty3/plugins/modifiercompiler.to_charset.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty to_charset modifier plugin - * Type: modifier<br> - * Name: to_charset<br> + * Type: modifier + * Name: to_charset * Purpose: convert character encoding from internal encoding to $charset * * @author Rodney Rehm @@ -24,10 +23,8 @@ function smarty_modifiercompiler_to_charset($params) // FIXME: (rodneyrehm) shouldn't this throw an error? return $params[ 0 ]; } - if (!isset($params[ 1 ])) { $params[ 1 ] = '"ISO-8859-1"'; } - return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 1 ] . ', "' . addslashes(Smarty::$_CHARSET) . '")'; } diff --git a/lib/smarty3/plugins/modifiercompiler.unescape.php b/lib/smarty3/plugins/modifiercompiler.unescape.php index a3409bc..05beb81 100644 --- a/lib/smarty3/plugins/modifiercompiler.unescape.php +++ b/lib/smarty3/plugins/modifiercompiler.unescape.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty unescape modifier plugin - * Type: modifier<br> - * Name: unescape<br> + * Type: modifier + * Name: unescape * Purpose: unescape html entities * * @author Rodney Rehm @@ -26,24 +25,19 @@ function smarty_modifiercompiler_unescape($params) if (!isset($params[ 2 ])) { $params[ 2 ] = '\'' . addslashes(Smarty::$_CHARSET) . '\''; } else { - $params[ 2 ] = "'" . $params[ 2 ] . "'"; + $params[ 2 ] = "'{$params[ 2 ]}'"; } - switch (trim($params[ 1 ], '"\'')) { case 'entity': case 'htmlall': if (Smarty::$_MBSTRING) { return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 2 ] . ', \'HTML-ENTITIES\')'; } - return 'html_entity_decode(' . $params[ 0 ] . ', ENT_NOQUOTES, ' . $params[ 2 ] . ')'; - case 'html': return 'htmlspecialchars_decode(' . $params[ 0 ] . ', ENT_QUOTES)'; - case 'url': return 'rawurldecode(' . $params[ 0 ] . ')'; - default: return $params[ 0 ]; } diff --git a/lib/smarty3/plugins/modifiercompiler.upper.php b/lib/smarty3/plugins/modifiercompiler.upper.php index a083c4f..ea4e95b 100644 --- a/lib/smarty3/plugins/modifiercompiler.upper.php +++ b/lib/smarty3/plugins/modifiercompiler.upper.php @@ -5,11 +5,10 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty upper modifier plugin - * Type: modifier<br> - * Name: lower<br> + * Type: modifier + * Name: lower * Purpose: convert string to uppercase * * @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual) diff --git a/lib/smarty3/plugins/modifiercompiler.wordwrap.php b/lib/smarty3/plugins/modifiercompiler.wordwrap.php index 9184973..8565f14 100644 --- a/lib/smarty3/plugins/modifiercompiler.wordwrap.php +++ b/lib/smarty3/plugins/modifiercompiler.wordwrap.php @@ -5,22 +5,22 @@ * @package Smarty * @subpackage PluginsModifierCompiler */ - /** * Smarty wordwrap modifier plugin - * Type: modifier<br> - * Name: wordwrap<br> + * Type: modifier + * Name: wordwrap * Purpose: wrap a string of text at a given length * * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual) * @author Uwe Tews * - * @param array $params parameters - * @param $compiler + * @param array $params parameters + * @param \Smarty_Internal_TemplateCompilerBase $compiler * * @return string with compiled code + * @throws \SmartyException */ -function smarty_modifiercompiler_wordwrap($params, $compiler) +function smarty_modifiercompiler_wordwrap($params, Smarty_Internal_TemplateCompilerBase $compiler) { if (!isset($params[ 1 ])) { $params[ 1 ] = 80; @@ -33,19 +33,7 @@ function smarty_modifiercompiler_wordwrap($params, $compiler) } $function = 'wordwrap'; if (Smarty::$_MBSTRING) { - if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) { - $compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ 'wordwrap' ][ 'modifier' ][ 'file' ] = - SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php'; - $compiler->template->required_plugins[ 'nocache' ][ 'wordwrap' ][ 'modifier' ][ 'function' ] = - 'smarty_mb_wordwrap'; - } else { - $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'wordwrap' ][ 'modifier' ][ 'file' ] = - SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php'; - $compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ 'wordwrap' ][ 'modifier' ][ 'function' ] = - 'smarty_mb_wordwrap'; - } - $function = 'smarty_mb_wordwrap'; + $function = $compiler->getPlugin('mb_wordwrap', 'modifier'); } - return $function . '(' . $params[ 0 ] . ',' . $params[ 1 ] . ',' . $params[ 2 ] . ',' . $params[ 3 ] . ')'; } diff --git a/lib/smarty3/plugins/outputfilter.trimwhitespace.php b/lib/smarty3/plugins/outputfilter.trimwhitespace.php index 1a67123..7e4503a 100644 --- a/lib/smarty3/plugins/outputfilter.trimwhitespace.php +++ b/lib/smarty3/plugins/outputfilter.trimwhitespace.php @@ -5,85 +5,85 @@ * @package Smarty * @subpackage PluginsFilter */ - /** * Smarty trimwhitespace outputfilter plugin * Trim unnecessary whitespace from HTML markup. * - * @author Rodney Rehm + * @author Rodney Rehm * * @param string $source input string * * @return string filtered output - * @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail! + * @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail! */ function smarty_outputfilter_trimwhitespace($source) { $store = array(); $_store = 0; $_offset = 0; - // Unify Line-Breaks to \n - $source = preg_replace("/\015\012|\015|\012/", "\n", $source); - + $source = preg_replace('/\015\012|\015|\012/', "\n", $source); // capture Internet Explorer and KnockoutJS Conditional Comments - if (preg_match_all('#<!--((\[[^\]]+\]>.*?<!\[[^\]]+\])|(\s*/?ko\s+.+))-->#is', $source, $matches, - PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) { + if (preg_match_all( + '#<!--((\[[^\]]+\]>.*?<!\[[^\]]+\])|(\s*/?ko\s+.+))-->#is', + $source, + $matches, + PREG_OFFSET_CAPTURE | PREG_SET_ORDER + ) + ) { foreach ($matches as $match) { $store[] = $match[ 0 ][ 0 ]; $_length = strlen($match[ 0 ][ 0 ]); $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length); - $_offset += $_length - strlen($replace); - $_store ++; + $_store++; } } - // Strip all HTML-Comments // yes, even the ones in <script> - see http://stackoverflow.com/a/808850/515124 $source = preg_replace('#<!--.*?-->#ms', '', $source); - // capture html elements not to be messed with $_offset = 0; - if (preg_match_all('#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is', - $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) { + if (preg_match_all( + '#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is', + $source, + $matches, + PREG_OFFSET_CAPTURE | PREG_SET_ORDER + ) + ) { foreach ($matches as $match) { $store[] = $match[ 0 ][ 0 ]; $_length = strlen($match[ 0 ][ 0 ]); $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length); - $_offset += $_length - strlen($replace); - $_store ++; + $_store++; } } - $expressions = array(// replace multiple spaces between tags by a single space // can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements - '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2', + '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2', // remove spaces between attributes (but not in attribute values!) '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5', // note: for some very weird reason trim() seems to remove spaces inside attributes. // maybe a \0 byte or something is interfering? - '#^\s+<#Ss' => '<', '#>\s+$#Ss' => '>',); - + '#^\s+<#Ss' => '<', + '#>\s+$#Ss' => '>', + ); $source = preg_replace(array_keys($expressions), array_values($expressions), $source); // note: for some very weird reason trim() seems to remove spaces inside attributes. // maybe a \0 byte or something is interfering? // $source = trim( $source ); - $_offset = 0; if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) { foreach ($matches as $match) { $_length = strlen($match[ 0 ][ 0 ]); $replace = $store[ $match[ 1 ][ 0 ] ]; $source = substr_replace($source, $replace, $match[ 0 ][ 1 ] + $_offset, $_length); - $_offset += strlen($replace) - $_length; - $_store ++; + $_store++; } } - return $source; } diff --git a/lib/smarty3/plugins/shared.escape_special_chars.php b/lib/smarty3/plugins/shared.escape_special_chars.php index b68fe4b..6b18d3e 100644 --- a/lib/smarty3/plugins/shared.escape_special_chars.php +++ b/lib/smarty3/plugins/shared.escape_special_chars.php @@ -5,16 +5,15 @@ * @package Smarty * @subpackage PluginsShared */ - /** * escape_special_chars common function - * Function: smarty_function_escape_special_chars<br> + * Function: smarty_function_escape_special_chars * Purpose: used by other smarty functions to escape * special chars except for already escaped ones * - * @author Monte Ohrt <monte at ohrt dot com> + * @author Monte Ohrt <monte at ohrt dot com> * - * @param string $string text that should by escaped + * @param string $string text that should by escaped * * @return string */ @@ -29,6 +28,5 @@ function smarty_function_escape_special_chars($string) $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string); } } - return $string; } diff --git a/lib/smarty3/plugins/shared.literal_compiler_param.php b/lib/smarty3/plugins/shared.literal_compiler_param.php index 8a3711d..65caf03 100644 --- a/lib/smarty3/plugins/shared.literal_compiler_param.php +++ b/lib/smarty3/plugins/shared.literal_compiler_param.php @@ -5,7 +5,6 @@ * @package Smarty * @subpackage PluginsShared */ - /** * evaluate compiler parameter * @@ -25,12 +24,12 @@ function smarty_literal_compiler_param($params, $index, $default = null) } // test if param is a literal if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[ $index ])) { - throw new SmartyException('$param[' . $index . - '] is not a literal and is thus not evaluatable at compile time'); + throw new SmartyException( + '$param[' . $index . + '] is not a literal and is thus not evaluatable at compile time' + ); } - $t = null; eval("\$t = " . $params[ $index ] . ";"); - return $t; } diff --git a/lib/smarty3/plugins/shared.make_timestamp.php b/lib/smarty3/plugins/shared.make_timestamp.php index 67f8624..9626dc6 100644 --- a/lib/smarty3/plugins/shared.make_timestamp.php +++ b/lib/smarty3/plugins/shared.make_timestamp.php @@ -5,12 +5,11 @@ * @package Smarty * @subpackage PluginsShared */ - /** - * Function: smarty_make_timestamp<br> + * Function: smarty_make_timestamp * Purpose: used by other smarty functions to make a timestamp from a string. * - * @author Monte Ohrt <monte at ohrt dot com> + * @author Monte Ohrt <monte at ohrt dot com> * * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime() * @@ -21,25 +20,30 @@ function smarty_make_timestamp($string) if (empty($string)) { // use "now": return time(); - } elseif ($string instanceof DateTime || - (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface) + } elseif ($string instanceof DateTime + || (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface) ) { - return (int) $string->format('U'); // PHP 5.2 BC - } elseif (strlen($string) == 14 && ctype_digit($string)) { + return (int)$string->format('U'); // PHP 5.2 BC + } elseif (strlen($string) === 14 && ctype_digit($string)) { // it is mysql timestamp format of YYYYMMDDHHMMSS? - return mktime(substr($string, 8, 2), substr($string, 10, 2), substr($string, 12, 2), substr($string, 4, 2), - substr($string, 6, 2), substr($string, 0, 4)); + return mktime( + substr($string, 8, 2), + substr($string, 10, 2), + substr($string, 12, 2), + substr($string, 4, 2), + substr($string, 6, 2), + substr($string, 0, 4) + ); } elseif (is_numeric($string)) { // it is a numeric string, we handle it as timestamp - return (int) $string; + return (int)$string; } else { // strtotime should handle it $time = strtotime($string); - if ($time == - 1 || $time === false) { + if ($time === -1 || $time === false) { // strtotime() was not able to parse $string, use "now": return time(); } - return $time; } } diff --git a/lib/smarty3/plugins/shared.mb_str_replace.php b/lib/smarty3/plugins/shared.mb_str_replace.php index 0c3ffe2..206cf9e 100644 --- a/lib/smarty3/plugins/shared.mb_str_replace.php +++ b/lib/smarty3/plugins/shared.mb_str_replace.php @@ -6,14 +6,13 @@ * @subpackage PluginsShared */ if (!function_exists('smarty_mb_str_replace')) { - /** * Multibyte string replace * - * @param string $search the string to be searched - * @param string $replace the replacement string - * @param string $subject the source string - * @param int &$count number of matches found + * @param string|string[] $search the string to be searched + * @param string|string[] $replace the replacement string + * @param string $subject the source string + * @param int &$count number of matches found * * @return string replaced string * @author Rodney Rehm @@ -37,7 +36,7 @@ if (!function_exists('smarty_mb_str_replace')) { } } else { $n = max(count($search), count($replace)); - while ($n --) { + while ($n--) { $subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c); $count += $c; next($search); @@ -49,7 +48,6 @@ if (!function_exists('smarty_mb_str_replace')) { $count = count($parts) - 1; $subject = implode($replace, $parts); } - return $subject; } } diff --git a/lib/smarty3/plugins/shared.mb_unicode.php b/lib/smarty3/plugins/shared.mb_unicode.php index 0f790b5..7d12065 100644 --- a/lib/smarty3/plugins/shared.mb_unicode.php +++ b/lib/smarty3/plugins/shared.mb_unicode.php @@ -5,7 +5,6 @@ * @package Smarty * @subpackage PluginsShared */ - /** * convert characters to their decimal unicode equivalents * @@ -20,12 +19,11 @@ function smarty_mb_to_unicode($string, $encoding = null) { if ($encoding) { - $expanded = mb_convert_encoding($string, "UTF-32BE", $encoding); + $expanded = mb_convert_encoding($string, 'UTF-32BE', $encoding); } else { - $expanded = mb_convert_encoding($string, "UTF-32BE"); + $expanded = mb_convert_encoding($string, 'UTF-32BE'); } - - return unpack("N*", $expanded); + return unpack('N*', $expanded); } /** @@ -45,10 +43,9 @@ function smarty_mb_from_unicode($unicode, $encoding = null) if (!$encoding) { $encoding = mb_internal_encoding(); } - foreach ((array) $unicode as $utf32be) { - $character = pack("N*", $utf32be); - $t .= mb_convert_encoding($character, $encoding, "UTF-32BE"); + foreach ((array)$unicode as $utf32be) { + $character = pack('N*', $utf32be); + $t .= mb_convert_encoding($character, $encoding, 'UTF-32BE'); } - return $t; } diff --git a/lib/smarty3/plugins/variablefilter.htmlspecialchars.php b/lib/smarty3/plugins/variablefilter.htmlspecialchars.php index aecd1e7..3c85295 100644 --- a/lib/smarty3/plugins/variablefilter.htmlspecialchars.php +++ b/lib/smarty3/plugins/variablefilter.htmlspecialchars.php @@ -5,15 +5,15 @@ * @package Smarty * @subpackage PluginsFilter */ - /** * Smarty htmlspecialchars variablefilter plugin * - * @param string $source input string + * @param string $source input string + * @param \Smarty_Internal_Template $template * * @return string filtered output */ -function smarty_variablefilter_htmlspecialchars($source) +function smarty_variablefilter_htmlspecialchars($source, Smarty_Internal_Template $template) { return htmlspecialchars($source, ENT_QUOTES, Smarty::$_CHARSET); } |