diff options
author | Jakob Sack <mail@jakobsack.de> | 2011-03-01 23:20:16 +0100 |
---|---|---|
committer | Jakob Sack <mail@jakobsack.de> | 2011-03-01 23:20:16 +0100 |
commit | 132695ceb1d7ab0e4bfbb141e9e9639111dd25b5 (patch) | |
tree | f53fabcefd89a1e5bbeda9a2c2d2fff6683139d4 /3dparty/Smarty/plugins | |
parent | 1fd39a52fa750878e7d70fba63c099f252095762 (diff) | |
download | nextcloud-server-132695ceb1d7ab0e4bfbb141e9e9639111dd25b5.tar.gz nextcloud-server-132695ceb1d7ab0e4bfbb141e9e9639111dd25b5.zip |
Start of the refactoring. Commit is quite big because I forgot to use git right from the beginning. Sorry.
Diffstat (limited to '3dparty/Smarty/plugins')
41 files changed, 3131 insertions, 0 deletions
diff --git a/3dparty/Smarty/plugins/block.php.php b/3dparty/Smarty/plugins/block.php.php new file mode 100644 index 00000000000..8fedd8b4352 --- /dev/null +++ b/3dparty/Smarty/plugins/block.php.php @@ -0,0 +1,27 @@ +<?php +/** + * Smarty plugin to execute PHP code + * + * @package Smarty + * @subpackage PluginsBlock + * @author Uwe Tews + */ + +/** + * Smarty {php}{/php} block plugin + * + * @param string $content contents of the block + * @param object $template template object + * @param boolean $ &$repeat repeat flag + * @return string content re-formatted + */ +function smarty_block_php($params, $content, $template, &$repeat) +{ + if (!$template->allow_php_tag) { + throw new SmartyException("{php} is deprecated, set allow_php_tag = true to enable"); + } + eval($content); + return ''; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/block.textformat.php b/3dparty/Smarty/plugins/block.textformat.php new file mode 100644 index 00000000000..517fd62dd52 --- /dev/null +++ b/3dparty/Smarty/plugins/block.textformat.php @@ -0,0 +1,102 @@ +<?php +/** + * Smarty plugin to format text blocks + * + * @package Smarty + * @subpackage PluginsBlock + */ + +/** + * Smarty {textformat}{/textformat} block plugin + * + * Type: block function<br> + * Name: textformat<br> + * Purpose: format text a certain way with preset styles + * or custom wrap/indent settings<br> + * + * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat} + * (Smarty online manual) + * @param array $params parameters + * <pre> + * Params: style: string (email) + * indent: integer (0) + * wrap: integer (80) + * wrap_char string ("\n") + * indent_char: string (" ") + * wrap_boundary: boolean (true) + * </pre> + * @author Monte Ohrt <monte at ohrt dot com> + * @param string $content contents of the block + * @param object $template template object + * @param boolean &$repeat repeat flag + * @return string content re-formatted + */ +function smarty_block_textformat($params, $content, $template, &$repeat) +{ + if (is_null($content)) { + return; + } + + $style = null; + $indent = 0; + $indent_first = 0; + $indent_char = ' '; + $wrap = 80; + $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; + break; + + case 'indent': + case 'indent_first': + case 'wrap': + $$_key = (int)$_val; + break; + + case 'wrap_cut': + $$_key = (bool)$_val; + break; + + default: + trigger_error("textformat: unknown attribute '$_key'"); + } + } + + if ($style == 'email') { + $wrap = 72; + } + // split into paragraphs + $_paragraphs = preg_split('![\r\n][\r\n]!', $content); + $_output = ''; + + for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) { + if ($_paragraphs[$_x] == '') { + continue; + } + // convert mult. spaces & special chars to single space + $_paragraphs[$_x] = preg_replace(array('!\s+!', '!(^\s+)|(\s+$)!'), array(' ', ''), $_paragraphs[$_x]); + // indent first line + if ($indent_first > 0) { + $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x]; + } + // wordwrap sentences + $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut); + // indent lines + if ($indent > 0) { + $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]); + } + } + $_output = implode($wrap_char . $wrap_char, $_paragraphs); + + return $assign ? $template->assign($assign, $_output) : $_output; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.counter.php b/3dparty/Smarty/plugins/function.counter.php new file mode 100644 index 00000000000..7c50bd44b7e --- /dev/null +++ b/3dparty/Smarty/plugins/function.counter.php @@ -0,0 +1,78 @@ +<?php +/** + * Smarty plugin + * @package Smarty + * @subpackage PluginsFunction + */ + +/** + * Smarty {counter} function plugin + * + * Type: function<br> + * Name: counter<br> + * Purpose: print out a counter value + * @author Monte Ohrt <monte at ohrt dot com> + * @link http://smarty.php.net/manual/en/language.function.counter.php {counter} + * (Smarty online manual) + * @param array parameters + * @param Smarty + * @param object $template template object + * @return string|null + */ +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']; + } + + 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']; + } 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") + $counter['count'] -= $counter['skip']; + else + $counter['count'] += $counter['skip']; + + return $retval; + +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.cycle.php b/3dparty/Smarty/plugins/function.cycle.php new file mode 100644 index 00000000000..98e3e28781a --- /dev/null +++ b/3dparty/Smarty/plugins/function.cycle.php @@ -0,0 +1,106 @@ +<?php +/** + * Smarty plugin + * + * @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> + * Input: + * - 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) + * - reset = boolean - resets given var to true + * - print = boolean - print var or not. default is true + * - advance = boolean - whether or not to advance the cycle + * - delimiter = the value delimiter, default is "," + * - assign = boolean, assigns to template var instead of + * printed. + * + * Examples:<br> + * <pre> + * {cycle values="#eeeeee,#d0d0d0d"} + * {cycle name=row values="one,two,three" reset=true} + * {cycle name=row} + * </pre> + * @link http://smarty.php.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 + * @param array + * @param object $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; + + if (!in_array('values', array_keys($params))) { + if(!isset($cycle_vars[$name]['values'])) { + trigger_error("cycle: missing 'values' parameter"); + return; + } + } else { + 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']++; + } + } + + return $retval; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.fetch.php b/3dparty/Smarty/plugins/function.fetch.php new file mode 100644 index 00000000000..2b09fb94752 --- /dev/null +++ b/3dparty/Smarty/plugins/function.fetch.php @@ -0,0 +1,216 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsFunction + */ + +/** + * Smarty {fetch} plugin + * + * Type: function<br> + * Name: fetch<br> + * Purpose: fetch file, web or ftp data and display results + * @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch} + * (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @param array $params parameters + * @param object $template template object + * @return string|null if the assign parameter is passed, Smarty assigns the + * result to a template variable + */ +function smarty_function_fetch($params, $template) +{ + if (empty($params['file'])) { + trigger_error("[plugin] fetch parameter 'file' cannot be empty",E_USER_NOTICE); + return; + } + + $content = ''; + if (isset($template->security_policy) && !preg_match('!^(http|ftp)://!i', $params['file'])) { + if(!$template->security_policy->isTrustedResourceDir($params['file'])) { + return; + } + + // fetch the file + if($fp = @fopen($params['file'],'r')) { + while(!feof($fp)) { + $content .= fgets ($fp,4096); + } + fclose($fp); + } else { + trigger_error('[plugin] fetch cannot read file \'' . $params['file'] . '\'',E_USER_NOTICE); + return; + } + } else { + // not a local file + if(preg_match('!^http://!i',$params['file'])) { + // 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 ".$template->_version; + $referer = ""; + $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/'; + $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : ''; + $_is_proxy = false; + if(empty($uri_parts['port'])) { + $port = 80; + } else { + $port = $uri_parts['port']; + } + if(!empty($uri_parts['user'])) { + $user = $uri_parts['user']; + } + if(!empty($uri_parts['pass'])) { + $pass = $uri_parts['pass']; + } + // loop through parameters, setup headers + foreach($params as $param_key => $param_value) { + switch($param_key) { + case "file": + case "assign": + case "assign_headers": + break; + case "user": + if(!empty($param_value)) { + $user = $param_value; + } + break; + case "pass": + if(!empty($param_value)) { + $pass = $param_value; + } + break; + case "accept": + if(!empty($param_value)) { + $accept = $param_value; + } + break; + case "header": + if(!empty($param_value)) { + if(!preg_match('![\w\d-]+: .+!',$param_value)) { + trigger_error("[plugin] invalid header format '".$param_value."'",E_USER_NOTICE); + return; + } else { + $extra_headers[] = $param_value; + } + } + break; + case "proxy_host": + if(!empty($param_value)) { + $proxy_host = $param_value; + } + break; + case "proxy_port": + if(!preg_match('!\D!', $param_value)) { + $proxy_port = (int) $param_value; + } else { + trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE); + return; + } + break; + case "agent": + if(!empty($param_value)) { + $agent = $param_value; + } + break; + case "referer": + if(!empty($param_value)) { + $referer = $param_value; + } + break; + case "timeout": + if(!preg_match('!\D!', $param_value)) { + $timeout = (int) $param_value; + } else { + 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); + return; + } + } + if(!empty($proxy_host) && !empty($proxy_port)) { + $_is_proxy = true; + $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout); + } 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) { + fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n"); + } else { + fputs($fp, "GET $uri HTTP/1.0\r\n"); + } + if(!empty($host)) { + fputs($fp, "Host: $host\r\n"); + } + if(!empty($accept)) { + fputs($fp, "Accept: $accept\r\n"); + } + if(!empty($agent)) { + fputs($fp, "User-Agent: $agent\r\n"); + } + if(!empty($referer)) { + fputs($fp, "Referer: $referer\r\n"); + } + if(isset($extra_headers) && is_array($extra_headers)) { + foreach($extra_headers as $curr_header) { + fputs($fp, $curr_header."\r\n"); + } + } + if(!empty($user) && !empty($pass)) { + 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 { + // ftp fetch + if($fp = @fopen($params['file'],'r')) { + while(!feof($fp)) { + $content .= fgets ($fp,4096); + } + fclose($fp); + } else { + trigger_error('[plugin] fetch cannot read file \'' . $params['file'] .'\'',E_USER_NOTICE); + return; + } + } + + } + + + if (!empty($params['assign'])) { + $template->assign($params['assign'],$content); + } else { + return $content; + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.html_checkboxes.php b/3dparty/Smarty/plugins/function.html_checkboxes.php new file mode 100644 index 00000000000..6a1a3ffdc71 --- /dev/null +++ b/3dparty/Smarty/plugins/function.html_checkboxes.php @@ -0,0 +1,143 @@ +<?php +/** + * Smarty plugin + * + * @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> + * 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> + * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} + * (Smarty online manual) + * @author Christopher Kvarme <christopher.kvarme@flashjab.com> + * @author credits to Monte Ohrt <monte at ohrt dot com> + * @version 1.0 + * @param array $params parameters + * Input:<br> + * - name (optional) - string default "checkbox" + * - values (required) - array + * - options (optional) - associative array + * - checked (optional) - array default not set + * - separator (optional) - ie <br> or + * - output (optional) - the output next to each checkbox + * - assign (optional) - assign the output as an array to this variable + * @param object $template template object + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_checkboxes($params, $template) +{ + require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); + + $name = 'checkbox'; + $values = null; + $options = null; + $selected = null; + $separator = ''; + $labels = true; + $output = null; + + $extra = ''; + + foreach($params as $_key => $_val) { + switch($_key) { + case 'name': + case 'separator': + $$_key = $_val; + break; + + case 'labels': + $$_key = (bool)$_val; + break; + + case 'options': + $$_key = (array)$_val; + break; + + case 'values': + case 'output': + $$_key = array_values((array)$_val); + break; + + case 'checked': + case 'selected': + $selected = array_map('strval', array_values((array)$_val)); + break; + + case 'checkboxes': + trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING); + $options = (array)$_val; + break; + + case 'assign': + break; + + 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); + } + break; + } + } + + if (!isset($options) && !isset($values)) + return ''; /* raise error here? */ + + settype($selected, 'array'); + $_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); + + + } 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); + } + + } + + if(!empty($params['assign'])) { + $template->assign($params['assign'], $_html_result); + } else { + return implode("\n",$_html_result); + } + +} + +function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) { + $_output = ''; + if ($labels) $_output .= '<label>'; + $_output .= '<input type="checkbox" name="' + . smarty_function_escape_special_chars($name) . '[]" value="' + . smarty_function_escape_special_chars($value) . '"'; + + if (in_array((string)$value, $selected)) { + $_output .= ' checked="checked"'; + } + $_output .= $extra . ' />' . $output; + if ($labels) $_output .= '</label>'; + $_output .= $separator; + + return $_output; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.html_image.php b/3dparty/Smarty/plugins/function.html_image.php new file mode 100644 index 00000000000..6ff4f5707c9 --- /dev/null +++ b/3dparty/Smarty/plugins/function.html_image.php @@ -0,0 +1,137 @@ +<?php +/** + * Smarty plugin + * + * @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"} + * Output: <img src="/images/masthead.gif" width=400 height=23> + * + * @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image} + * (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @author credits to Duda <duda@big.hu> + * @version 1.0 + * @param array $params parameters + * Input:<br> + * - file = file (and path) of image (required) + * - height = image height (optional, default actual height) + * - width = image width (optional, default actual width) + * - basedir = base directory for absolute paths, default + * is environment variable DOCUMENT_ROOT + * - path_prefix = prefix for path output (optional, default empty) + * @param object $template template object + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_image($params, $template) +{ + require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); + + $alt = ''; + $file = ''; + $height = ''; + $width = ''; + $extra = ''; + $prefix = ''; + $suffix = ''; + $path_prefix = ''; + $server_vars = $_SERVER; + $basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : ''; + foreach($params as $_key => $_val) { + switch ($_key) { + case 'file': + case 'height': + case 'width': + case 'dpi': + case 'path_prefix': + 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); + } + 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); + } + break; + } + } + + if (empty($file)) { + trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE); + return; + } + + if (substr($file, 0, 1) == '/') { + $_image_path = $basedir . $file; + } else { + $_image_path = $file; + } + + if (!isset($params['width']) || !isset($params['height'])) { + if (!$_image_data = @getimagesize($_image_path)) { + if (!file_exists($_image_path)) { + trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE); + return; + } else if (!is_readable($_image_path)) { + 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); + return; + } + } + if (isset($template->security_policy)) { + if (!$template->security_policy->isTrustedResourceDir($_image_path)) { + return; + } + } + + if (!isset($params['width'])) { + $width = $_image_data[0]; + } + if (!isset($params['height'])) { + $height = $_image_data[1]; + } + } + + if (isset($params['dpi'])) { + if (strstr($server_vars['HTTP_USER_AGENT'], 'Mac')) { + $dpi_default = 72; + } else { + $dpi_default = 96; + } + $_resize = $dpi_default / $params['dpi']; + $width = round($width * $_resize); + $height = round($height * $_resize); + } + + return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' . $height . '"' . $extra . ' />' . $suffix; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.html_options.php b/3dparty/Smarty/plugins/function.html_options.php new file mode 100644 index 00000000000..3570a62064a --- /dev/null +++ b/3dparty/Smarty/plugins/function.html_options.php @@ -0,0 +1,133 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsFunction + */ + +/** + * Smarty {html_options} function plugin + * + * Type: function<br> + * Name: html_options<br> + * Purpose: Prints the list of <option> tags generated from + * the passed parameters + * + * @link http://smarty.php.net/manual/en/language.function.html.options.php {html_image} + * (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @param array $params parameters + * Input:<br> + * - name (optional) - string default "select" + * - values (required if no options supplied) - array + * - options (required if no values supplied) - associative array + * - selected (optional) - string default not set + * - output (required if not options supplied) - array + * @param object $template template object + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_options($params, $template) +{ + require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); + + $name = null; + $values = null; + $options = null; + $selected = array(); + $output = null; + $id = null; + $class = null; + + $extra = ''; + $options_extra = ''; + + foreach($params as $_key => $_val) { + switch ($_key) { + case 'name': + case 'class': + case 'id': + $$_key = (string)$_val; + break; + + case 'options': + $$_key = (array)$_val; + break; + + case 'values': + case 'output': + $$_key = array_values((array)$_val); + break; + + case 'selected': + $$_key = array_map('strval', array_values((array)$_val)); + 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); + } + break; + } + } + + if (!isset($options) && !isset($values)) + return ''; + /* raise error here? */ + + $_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); + } + } else { + foreach ($values as $_i => $_key) { + $_val = isset($output[$_i]) ? $output[$_i] : ''; + $_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.'"' : ''; + $_html_result = '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result . '</select>' . "\n"; + } + + return $_html_result; +} + +function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx) +{ + if (!is_array($value)) { + $_html_result = '<option value="' . + smarty_function_escape_special_chars($key) . '"'; + if (in_array((string)$key, $selected)) + $_html_result .= ' selected="selected"'; + $_html_class = !empty($class) ? ' class="'.$class.' option"' : ''; + $_html_id = !empty($id) ? ' id="'.$id.'-'.$idx.'"' : ''; + $_html_result .= $_html_class . $_html_id . '>' . smarty_function_escape_special_chars($value) . '</option>' . "\n"; + $idx++; + } else { + $_idx = 0; + $_html_result = smarty_function_html_options_optgroup($key, $value, $selected, $id.'-'.$idx, $class, $_idx); + $idx++; + } + return $_html_result; +} + +function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx) +{ + $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n"; + foreach ($values as $key => $value) { + $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx); + } + $optgroup_html .= "</optgroup>\n"; + return $optgroup_html; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.html_radios.php b/3dparty/Smarty/plugins/function.html_radios.php new file mode 100644 index 00000000000..90bd5a164d3 --- /dev/null +++ b/3dparty/Smarty/plugins/function.html_radios.php @@ -0,0 +1,154 @@ +<?php +/** + * Smarty plugin + * + * @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> + * 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) + * @author Christopher Kvarme <christopher.kvarme@flashjab.com> + * @author credits to Monte Ohrt <monte at ohrt dot com> + * @version 1.0 + * @param array $params parameters + * Input:<br> + * - name (optional) - string default "radio" + * - values (required) - array + * - options (optional) - associative array + * - checked (optional) - array default not set + * - separator (optional) - ie <br> or + * - output (optional) - the output next to each radio button + * - assign (optional) - assign the output as an array to this variable + * @param object $template template object + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_radios($params, $template) +{ + require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); + + $name = 'radio'; + $values = null; + $options = null; + $selected = null; + $separator = ''; + $labels = true; + $label_ids = false; + $output = null; + $extra = ''; + + foreach($params as $_key => $_val) { + switch ($_key) { + case 'name': + case 'separator': + $$_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); + } else { + $selected = (string)$_val; + } + break; + + case 'labels': + case 'label_ids': + $$_key = (bool)$_val; + break; + + case 'options': + $$_key = (array)$_val; + break; + + case 'values': + case 'output': + $$_key = array_values((array)$_val); + break; + + case 'radios': + 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; + + 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); + } + 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_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids); + } 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); + } + } + + if (!empty($params['assign'])) { + $template->assign($params['assign'], $_html_result); + } else { + return implode("\n", $_html_result); + } +} + +function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids) +{ + $_output = ''; + if ($labels) { + if ($label_ids) { + $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!', '_', $name . '_' . $value)); + $_output .= '<label for="' . $_id . '">'; + } else { + $_output .= '<label>'; + } + } + $_output .= '<input type="radio" name="' + . smarty_function_escape_special_chars($name) . '" value="' + . smarty_function_escape_special_chars($value) . '"'; + + if ($labels && $label_ids) $_output .= ' id="' . $_id . '"'; + + if ((string)$value == $selected) { + $_output .= ' checked="checked"'; + } + $_output .= $extra . ' />' . $output; + if ($labels) $_output .= '</label>'; + $_output .= $separator; + + return $_output; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.html_select_date.php b/3dparty/Smarty/plugins/function.html_select_date.php new file mode 100644 index 00000000000..265fbee748c --- /dev/null +++ b/3dparty/Smarty/plugins/function.html_select_date.php @@ -0,0 +1,330 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsFunction + */ + +/** + * Smarty {html_select_date} plugin + * + * Type: function<br> + * Name: html_select_date<br> + * Purpose: Prints the dropdowns for date selection. + * + * ChangeLog:<br> + * - 1.0 initial release + * - 1.1 added support for +/- N syntax for begin + * and end year values. (Monte) + * - 1.2 added support for yyyy-mm-dd syntax for + * time value. (Jan Rosier) + * - 1.3 added support for choosing format for + * month values (Gary Loescher) + * - 1.3.1 added support for choosing format for + * day values (Marcus Bointon) + * - 1.3.2 support negative timestamps, force year + * dropdown to include given date unless explicitly set (Monte) + * - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that + * of 0000-00-00 dates (cybot, boots) + * + * @link http://smarty.php.net/manual/en/language.function.html.select.date.php {html_select_date} + * (Smarty online manual) + * @version 1.3.4 + * @author Andrei Zmievski + * @author Monte Ohrt <monte at ohrt dot com> + * @param array $params parameters + * @param object $template template object + * @return string + */ +function smarty_function_html_select_date($params, $template) +{ + require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); + require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'); + require_once(SMARTY_PLUGINS_DIR . 'function.html_options.php'); + + /* Default values. */ + $prefix = "Date_"; + $start_year = strftime("%Y"); + $end_year = $start_year; + $display_days = true; + $display_months = true; + $display_years = true; + $month_format = "%B"; + /* Write months as numbers by default GL */ + $month_value_format = "%m"; + $day_format = "%02d"; + /* Write day values using this format MB */ + $day_value_format = "%d"; + $year_as_text = false; + /* Display years in reverse order? Ie. 2000,1999,.... */ + $reverse_years = false; + /* Should the select boxes be part of an array when returned from PHP? + e.g. setting it to "birthday", would create "birthday[Day]", + "birthday[Month]" & "birthday[Year]". Can be combined with prefix */ + $field_array = null; + /* <select size>'s of the different <select> tags. + If not set, uses default dropdown. */ + $day_size = null; + $month_size = null; + $year_size = null; + /* Unparsed attributes common to *ALL* the <select>/<input> tags. + An example might be in the template: all_extra ='class ="foo"'. */ + $all_extra = null; + /* Separate attributes for the tags. */ + $day_extra = null; + $month_extra = null; + $year_extra = null; + /* Order in which to display the fields. + "D" -> day, "M" -> month, "Y" -> year. */ + $field_order = 'MDY'; + /* String printed between the different fields. */ + $field_separator = "\n"; + $time = time(); + $all_empty = null; + $day_empty = null; + $month_empty = null; + $year_empty = null; + $extra_attrs = ''; + + foreach ($params as $_key => $_value) { + switch ($_key) { + case 'prefix': + case 'time': + case 'start_year': + case 'end_year': + case 'month_format': + case 'day_format': + case 'day_value_format': + case 'field_array': + case 'day_size': + case 'month_size': + case 'year_size': + case 'all_extra': + case 'day_extra': + case 'month_extra': + case 'year_extra': + case 'field_order': + case 'field_separator': + case 'month_value_format': + case 'month_empty': + case 'day_empty': + case 'year_empty': + $$_key = (string)$_value; + break; + + case 'all_empty': + $$_key = (string)$_value; + $day_empty = $month_empty = $year_empty = $all_empty; + break; + + case 'display_days': + case 'display_months': + case 'display_years': + case 'year_as_text': + case 'reverse_years': + $$_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); + } + break; + } + } + + if (preg_match('!^-\d+$!', $time)) { + // negative timestamp, use date() + $time = date('Y-m-d', $time); + } + // If $time is not in format yyyy-mm-dd + if (preg_match('/^(\d{0,4}-\d{0,2}-\d{0,2})/', $time, $found)) { + $time = $found[1]; + } else { + // use smarty_make_timestamp to get an unix timestamp and + // strftime to make yyyy-mm-dd + $time = strftime('%Y-%m-%d', smarty_make_timestamp($time)); + } + // Now split this in pieces, which later can be used to set the select + $time = explode("-", $time); + // make syntax "+N" or "-N" work with start_year and end_year + if (preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match)) { + if ($match[1] == '+') { + $end_year = strftime('%Y') + $match[2]; + } else { + $end_year = strftime('%Y') - $match[2]; + } + } + if (preg_match('!^(\+|\-)\s*(\d+)$!', $start_year, $match)) { + if ($match[1] == '+') { + $start_year = strftime('%Y') + $match[2]; + } else { + $start_year = strftime('%Y') - $match[2]; + } + } + if (strlen($time[0]) > 0) { + if ($start_year > $time[0] && !isset($params['start_year'])) { + // force start year to include given date if not explicitly set + $start_year = $time[0]; + } + if ($end_year < $time[0] && !isset($params['end_year'])) { + // force end year to include given date if not explicitly set + $end_year = $time[0]; + } + } + + $field_order = strtoupper($field_order); + + $html_result = $month_result = $day_result = $year_result = ""; + + $field_separator_count = -1; + if ($display_months) { + $field_separator_count++; + $month_names = array(); + $month_values = array(); + if (isset($month_empty)) { + $month_names[''] = $month_empty; + $month_values[''] = ''; + } + for ($i = 1; $i <= 12; $i++) { + $month_names[$i] = strftime($month_format, mktime(0, 0, 0, $i, 1, 2000)); + $month_values[$i] = strftime($month_value_format, mktime(0, 0, 0, $i, 1, 2000)); + } + + $month_result .= '<select name='; + if (null !== $field_array) { + $month_result .= '"' . $field_array . '[' . $prefix . 'Month]"'; + } else { + $month_result .= '"' . $prefix . 'Month"'; + } + if (null !== $month_size) { + $month_result .= ' size="' . $month_size . '"'; + } + if (null !== $month_extra) { + $month_result .= ' ' . $month_extra; + } + if (null !== $all_extra) { + $month_result .= ' ' . $all_extra; + } + $month_result .= $extra_attrs . '>' . "\n"; + + $month_result .= smarty_function_html_options(array('output' => $month_names, + 'values' => $month_values, + 'selected' => (int)$time[1] ? strftime($month_value_format, mktime(0, 0, 0, (int)$time[1], 1, 2000)) : '', + 'print_result' => false), + $template); + $month_result .= '</select>'; + } + + if ($display_days) { + $field_separator_count++; + $days = array(); + if (isset($day_empty)) { + $days[''] = $day_empty; + $day_values[''] = ''; + } + for ($i = 1; $i <= 31; $i++) { + $days[] = sprintf($day_format, $i); + $day_values[] = sprintf($day_value_format, $i); + } + + $day_result .= '<select name='; + if (null !== $field_array) { + $day_result .= '"' . $field_array . '[' . $prefix . 'Day]"'; + } else { + $day_result .= '"' . $prefix . 'Day"'; + } + if (null !== $day_size) { + $day_result .= ' size="' . $day_size . '"'; + } + if (null !== $all_extra) { + $day_result .= ' ' . $all_extra; + } + if (null !== $day_extra) { + $day_result .= ' ' . $day_extra; + } + $day_result .= $extra_attrs . '>' . "\n"; + $day_result .= smarty_function_html_options(array('output' => $days, + 'values' => $day_values, + 'selected' => $time[2], + 'print_result' => false), + $template); + $day_result .= '</select>'; + } + + if ($display_years) { + $field_separator_count++; + if (null !== $field_array) { + $year_name = $field_array . '[' . $prefix . 'Year]'; + } else { + $year_name = $prefix . 'Year'; + } + if ($year_as_text) { + $year_result .= '<input type="text" name="' . $year_name . '" value="' . $time[0] . '" size="4" maxlength="4"'; + if (null !== $all_extra) { + $year_result .= ' ' . $all_extra; + } + if (null !== $year_extra) { + $year_result .= ' ' . $year_extra; + } + $year_result .= ' />'; + } else { + $years = range((int)$start_year, (int)$end_year); + if ($reverse_years) { + rsort($years, SORT_NUMERIC); + } else { + sort($years, SORT_NUMERIC); + } + $yearvals = $years; + if (isset($year_empty)) { + array_unshift($years, $year_empty); + array_unshift($yearvals, ''); + } + $year_result .= '<select name="' . $year_name . '"'; + if (null !== $year_size) { + $year_result .= ' size="' . $year_size . '"'; + } + if (null !== $all_extra) { + $year_result .= ' ' . $all_extra; + } + if (null !== $year_extra) { + $year_result .= ' ' . $year_extra; + } + $year_result .= $extra_attrs . '>' . "\n"; + $year_result .= smarty_function_html_options(array('output' => $years, + 'values' => $yearvals, + 'selected' => $time[0], + 'print_result' => false), + $template); + $year_result .= '</select>'; + } + } + // Loop thru the field_order field + for ($i = 0; $i <= 2; $i++) { + $c = substr($field_order, $i, 1); + switch ($c) { + case 'D': + $html_result .= $day_result; + break; + + case 'M': + $html_result .= $month_result; + break; + + case 'Y': + $html_result .= $year_result; + break; + } + // Add the field seperator + if ($i < $field_separator_count) { + $html_result .= $field_separator; + } + } + + return $html_result; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.html_select_time.php b/3dparty/Smarty/plugins/function.html_select_time.php new file mode 100644 index 00000000000..1655e3de3ec --- /dev/null +++ b/3dparty/Smarty/plugins/function.html_select_time.php @@ -0,0 +1,194 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsFunction + */ + +/** + * Smarty {html_select_time} function plugin + * + * Type: function<br> + * Name: html_select_time<br> + * Purpose: Prints the dropdowns for time selection + * + * @link http://smarty.php.net/manual/en/language.function.html.select.time.php {html_select_time} + * (Smarty online manual) + * @author Roberto Berto <roberto@berto.net> + * @credits Monte Ohrt <monte AT ohrt DOT com> + * @param array $params parameters + * @param object $template template object + * @return string + * @uses smarty_make_timestamp() + */ +function smarty_function_html_select_time($params, $template) +{ + require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'); + require_once(SMARTY_PLUGINS_DIR . 'function.html_options.php'); + + /* Default values. */ + $prefix = "Time_"; + $time = time(); + $display_hours = true; + $display_minutes = true; + $display_seconds = true; + $display_meridian = true; + $use_24_hours = true; + $minute_interval = 1; + $second_interval = 1; + /* Should the select boxes be part of an array when returned from PHP? + e.g. setting it to "birthday", would create "birthday[Hour]", + "birthday[Minute]", "birthday[Seconds]" & "birthday[Meridian]". + Can be combined with prefix. */ + $field_array = null; + $all_extra = null; + $hour_extra = null; + $minute_extra = null; + $second_extra = null; + $meridian_extra = null; + + foreach ($params as $_key => $_value) { + switch ($_key) { + case 'prefix': + case 'time': + case 'field_array': + case 'all_extra': + case 'hour_extra': + case 'minute_extra': + case 'second_extra': + case 'meridian_extra': + $$_key = (string)$_value; + break; + + case 'display_hours': + case 'display_minutes': + case 'display_seconds': + case 'display_meridian': + case 'use_24_hours': + $$_key = (bool)$_value; + break; + + case 'minute_interval': + case 'second_interval': + $$_key = (int)$_value; + break; + + default: + trigger_error("[html_select_time] unknown parameter $_key", E_USER_WARNING); + } + } + + $time = smarty_make_timestamp($time); + + $html_result = ''; + + if ($display_hours) { + $hours = $use_24_hours ? range(0, 23) : range(1, 12); + $hour_fmt = $use_24_hours ? '%H' : '%I'; + for ($i = 0, $for_max = count($hours); $i < $for_max; $i++) + $hours[$i] = sprintf('%02d', $hours[$i]); + $html_result .= '<select name='; + if (null !== $field_array) { + $html_result .= '"' . $field_array . '[' . $prefix . 'Hour]"'; + } else { + $html_result .= '"' . $prefix . 'Hour"'; + } + if (null !== $hour_extra) { + $html_result .= ' ' . $hour_extra; + } + if (null !== $all_extra) { + $html_result .= ' ' . $all_extra; + } + $html_result .= '>' . "\n"; + $html_result .= smarty_function_html_options(array('output' => $hours, + 'values' => $hours, + 'selected' => strftime($hour_fmt, $time), + 'print_result' => false), + $template); + $html_result .= "</select>\n"; + } + + if ($display_minutes) { + $all_minutes = range(0, 59); + for ($i = 0, $for_max = count($all_minutes); $i < $for_max; $i += $minute_interval) + $minutes[] = sprintf('%02d', $all_minutes[$i]); + $selected = intval(floor(strftime('%M', $time) / $minute_interval) * $minute_interval); + $html_result .= '<select name='; + if (null !== $field_array) { + $html_result .= '"' . $field_array . '[' . $prefix . 'Minute]"'; + } else { + $html_result .= '"' . $prefix . 'Minute"'; + } + if (null !== $minute_extra) { + $html_result .= ' ' . $minute_extra; + } + if (null !== $all_extra) { + $html_result .= ' ' . $all_extra; + } + $html_result .= '>' . "\n"; + + $html_result .= smarty_function_html_options(array('output' => $minutes, + 'values' => $minutes, + 'selected' => $selected, + 'print_result' => false), + $template); + $html_result .= "</select>\n"; + } + + if ($display_seconds) { + $all_seconds = range(0, 59); + for ($i = 0, $for_max = count($all_seconds); $i < $for_max; $i += $second_interval) + $seconds[] = sprintf('%02d', $all_seconds[$i]); + $selected = intval(floor(strftime('%S', $time) / $second_interval) * $second_interval); + $html_result .= '<select name='; + if (null !== $field_array) { + $html_result .= '"' . $field_array . '[' . $prefix . 'Second]"'; + } else { + $html_result .= '"' . $prefix . 'Second"'; + } + + if (null !== $second_extra) { + $html_result .= ' ' . $second_extra; + } + if (null !== $all_extra) { + $html_result .= ' ' . $all_extra; + } + $html_result .= '>' . "\n"; + + $html_result .= smarty_function_html_options(array('output' => $seconds, + 'values' => $seconds, + 'selected' => $selected, + 'print_result' => false), + $template); + $html_result .= "</select>\n"; + } + + if ($display_meridian && !$use_24_hours) { + $html_result .= '<select name='; + if (null !== $field_array) { + $html_result .= '"' . $field_array . '[' . $prefix . 'Meridian]"'; + } else { + $html_result .= '"' . $prefix . 'Meridian"'; + } + + if (null !== $meridian_extra) { + $html_result .= ' ' . $meridian_extra; + } + if (null !== $all_extra) { + $html_result .= ' ' . $all_extra; + } + $html_result .= '>' . "\n"; + + $html_result .= smarty_function_html_options(array('output' => array('AM', 'PM'), + 'values' => array('am', 'pm'), + 'selected' => strtolower(strftime('%p', $time)), + 'print_result' => false), + $template); + $html_result .= "</select>\n"; + } + + return $html_result; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.html_table.php b/3dparty/Smarty/plugins/function.html_table.php new file mode 100644 index 00000000000..68c9a900f6d --- /dev/null +++ b/3dparty/Smarty/plugins/function.html_table.php @@ -0,0 +1,177 @@ +<?php +/** + * Smarty plugin + * + * @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> + * + * + * 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://smarty.php.net/manual/en/language.function.html.table.php {html_table} + * (Smarty online manual) + * @param array $params parameters + * Input:<br> + * - loop = array to loop through + * - cols = number of columns, comma separated list of column names + * or array of column names + * - rows = number of rows + * - table_attr = table attributes + * - th_attr = table heading attributes (arrays are cycled) + * - tr_attr = table row attributes (arrays are cycled) + * - td_attr = table cell attributes (arrays are cycled) + * - trailpad = value to pad trailing cells with + * - caption = text for caption element + * - vdir = vertical direction (default: "down", means top-to-bottom) + * - 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) + * @param object $template template object + * @return string + */ +function smarty_function_html_table($params, $template) +{ + $table_attr = 'border="1"'; + $tr_attr = ''; + $th_attr = ''; + $td_attr = ''; + $cols = $cols_count = 3; + $rows = 3; + $trailpad = ' '; + $vdir = 'down'; + $hdir = 'right'; + $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; + break; + + case 'cols': + if (is_array($_value) && !empty($_value)) { + $cols = $_value; + $cols_count = count($_value); + } elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) { + $cols = explode(',', $_value); + $cols_count = count($cols); + } elseif (!empty($_value)) { + $cols_count = (int)$_value; + } else { + $cols_count = $cols; + } + break; + + case 'rows': + $$_key = (int)$_value; + break; + + case 'table_attr': + case 'trailpad': + case 'hdir': + case 'vdir': + case 'inner': + case 'caption': + $$_key = (string)$_value; + break; + + case 'tr_attr': + case 'td_attr': + case 'th_attr': + $$_key = $_value; + break; + } + } + + $loop_count = count($loop); + if (empty($params['rows'])) { + /* no rows specified */ + $rows = ceil($loop_count / $cols_count); + } elseif (empty($params['cols'])) { + if (!empty($params['rows'])) { + /* no cols specified, but rows */ + $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); + $output .= "<thead><tr>\n"; + + 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++) { + $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') { + /* 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 { + $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n"; + } + } + $output .= "</tr>\n"; + } + $output .= "</tbody>\n"; + $output .= "</table>\n"; + + return $output; +} + +function smarty_function_html_table_cycle($name, $var, $no) +{ + if (!is_array($var)) { + $ret = $var; + } else { + $ret = $var[$no % count($var)]; + } + + return ($ret) ? ' ' . $ret : ''; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.mailto.php b/3dparty/Smarty/plugins/function.mailto.php new file mode 100644 index 00000000000..fe8c2188cce --- /dev/null +++ b/3dparty/Smarty/plugins/function.mailto.php @@ -0,0 +1,156 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsFunction + */ + +/** + * Smarty {mailto} function plugin + * + * Type: function<br> + * Name: mailto<br> + * Date: May 21, 2002 + * Purpose: automate mailto address link creation, and optionally + * encode them.<br> + * + * 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://smarty.php.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) + * @param array $params parameters + * Input:<br> + * - address = 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) + * - 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 + * @param object $template template object + * @return string + */ +function smarty_function_mailto($params, $template) +{ + $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. + $search = array('%40', '%2C'); + $replace = array('@', ','); + $mail_parms = array(); + foreach ($params as $var => $value) { + switch ($var) { + case 'cc': + case 'bcc': + case 'followupto': + if (!empty($value)) + $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; + + default: + } + } + + $mail_parm_vals = ''; + for ($i = 0; $i < count($mail_parms); $i++) { + $mail_parm_vals .= (0 == $i) ? '?' : '&'; + $mail_parm_vals .= $mail_parms[$i]; + } + $address .= $mail_parm_vals; + + $encode = (empty($params['encode'])) ? 'none' : $params['encode']; + if (!in_array($encode, array('javascript', 'javascript_charcode', 'hex', 'none'))) { + trigger_error("mailto: 'encode' parameter must be none, javascript or hex",E_USER_WARNING); + return; + } + + if ($encode == 'javascript') { + $string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');'; + + $js_encode = ''; + for ($x = 0; $x < strlen($string); $x++) { + $js_encode .= '%' . bin2hex($string[$x]); + } + + return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>'; + } elseif ($encode == 'javascript_charcode') { + $string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>'; + + for($x = 0, $y = strlen($string); $x < $y; $x++) { + $ord[] = ord($string[$x]); + } + + $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n"; + $_ret .= "<!--\n"; + $_ret .= "{document.write(String.fromCharCode("; + $_ret .= implode(',', $ord); + $_ret .= "))"; + $_ret .= "}\n"; + $_ret .= "//-->\n"; + $_ret .= "</script>\n"; + + return $_ret; + } 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; $x < strlen($address); $x++) { + if (preg_match('!\w!', $address[$x])) { + $address_encode .= '%' . bin2hex($address[$x]); + } else { + $address_encode .= $address[$x]; + } + } + $text_encode = ''; + for ($x = 0; $x < strlen($text); $x++) { + $text_encode .= '&#x' . bin2hex($text[$x]) . ';'; + } + + $mailto = "mailto:"; + return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>'; + } else { + // no encoding + return '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>'; + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/function.math.php b/3dparty/Smarty/plugins/function.math.php new file mode 100644 index 00000000000..552c297c70e --- /dev/null +++ b/3dparty/Smarty/plugins/function.math.php @@ -0,0 +1,83 @@ +<?php +/** + * Smarty plugin + * + * This plugin is only for Smarty2 BC + * @package Smarty + * @subpackage PluginsFunction + */ + +/** + * Smarty {math} function plugin + * + * Type: function<br> + * Name: math<br> + * Purpose: handle math computations in template<br> + * @link http://smarty.php.net/manual/en/language.function.math.php {math} + * (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @param array $params parameters + * @param object $template template object + * @return string|null + */ +function smarty_function_math($params, $template) +{ + // 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,")")) { + trigger_error("math: unbalanced parenthesis",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][a-zA-Z0-9_]*)!",$equation, $match); + $allowed_funcs = array('int','abs','ceil','cos','exp','floor','log','log10', + 'max','min','pi','pow','rand','round','sin','sqrt','srand','tan'); + + foreach($match[1] as $curr_var) { + if ($curr_var && !in_array($curr_var, array_keys($params)) && !in_array($curr_var, $allowed_funcs)) { + trigger_error("math: function call $curr_var not allowed",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; + } + $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; + } else { + $template->assign($params['assign'],$smarty_math_result); + } + } else { + if (empty($params['assign'])){ + printf($params['format'],$smarty_math_result); + } else { + $template->assign($params['assign'],sprintf($params['format'],$smarty_math_result)); + } + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifier.capitalize.php b/3dparty/Smarty/plugins/modifier.capitalize.php new file mode 100644 index 00000000000..7a0f4f1e09d --- /dev/null +++ b/3dparty/Smarty/plugins/modifier.capitalize.php @@ -0,0 +1,37 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifier + */ + +/** + * Smarty capitalize modifier plugin + * + * Type: modifier<br> + * Name: capitalize<br> + * Purpose: capitalize words in the string + * + * @link + * @author Monte Ohrt <monte at ohrt dot com> + * @param string $ + * @return string + */ +function smarty_modifier_capitalize($string, $uc_digits = false) +{ + // uppercase with php function ucwords + $upper_string = ucwords($string); + // check for any missed hyphenated words + $upper_string = preg_replace("!(^|[^\p{L}'])([\p{Ll}])!ue", "'\\1'.ucfirst('\\2')", $upper_string); + // check uc_digits case + if (!$uc_digits) { + if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!u", $string, $matches, PREG_OFFSET_CAPTURE)) { + foreach($matches[1] as $match) + $upper_string = substr_replace($upper_string, $match[0], $match[1], strlen($match[0])); + } + } + return $upper_string; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifier.date_format.php b/3dparty/Smarty/plugins/modifier.date_format.php new file mode 100644 index 00000000000..4d3dbd8e161 --- /dev/null +++ b/3dparty/Smarty/plugins/modifier.date_format.php @@ -0,0 +1,61 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifier + */ + +/** + * Smarty date_format modifier plugin + * + * Type: modifier<br> + * Name: date_format<br> + * Purpose: format datestamps via strftime<br> + * Input:<br> + * - string: input date string + * - format: strftime format for output + * - default_date: default date if $string is empty + * + * @link http://smarty.php.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @param string $ + * @param string $ + * @param string $ + * @return string |void + * @uses smarty_make_timestamp() + */ +function smarty_modifier_date_format($string, $format = SMARTY_RESOURCE_DATE_FORMAT, $default_date = '',$formatter='auto') +{ + /** + * Include the {@link shared.make_timestamp.php} plugin + */ + require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'); + if ($string != '') { + $timestamp = smarty_make_timestamp($string); + } 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 (strpos($format, '%e') !== false) { + $_win_from[] = '%e'; + $_win_to[] = sprintf('%\' 2d', date('j', $timestamp)); + } + if (strpos($format, '%l') !== false) { + $_win_from[] = '%l'; + $_win_to[] = sprintf('%\' 2d', date('h', $timestamp)); + } + $format = str_replace($_win_from, $_win_to, $format); + } + return strftime($format, $timestamp); + } else { + return date($format, $timestamp); + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifier.debug_print_var.php b/3dparty/Smarty/plugins/modifier.debug_print_var.php new file mode 100644 index 00000000000..026ff6aa1f4 --- /dev/null +++ b/3dparty/Smarty/plugins/modifier.debug_print_var.php @@ -0,0 +1,87 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage Debug + */ + +/** + * Smarty debug_print_var modifier plugin + * + * Type: modifier<br> + * Name: debug_print_var<br> + * Purpose: formats variable contents for display in the console + * + * @link http://smarty.php.net/manual/en/language.modifier.debug.print.var.php debug_print_var (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @param array $ |object + * @param integer $ + * @param integer $ + * @return string + */ +function smarty_modifier_debug_print_var ($var, $depth = 0, $length = 40) +{ + $_replace = array("\n" => '<i>\n</i>', + "\r" => '<i>\r</i>', + "\t" => '<i>\t</i>' + ); + + switch (gettype($var)) { + case 'array' : + $results = '<b>Array (' . count($var) . ')</b>'; + 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, ++$depth, $length); + $depth--; + } + break; + case 'object' : + $object_vars = get_object_vars($var); + $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>'; + 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, ++$depth, $length); + $depth--; + } + break; + case 'boolean' : + case 'NULL' : + case 'resource' : + if (true === $var) { + $results = 'true'; + } elseif (false === $var) { + $results = 'false'; + } elseif (null === $var) { + $results = 'null'; + } else { + $results = htmlspecialchars((string) $var); + } + $results = '<i>' . $results . '</i>'; + break; + case 'integer' : + case 'float' : + $results = htmlspecialchars((string) $var); + break; + case 'string' : + $results = strtr($var, $_replace); + if (strlen($var) > $length) { + $results = substr($var, 0, $length - 3) . '...'; + } + $results = htmlspecialchars('"' . $results . '"'); + break; + case 'unknown type' : + default : + $results = strtr((string) $var, $_replace); + if (strlen($results) > $length) { + $results = substr($results, 0, $length - 3) . '...'; + } + $results = htmlspecialchars($results); + } + + return $results; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifier.escape.php b/3dparty/Smarty/plugins/modifier.escape.php new file mode 100644 index 00000000000..a0c15beec56 --- /dev/null +++ b/3dparty/Smarty/plugins/modifier.escape.php @@ -0,0 +1,91 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifier + */ + +/** + * Smarty escape modifier plugin + * + * Type: modifier<br> + * Name: escape<br> + * Purpose: escape string for output + * + * @link http://smarty.php.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @param string $string input string + * @param string $esc_type escape type + * @param string $char_set character set + * @return string escaped input string + */ +function smarty_modifier_escape($string, $esc_type = 'html', $char_set = SMARTY_RESOURCE_CHAR_SET) +{ + switch ($esc_type) { + case 'html': + return htmlspecialchars($string, ENT_QUOTES, $char_set); + + case 'htmlall': + return htmlentities($string, ENT_QUOTES, $char_set); + + 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 character into hex + $return = ''; + for ($x = 0; $x < strlen($string); $x++) { + $return .= '%' . bin2hex($string[$x]); + } + return $return; + + case 'hexentity': + $return = ''; + for ($x = 0; $x < strlen($string); $x++) { + $return .= '&#x' . bin2hex($string[$x]) . ';'; + } + return $return; + + case 'decentity': + $return = ''; + for ($x = 0; $x < strlen($string); $x++) { + $return .= '&#' . ord($string[$x]) . ';'; + } + return $return; + + case 'javascript': + // escape quotes and backslashes, newlines, etc. + return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n', '</' => '<\/')); + + case 'mail': + require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'); + return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string); + + case 'nonstd': + // escape non-standard chars, such as ms document quotes + $_res = ''; + for($_i = 0, $_len = strlen($string); $_i < $_len; $_i++) { + $_ord = ord(substr($string, $_i, 1)); + // non-standard char, escape it + if ($_ord >= 126) { + $_res .= '&#' . $_ord . ';'; + } else { + $_res .= substr($string, $_i, 1); + } + } + return $_res; + + default: + return $string; + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifier.regex_replace.php b/3dparty/Smarty/plugins/modifier.regex_replace.php new file mode 100644 index 00000000000..d495594752a --- /dev/null +++ b/3dparty/Smarty/plugins/modifier.regex_replace.php @@ -0,0 +1,46 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifier + */ + +/** + * Smarty regex_replace modifier plugin + * + * Type: modifier<br> + * Name: regex_replace<br> + * Purpose: regular expression search/replace + * @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> + * @param string + * @param string|array + * @param string|array + * @return string + */ +function smarty_modifier_regex_replace($string, $search, $replace) +{ + if(is_array($search)) { + foreach($search as $idx => $s) + $search[$idx] = _smarty_regex_replace_check($s); + } else { + $search = _smarty_regex_replace_check($search); + } + + return preg_replace($search, $replace, $string); +} + +function _smarty_regex_replace_check($search) +{ + if (($pos = strpos($search,"\0")) !== false) + $search = substr($search,0,$pos); + if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) { + /* remove eval-modifier from $search */ + $search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]); + } + return $search; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifier.replace.php b/3dparty/Smarty/plugins/modifier.replace.php new file mode 100644 index 00000000000..f922889250c --- /dev/null +++ b/3dparty/Smarty/plugins/modifier.replace.php @@ -0,0 +1,29 @@ +<?php +/** + * Smarty plugin + * @package Smarty + * @subpackage PluginsModifier + */ + +/** + * Smarty replace modifier plugin + * + * Type: modifier<br> + * Name: replace<br> + * Purpose: simple search/replace + * + * @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @author Uwe Tews + * @param string $ + * @param string $ + * @param string $ + * @return string + */ +function smarty_modifier_replace($string, $search, $replace) +{ + require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'); + return smarty_mb_str_replace($search, $replace, $string); +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifier.spacify.php b/3dparty/Smarty/plugins/modifier.spacify.php new file mode 100644 index 00000000000..2b4685b2acb --- /dev/null +++ b/3dparty/Smarty/plugins/modifier.spacify.php @@ -0,0 +1,37 @@ +<?php +/** + * Smarty plugin + * @package Smarty + * @subpackage PluginsModifier + */ + +/** + * Smarty spacify modifier plugin + * + * Type: modifier<br> + * Name: spacify<br> + * Purpose: add spaces between characters in a string + * + * @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @param string $ + * @param string $ + * @return string + */ +function smarty_modifier_spacify($string, $spacify_char = ' ') +{ + // mb_ functions available? + if (function_exists('mb_strlen') && mb_detect_encoding($string, 'UTF-8, ISO-8859-1') === 'UTF-8') { + $strlen = mb_strlen($string); + while ($strlen) { + $array[] = mb_substr($string, 0, 1, "UTF-8"); + $string = mb_substr($string, 1, $strlen, "UTF-8"); + $strlen = mb_strlen($string); + } + return implode($spacify_char, $array); + } else { + return implode($spacify_char, preg_split('//', $string, -1)); + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifier.truncate.php b/3dparty/Smarty/plugins/modifier.truncate.php new file mode 100644 index 00000000000..112cc19de0e --- /dev/null +++ b/3dparty/Smarty/plugins/modifier.truncate.php @@ -0,0 +1,67 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifier + */ + +/** + * Smarty truncate modifier plugin + * + * Type: modifier<br> + * Name: truncate<br> + * 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. + * + * @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @param string $string input string + * @param integer $length lenght of truncated text + * @param string $etc end string + * @param boolean $break_words truncate at word boundary + * @param boolean $middle truncate in the middle of text + * @return string truncated string + */ +function smarty_modifier_truncate($string, $length = 80, $etc = '...', + $break_words = false, $middle = false) +{ + if ($length == 0) + return ''; + + if (is_callable('mb_strlen')) { + if (mb_detect_encoding($string, 'UTF-8, ISO-8859-1') === 'UTF-8') { + // $string has utf-8 encoding + if (mb_strlen($string) > $length) { + $length -= min($length, mb_strlen($etc)); + if (!$break_words && !$middle) { + $string = preg_replace('/\s+?(\S+)?$/u', '', mb_substr($string, 0, $length + 1)); + } + if (!$middle) { + return mb_substr($string, 0, $length) . $etc; + } else { + return mb_substr($string, 0, $length / 2) . $etc . mb_substr($string, - $length / 2); + } + } else { + return $string; + } + } + } + // $string has no utf-8 encoding + if (strlen($string) > $length) { + $length -= min($length, strlen($etc)); + if (!$break_words && !$middle) { + $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1)); + } + if (!$middle) { + return substr($string, 0, $length) . $etc; + } else { + return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2); + } + } else { + return $string; + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.cat.php b/3dparty/Smarty/plugins/modifiercompiler.cat.php new file mode 100644 index 00000000000..6937222676d --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.cat.php @@ -0,0 +1,29 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty cat modifier plugin + * + * Type: modifier<br> + * Name: cat<br> + * 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 + * (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ +function smarty_modifiercompiler_cat($params, $compiler) +{ + return '('.implode(').(', $params).')'; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.count_characters.php b/3dparty/Smarty/plugins/modifiercompiler.count_characters.php new file mode 100644 index 00000000000..da2b6d22213 --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.count_characters.php @@ -0,0 +1,39 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty count_characters modifier plugin + * + * Type: modifier<br> + * Name: count_characteres<br> + * Purpose: count the number of characters in a text + * + * @link http://smarty.php.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ +function smarty_modifiercompiler_count_characters($params, $compiler) +{ + // mb_ functions available? + if (function_exists('mb_strlen')) { + // count also spaces? + if (isset($params[1]) && $params[1] == 'true') { + return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? mb_strlen(' . $params[0] . ', SMARTY_RESOURCE_CHAR_SET) : strlen(' . $params[0] . '))'; + } + return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? preg_match_all(\'#[^\s\pZ]#u\', ' . $params[0] . ', $tmp) : preg_match_all(\'/[^\s]/\',' . $params[0] . ', $tmp))'; + } else { + // count also spaces? + if (isset($params[1]) && $params[1] == 'true') { + return 'strlen(' . $params[0] . ')'; + } + return 'preg_match_all(\'/[^\s]/\',' . $params[0] . ', $tmp)'; + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.count_paragraphs.php b/3dparty/Smarty/plugins/modifiercompiler.count_paragraphs.php new file mode 100644 index 00000000000..6af74236feb --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.count_paragraphs.php @@ -0,0 +1,27 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty count_paragraphs modifier plugin + * + * Type: modifier<br> + * Name: count_paragraphs<br> + * Purpose: count the number of paragraphs in a text + * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php + * count_paragraphs (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ +function smarty_modifiercompiler_count_paragraphs($params, $compiler) +{ + // count \r or \n characters + return '(preg_match_all(\'#[\r\n]+#\', ' . $params[0] . ', $tmp)+1)'; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.count_sentences.php b/3dparty/Smarty/plugins/modifiercompiler.count_sentences.php new file mode 100644 index 00000000000..2767d9fb3a4 --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.count_sentences.php @@ -0,0 +1,27 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty count_sentences modifier plugin + * + * Type: modifier<br> + * Name: count_sentences + * Purpose: count the number of sentences in a text + * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php + * count_sentences (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ +function smarty_modifiercompiler_count_sentences($params, $compiler) +{ + // find periods with a word before but not after. + return 'preg_match_all(\'/[^\s]\.(?!\w)/\', ' . $params[0] . ', $tmp)'; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.count_words.php b/3dparty/Smarty/plugins/modifiercompiler.count_words.php new file mode 100644 index 00000000000..f9e54107123 --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.count_words.php @@ -0,0 +1,31 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty count_words modifier plugin + * + * Type: modifier<br> + * Name: count_words<br> + * Purpose: count the number of words in a text + * + * @link http://smarty.php.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code +*/ +function smarty_modifiercompiler_count_words($params, $compiler) +{ + // mb_ functions available? + if (function_exists('mb_strlen')) { + return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? preg_match_all(\'#[\w\pL]+#u\', ' . $params[0] . ', $tmp) : preg_match_all(\'#\w+#\',' . $params[0] . ', $tmp))'; + } else { + return 'str_word_count(' . $params[0] . ')'; + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.default.php b/3dparty/Smarty/plugins/modifiercompiler.default.php new file mode 100644 index 00000000000..736bf458cd9 --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.default.php @@ -0,0 +1,33 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty default modifier plugin + * + * Type: modifier<br> + * Name: default<br> + * Purpose: designate default value for empty variables + * + * @link http://smarty.php.net/manual/en/language.modifier.default.php default (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ +function smarty_modifiercompiler_default ($params, $compiler) +{ + $output = $params[0]; + if (!isset($params[1])) { + $params[1] = "''"; + } + for ($i = 1, $cnt = count($params); $i < $cnt; $i++) { + $output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $params[$i] . ' : $tmp)'; + } + return $output; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.indent.php b/3dparty/Smarty/plugins/modifiercompiler.indent.php new file mode 100644 index 00000000000..bfea4c6fba2 --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.indent.php @@ -0,0 +1,32 @@ +<?php +/** + * Smarty plugin + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty indent modifier plugin + * + * Type: modifier<br> + * Name: indent<br> + * Purpose: indent lines of text + * @link http://smarty.php.net/manual/en/language.modifier.indent.php + * indent (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ + +function smarty_modifiercompiler_indent($params, $compiler) +{ + if (!isset($params[1])) { + $params[1] = 4; + } + if (!isset($params[2])) { + $params[2] = "' '"; + } + return 'preg_replace(\'!^!m\',str_repeat(' . $params[2] . ',' . $params[1] . '),' . $params[0] . ')'; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.lower.php b/3dparty/Smarty/plugins/modifiercompiler.lower.php new file mode 100644 index 00000000000..8a893b68f89 --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.lower.php @@ -0,0 +1,31 @@ +<?php +/** + * Smarty plugin + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty lower modifier plugin + * + * Type: modifier<br> + * Name: lower<br> + * Purpose: convert string to lowercase + * + * @link http://smarty.php.net/manual/en/language.modifier.lower.php lower (Smarty online manual) + * @author Monte Ohrt <monte at ohrt dot com> + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ + +function smarty_modifiercompiler_lower($params, $compiler) +{ + if (function_exists('mb_strtolower')) { + return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? mb_strtolower(' . $params[0] . ',SMARTY_RESOURCE_CHAR_SET) : strtolower(' . $params[0] . '))' ; + } else { + return 'strtolower(' . $params[0] . ')'; + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.noprint.php b/3dparty/Smarty/plugins/modifiercompiler.noprint.php new file mode 100644 index 00000000000..5fac7b6ccaf --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.noprint.php @@ -0,0 +1,24 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty noprint modifier plugin + * + * Type: modifier<br> + * Name: noprint<br> + * Purpose: return an empty string + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ +function smarty_modifiercompiler_noprint($params, $compiler) +{ + return "''"; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.string_format.php b/3dparty/Smarty/plugins/modifiercompiler.string_format.php new file mode 100644 index 00000000000..e74bcce5542 --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.string_format.php @@ -0,0 +1,26 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty string_format modifier plugin + * + * Type: modifier<br> + * Name: string_format<br> + * Purpose: format strings via sprintf + * + * @link http://smarty.php.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ +function smarty_modifiercompiler_string_format($params, $compiler) +{ + return 'sprintf(' . $params[1] . ',' . $params[0] . ')'; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.strip.php b/3dparty/Smarty/plugins/modifiercompiler.strip.php new file mode 100644 index 00000000000..52d2bec085b --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.strip.php @@ -0,0 +1,33 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty strip modifier plugin + * + * Type: modifier<br> + * Name: strip<br> + * Purpose: Replace all repeated spaces, newlines, tabs + * with a single space or supplied replacement string.<br> + * Example: {$var|strip} {$var|strip:" "} + * Date: September 25th, 2002 + * + * @link http://smarty.php.net/manual/en/language.modifier.strip.php strip (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ + +function smarty_modifiercompiler_strip($params, $compiler) +{ + if (!isset($params[1])) { + $params[1] = "' '"; + } + return "preg_replace('!\s+!', {$params[1]},{$params[0]})"; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.strip_tags.php b/3dparty/Smarty/plugins/modifiercompiler.strip_tags.php new file mode 100644 index 00000000000..1b3d889dafe --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.strip_tags.php @@ -0,0 +1,34 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty strip_tags modifier plugin + * + * Type: modifier<br> + * Name: strip_tags<br> + * Purpose: strip html tags from text + * + * @link http://smarty.php.net/manual/en/language.modifier.strip.tags.php strip_tags (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ + +function smarty_modifiercompiler_strip_tags($params, $compiler) +{ + if (!isset($params[1])) { + $params[1] = true; + } + if ($params[1] === true) { + return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})"; + } else { + return 'strip_tags(' . $params[0] . ')'; + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.upper.php b/3dparty/Smarty/plugins/modifiercompiler.upper.php new file mode 100644 index 00000000000..1669d4a8fba --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.upper.php @@ -0,0 +1,30 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty upper modifier plugin + * + * Type: modifier<br> + * Name: lower<br> + * Purpose: convert string to uppercase + * + * @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual) + * @author Uwe Tews + * @param array $params parameters + * @return string with compiled code + */ +function smarty_modifiercompiler_upper($params, $compiler) +{ + if (function_exists('mb_strtoupper')) { + return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? mb_strtoupper(' . $params[0] . ',SMARTY_RESOURCE_CHAR_SET) : strtoupper(' . $params[0] . '))' ; + } else { + return 'strtoupper(' . $params[0] . ')'; + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/modifiercompiler.wordwrap.php b/3dparty/Smarty/plugins/modifiercompiler.wordwrap.php new file mode 100644 index 00000000000..6581d3d3183 --- /dev/null +++ b/3dparty/Smarty/plugins/modifiercompiler.wordwrap.php @@ -0,0 +1,35 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty wordwrap modifier plugin + * + * Type: modifier<br> + * Name: wordwrap<br> + * 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 + * @return string with compiled code + */ +function smarty_modifiercompiler_wordwrap($params, $compiler) +{ + if (!isset($params[1])) { + $params[1] = 80; + } + if (!isset($params[2])) { + $params[2] = '"\n"'; + } + if (!isset($params[3])) { + $params[3] = 'false'; + } + return 'wordwrap(' . $params[0] . ',' . $params[1] . ',' . $params[2] . ',' . $params[3] . ')'; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/outputfilter.trimwhitespace.php b/3dparty/Smarty/plugins/outputfilter.trimwhitespace.php new file mode 100644 index 00000000000..b9ec6cec752 --- /dev/null +++ b/3dparty/Smarty/plugins/outputfilter.trimwhitespace.php @@ -0,0 +1,77 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsFilter + */ + +/** + * Smarty trimwhitespace outputfilter plugin + * + * File: outputfilter.trimwhitespace.php<br> + * Type: outputfilter<br> + * Name: trimwhitespace<br> + * Date: Jan 25, 2003<br> + * Purpose: trim leading white space and blank lines from + * template source after it gets interpreted, cleaning + * up code and saving bandwidth. Does not affect + * <<PRE>></PRE> and <SCRIPT></SCRIPT> blocks.<br> + * Install: Drop into the plugin directory, call + * <code>$smarty->load_filter('output','trimwhitespace');</code> + * from application. + * @author Monte Ohrt <monte at ohrt dot com> + * @author Contributions from Lars Noschinski <lars@usenet.noschinski.de> + * @version 1.3 + * @param string $source input string + * @param object &$smarty Smarty object + * @return string filtered output + */ +function smarty_outputfilter_trimwhitespace($source, $smarty) +{ + // Pull out the script blocks + preg_match_all("!<script[^>]*?>.*?</script>!is", $source, $match); + $_script_blocks = $match[0]; + $source = preg_replace("!<script[^>]*?>.*?</script>!is", + '@@@SMARTY:TRIM:SCRIPT@@@', $source); + + // Pull out the pre blocks + preg_match_all("!<pre[^>]*?>.*?</pre>!is", $source, $match); + $_pre_blocks = $match[0]; + $source = preg_replace("!<pre[^>]*?>.*?</pre>!is", + '@@@SMARTY:TRIM:PRE@@@', $source); + + // Pull out the textarea blocks + preg_match_all("!<textarea[^>]*?>.*?</textarea>!is", $source, $match); + $_textarea_blocks = $match[0]; + $source = preg_replace("!<textarea[^>]*?>.*?</textarea>!is", + '@@@SMARTY:TRIM:TEXTAREA@@@', $source); + + // remove all leading spaces, tabs and carriage returns NOT + // preceeded by a php close tag. + $source = trim(preg_replace('/((?<!\?>)\n)[\s]+/m', '\1', $source)); + + // replace textarea blocks + smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:TEXTAREA@@@",$_textarea_blocks, $source); + + // replace pre blocks + smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:PRE@@@",$_pre_blocks, $source); + + // replace script blocks + smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:SCRIPT@@@",$_script_blocks, $source); + + return $source; +} + +function smarty_outputfilter_trimwhitespace_replace($search_str, $replace, &$subject) { + $_len = strlen($search_str); + $_pos = 0; + for ($_i=0, $_count=count($replace); $_i<$_count; $_i++) + if (($_pos=strpos($subject, $search_str, $_pos))!==false) + $subject = substr_replace($subject, $replace[$_i], $_pos, $_len); + else + break; + +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/shared.escape_special_chars.php b/3dparty/Smarty/plugins/shared.escape_special_chars.php new file mode 100644 index 00000000000..e36b2c897c1 --- /dev/null +++ b/3dparty/Smarty/plugins/shared.escape_special_chars.php @@ -0,0 +1,29 @@ +<?php +/** + * Smarty shared plugin + * + * @package Smarty + * @subpackage PluginsShared + */ + +/** + * escape_special_chars common function + * + * Function: smarty_function_escape_special_chars<br> + * Purpose: used by other smarty functions to escape + * special chars except for already escaped ones + * @author Monte Ohrt <monte at ohrt dot com> + * @param string + * @return string + */ +function smarty_function_escape_special_chars($string) +{ + if(!is_array($string)) { + $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); + $string = htmlspecialchars($string); + $string = str_replace(array('%%%SMARTY_START%%%','%%%SMARTY_END%%%'), array('&',';'), $string); + } + return $string; +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/shared.make_timestamp.php b/3dparty/Smarty/plugins/shared.make_timestamp.php new file mode 100644 index 00000000000..28638ca01ff --- /dev/null +++ b/3dparty/Smarty/plugins/shared.make_timestamp.php @@ -0,0 +1,43 @@ +<?php +/** + * Smarty shared plugin + * + * @package Smarty + * @subpackage PluginsShared + */ + +/** + * Function: smarty_make_timestamp<br> + * Purpose: used by other smarty functions to make a timestamp + * from a string. + * @author Monte Ohrt <monte at ohrt dot com> + * @param string $string + * @return string + */ + +function smarty_make_timestamp($string) +{ + if(empty($string)) { + // use "now": + return time(); + } elseif ($string instanceof DateTime) { + return $string->getTimestamp(); + } 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)); + } elseif (is_numeric($string)) { + // it is a numeric string, we handle it as timestamp + return (int)$string; + } else { + // strtotime should handle it + $time = strtotime($string); + if ($time == -1 || $time === false) { + // strtotime() was not able to parse $string, use "now": + return time(); + } + return $time; + } +} + +?> diff --git a/3dparty/Smarty/plugins/shared.mb_str_replace.php b/3dparty/Smarty/plugins/shared.mb_str_replace.php new file mode 100644 index 00000000000..8e9482731e9 --- /dev/null +++ b/3dparty/Smarty/plugins/shared.mb_str_replace.php @@ -0,0 +1,38 @@ +<?php + +if(!function_exists('smarty_mb_str_replace')) { + function smarty_mb_str_replace($search, $replace, $subject, &$count=0) { + if (!is_array($search) && is_array($replace)) { + return false; + } + if (is_array($subject)) { + // call mb_replace for each single string in $subject + foreach ($subject as &$string) { + $string = &smarty_mb_str_replace($search, $replace, $string, $c); + $count += $c; + } + } elseif (is_array($search)) { + if (!is_array($replace)) { + foreach ($search as &$string) { + $subject = smarty_mb_str_replace($string, $replace, $subject, $c); + $count += $c; + } + } else { + $n = max(count($search), count($replace)); + while ($n--) { + $subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c); + $count += $c; + next($search); + next($replace); + } + } + } else { + $parts = mb_split(preg_quote($search), $subject); + $count = count($parts)-1; + $subject = implode($replace, $parts); + } + return $subject; + } +} + +?>
\ No newline at end of file diff --git a/3dparty/Smarty/plugins/variablefilter.htmlspecialchars.php b/3dparty/Smarty/plugins/variablefilter.htmlspecialchars.php new file mode 100644 index 00000000000..66f8267775d --- /dev/null +++ b/3dparty/Smarty/plugins/variablefilter.htmlspecialchars.php @@ -0,0 +1,22 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsFilter + */ + +/** + * Smarty htmlspecialchars variablefilter plugin + * + * @param string $source input string + * @param object $ &$smarty Smarty object + * @return string filtered output + */ + +function smarty_variablefilter_htmlspecialchars($source, $smarty) +{ + return htmlspecialchars($source, ENT_QUOTES); +} + +?>
\ No newline at end of file |