diff options
Diffstat (limited to 'library/Smarty/libs/plugins')
47 files changed, 0 insertions, 4251 deletions
diff --git a/library/Smarty/libs/plugins/block.textformat.php b/library/Smarty/libs/plugins/block.textformat.php deleted file mode 100644 index abf544939..000000000 --- a/library/Smarty/libs/plugins/block.textformat.php +++ /dev/null @@ -1,110 +0,0 @@ -<?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> - * Params: - * <pre> - * - style - string (email) - * - indent - integer (0) - * - wrap - integer (80) - * - wrap_char - string ("\n") - * - indent_char - string (" ") - * - wrap_boundary - boolean (true) - * </pre> - * - * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat} - * (Smarty online manual) - * - * @param array $params parameters - * @param string $content contents of the block - * @param Smarty_Internal_Template $template template object - * @param boolean &$repeat repeat flag - * - * @return string content re-formatted - * @author Monte Ohrt <monte at ohrt dot com> - */ -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]{2}!', $content); - - foreach ($_paragraphs as &$_paragraph) { - if (!$_paragraph) { - continue; - } - // convert mult. spaces & special chars to single space - $_paragraph = preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER), array(' ', ''), $_paragraph); - // indent first line - if ($indent_first > 0) { - $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph; - } - // wordwrap sentences - if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php'); - $_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); - } else { - $_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); - } - // indent lines - if ($indent > 0) { - $_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph); - } - } - $_output = implode($wrap_char . $wrap_char, $_paragraphs); - - if ($assign) { - $template->assign($assign, $_output); - } else { - return $_output; - } -} diff --git a/library/Smarty/libs/plugins/function.counter.php b/library/Smarty/libs/plugins/function.counter.php deleted file mode 100644 index 4da85a14e..000000000 --- a/library/Smarty/libs/plugins/function.counter.php +++ /dev/null @@ -1,78 +0,0 @@ -<?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://www.smarty.net/manual/en/language.function.counter.php {counter} - * (Smarty online manual) - * - * @param array $params parameters - * @param Smarty_Internal_Template $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; -} diff --git a/library/Smarty/libs/plugins/function.cycle.php b/library/Smarty/libs/plugins/function.cycle.php deleted file mode 100644 index 8dc5cd9d5..000000000 --- a/library/Smarty/libs/plugins/function.cycle.php +++ /dev/null @@ -1,107 +0,0 @@ -<?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> - * Params: - * <pre> - * - name - name of cycle (optional) - * - values - comma separated list of values to cycle, or an array of values to cycle - * (this can be left out for subsequent calls) - * - 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. - * </pre> - * Examples:<br> - * <pre> - * {cycle values="#eeeeee,#d0d0d0d"} - * {cycle name=row values="one,two,three" reset=true} - * {cycle name=row} - * </pre> - * - * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle} - * (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 $params parameters - * @param Smarty_Internal_Template $template template object - * - * @return string|null - */ - -function smarty_function_cycle($params, $template) -{ - static $cycle_vars; - - $name = (empty($params['name'])) ? 'default' : $params['name']; - $print = (isset($params['print'])) ? (bool) $params['print'] : true; - $advance = (isset($params['advance'])) ? (bool) $params['advance'] : true; - $reset = (isset($params['reset'])) ? (bool) $params['reset'] : false; - - if (!isset($params['values'])) { - 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; -} diff --git a/library/Smarty/libs/plugins/function.fetch.php b/library/Smarty/libs/plugins/function.fetch.php deleted file mode 100644 index 3506d4a8d..000000000 --- a/library/Smarty/libs/plugins/function.fetch.php +++ /dev/null @@ -1,221 +0,0 @@ -<?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://www.smarty.net/manual/en/language.function.fetch.php {fetch} - * (Smarty online manual) - * @author Monte Ohrt <monte at ohrt dot com> - * - * @param array $params parameters - * @param Smarty_Internal_Template $template template object - * - * @throws SmartyException - * @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; - } - - // strip file protocol - if (stripos($params['file'], 'file://') === 0) { - $params['file'] = substr($params['file'], 7); - } - - $protocol = strpos($params['file'], '://'); - if ($protocol !== false) { - $protocol = strtolower(substr($params['file'], 0, $protocol)); - } - - if (isset($template->smarty->security_policy)) { - if ($protocol) { - // remote resource (or php stream, …) - if (!$template->smarty->security_policy->isTrustedUri($params['file'])) { - return; - } - } else { - // local file - if (!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) { - return; - } - } - } - - $content = ''; - if ($protocol == 'http') { - // http fetch - if ($uri_parts = parse_url($params['file'])) { - // set defaults - $host = $server_name = $uri_parts['host']; - $timeout = 30; - $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"; - $agent = "Smarty Template Engine " . Smarty::SMARTY_VERSION; - $referer = ""; - $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 { - $content = @file_get_contents($params['file']); - if ($content === false) { - throw new SmartyException("{fetch} cannot read resource '" . $params['file'] . "'"); - } - } - - if (!empty($params['assign'])) { - $template->assign($params['assign'], $content); - } else { - return $content; - } -} diff --git a/library/Smarty/libs/plugins/function.html_checkboxes.php b/library/Smarty/libs/plugins/function.html_checkboxes.php deleted file mode 100644 index d78680368..000000000 --- a/library/Smarty/libs/plugins/function.html_checkboxes.php +++ /dev/null @@ -1,237 +0,0 @@ -<?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> - * Params: - * <pre> - * - name (optional) - string default "checkbox" - * - values (required) - array - * - options (optional) - associative array - * - checked (optional) - array default not set - * - separator (optional) - ie <br> or - * - output (optional) - the output next to each checkbox - * - assign (optional) - assign the output as an array to this variable - * - escape (optional) - escape the content (not value), defaults to true - * </pre> - * - * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} - * (Smarty online manual) - * @author Christopher Kvarme <christopher.kvarme@flashjab.com> - * @author credits to Monte Ohrt <monte at ohrt dot com> - * @version 1.0 - * - * @param array $params parameters - * @param 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 = array(); - $separator = ''; - $escape = true; - $labels = true; - $label_ids = false; - $output = null; - - $extra = ''; - - foreach ($params as $_key => $_val) { - switch ($_key) { - case 'name': - case 'separator': - $$_key = (string) $_val; - break; - - case 'escape': - case 'labels': - case 'label_ids': - $$_key = (bool) $_val; - break; - - case 'options': - $$_key = (array) $_val; - break; - - case 'values': - case 'output': - $$_key = array_values((array) $_val); - break; - - case 'checked': - case 'selected': - if (is_array($_val)) { - $selected = array(); - foreach ($_val as $_sel) { - if (is_object($_sel)) { - if (method_exists($_sel, "__toString")) { - $_sel = smarty_function_escape_special_chars((string) $_sel->__toString()); - } else { - trigger_error("html_checkboxes: selected attribute contains an object of class '" . get_class($_sel) . "' without __toString() method", E_USER_NOTICE); - continue; - } - } else { - $_sel = smarty_function_escape_special_chars((string) $_sel); - } - $selected[$_sel] = true; - } - } elseif (is_object($_val)) { - if (method_exists($_val, "__toString")) { - $selected = smarty_function_escape_special_chars((string) $_val->__toString()); - } else { - trigger_error("html_checkboxes: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE); - } - } else { - $selected = smarty_function_escape_special_chars((string) $_val); - } - break; - - case 'checkboxes': - trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING); - $options = (array) $_val; - break; - - case 'assign': - break; - - case 'strict': - break; - - case 'disabled': - case 'readonly': - if (!empty($params['strict'])) { - if (!is_scalar($_val)) { - trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE); - } - - if ($_val === true || $_val === $_key) { - $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"'; - } - - break; - } - // omit break; to fall through! - - 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? */ - - $_html_result = array(); - - if (isset($options)) { - foreach ($options as $_key => $_val) { - $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape); - } - } else { - foreach ($values as $_i => $_key) { - $_val = isset($output[$_i]) ? $output[$_i] : ''; - $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape); - } - } - - if (!empty($params['assign'])) { - $template->assign($params['assign'], $_html_result); - } else { - return implode("\n", $_html_result); - } -} - -function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape = true) -{ - $_output = ''; - - if (is_object($value)) { - if (method_exists($value, "__toString")) { - $value = (string) $value->__toString(); - } else { - trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE); - - return ''; - } - } else { - $value = (string) $value; - } - - if (is_object($output)) { - if (method_exists($output, "__toString")) { - $output = (string) $output->__toString(); - } else { - trigger_error("html_options: output is an object of class '" . get_class($output) . "' without __toString() method", E_USER_NOTICE); - - return ''; - } - } else { - $output = (string) $output; - } - - if ($labels) { - if ($label_ids) { - $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value)); - $_output .= '<label for="' . $_id . '">'; - } else { - $_output .= '<label>'; - } - } - - $name = smarty_function_escape_special_chars($name); - $value = smarty_function_escape_special_chars($value); - if ($escape) { - $output = smarty_function_escape_special_chars($output); - } - - $_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"'; - - if ($labels && $label_ids) { - $_output .= ' id="' . $_id . '"'; - } - - if (is_array($selected)) { - if (isset($selected[$value])) { - $_output .= ' checked="checked"'; - } - } elseif ($value === $selected) { - $_output .= ' checked="checked"'; - } - - $_output .= $extra . ' />' . $output; - if ($labels) { - $_output .= '</label>'; - } - - $_output .= $separator; - - return $_output; -} diff --git a/library/Smarty/libs/plugins/function.html_image.php b/library/Smarty/libs/plugins/function.html_image.php deleted file mode 100644 index 5037e8bd1..000000000 --- a/library/Smarty/libs/plugins/function.html_image.php +++ /dev/null @@ -1,163 +0,0 @@ -<?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"}<br> - * Output: <img src="/images/masthead.gif" width=400 height=23><br> - * Params: - * <pre> - * - file - (required) - file (and path) of image - * - height - (optional) - image height (default actual height) - * - width - (optional) - image width (default actual width) - * - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT - * - path_prefix - prefix for path output (optional, default empty) - * </pre> - * - * @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image} - * (Smarty online manual) - * @author Monte Ohrt <monte at ohrt dot com> - * @author credits to Duda <duda@big.hu> - * @version 1.0 - * - * @param array $params parameters - * @param Smarty_Internal_Template $template template object - * - * @throws SmartyException - * @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 = ''; - $basedir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['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 ($file[0] == '/') { - $_image_path = $basedir . $file; - } else { - $_image_path = $file; - } - - // strip file protocol - if (stripos($params['file'], 'file://') === 0) { - $params['file'] = substr($params['file'], 7); - } - - $protocol = strpos($params['file'], '://'); - if ($protocol !== false) { - $protocol = strtolower(substr($params['file'], 0, $protocol)); - } - - if (isset($template->smarty->security_policy)) { - if ($protocol) { - // remote resource (or php stream, …) - if (!$template->smarty->security_policy->isTrustedUri($params['file'])) { - return; - } - } else { - // local file - if (!$template->smarty->security_policy->isTrustedResourceDir($_image_path)) { - return; - } - } - } - - if (!isset($params['width']) || !isset($params['height'])) { - // FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader! - if (!$_image_data = @getimagesize($_image_path)) { - if (!file_exists($_image_path)) { - trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE); - - return; - } elseif (!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($params['width'])) { - $width = $_image_data[0]; - } - if (!isset($params['height'])) { - $height = $_image_data[1]; - } - } - - if (isset($params['dpi'])) { - if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mac')) { - // FIXME: (rodneyrehm) wrong dpi assumption - // don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011. - $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; -} diff --git a/library/Smarty/libs/plugins/function.html_options.php b/library/Smarty/libs/plugins/function.html_options.php deleted file mode 100644 index 7ec3e065c..000000000 --- a/library/Smarty/libs/plugins/function.html_options.php +++ /dev/null @@ -1,196 +0,0 @@ -<?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<br> - * Params: - * <pre> - * - 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 - * - id (optional) - string default not set - * - class (optional) - string default not set - * </pre> - * - * @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image} - * (Smarty online manual) - * @author Monte Ohrt <monte at ohrt dot com> - * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de> - * - * @param array $params parameters - * - * @return string - * @uses smarty_function_escape_special_chars() - */ -function smarty_function_html_options($params) -{ - require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); - - $name = null; - $values = null; - $options = null; - $selected = null; - $output = null; - $id = null; - $class = null; - - $extra = ''; - - foreach ($params as $_key => $_val) { - switch ($_key) { - case 'name': - case 'class': - case 'id': - $$_key = (string) $_val; - break; - - case 'options': - $options = (array) $_val; - break; - - case 'values': - case 'output': - $$_key = array_values((array) $_val); - break; - - case 'selected': - if (is_array($_val)) { - $selected = array(); - foreach ($_val as $_sel) { - if (is_object($_sel)) { - if (method_exists($_sel, "__toString")) { - $_sel = smarty_function_escape_special_chars((string) $_sel->__toString()); - } else { - trigger_error("html_options: selected attribute contains an object of class '" . get_class($_sel) . "' without __toString() method", E_USER_NOTICE); - continue; - } - } else { - $_sel = smarty_function_escape_special_chars((string) $_sel); - } - $selected[$_sel] = true; - } - } elseif (is_object($_val)) { - if (method_exists($_val, "__toString")) { - $selected = smarty_function_escape_special_chars((string) $_val->__toString()); - } else { - trigger_error("html_options: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE); - } - } else { - $selected = smarty_function_escape_special_chars((string) $_val); - } - break; - - case 'strict': - break; - - case 'disabled': - case 'readonly': - if (!empty($params['strict'])) { - if (!is_scalar($_val)) { - trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE); - } - - if ($_val === true || $_val === $_key) { - $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"'; - } - - break; - } - // omit break; to fall through! - - 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)) { - /* raise error here? */ - - return ''; - } - - $_html_result = ''; - $_idx = 0; - - if (isset($options)) { - foreach ($options as $_key => $_val) { - $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx); - } - } 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)) { - $_key = smarty_function_escape_special_chars($key); - $_html_result = '<option value="' . $_key . '"'; - if (is_array($selected)) { - if (isset($selected[$_key])) { - $_html_result .= ' selected="selected"'; - } - } elseif ($_key === $selected) { - $_html_result .= ' selected="selected"'; - } - $_html_class = !empty($class) ? ' class="' . $class . ' option"' : ''; - $_html_id = !empty($id) ? ' id="' . $id . '-' . $idx . '"' : ''; - if (is_object($value)) { - if (method_exists($value, "__toString")) { - $value = smarty_function_escape_special_chars((string) $value->__toString()); - } else { - trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE); - - return ''; - } - } else { - $value = smarty_function_escape_special_chars((string) $value); - } - $_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n"; - $idx ++; - } else { - $_idx = 0; - $_html_result = smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id . '-' . $idx) : null, $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; -} diff --git a/library/Smarty/libs/plugins/function.html_radios.php b/library/Smarty/libs/plugins/function.html_radios.php deleted file mode 100644 index f121d5eae..000000000 --- a/library/Smarty/libs/plugins/function.html_radios.php +++ /dev/null @@ -1,221 +0,0 @@ -<?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> - * Params: - * <pre> - * - name (optional) - string default "radio" - * - values (required) - array - * - options (required) - 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 - * - escape (optional) - escape the content (not value), defaults to true - * </pre> - * Examples: - * <pre> - * {html_radios values=$ids output=$names} - * {html_radios values=$ids name='box' separator='<br>' output=$names} - * {html_radios values=$ids checked=$checked separator='<br>' output=$names} - * </pre> - * - * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios} - * (Smarty online manual) - * @author Christopher Kvarme <christopher.kvarme@flashjab.com> - * @author credits to Monte Ohrt <monte at ohrt dot com> - * @version 1.0 - * - * @param array $params parameters - * @param Smarty_Internal_Template $template template object - * - * @return string - * @uses smarty_function_escape_special_chars() - */ -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 = ''; - $escape = true; - $labels = true; - $label_ids = false; - $output = null; - $extra = ''; - - foreach ($params as $_key => $_val) { - switch ($_key) { - case 'name': - case 'separator': - $$_key = (string) $_val; - break; - - case 'checked': - case 'selected': - if (is_array($_val)) { - trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING); - } elseif (is_object($_val)) { - if (method_exists($_val, "__toString")) { - $selected = smarty_function_escape_special_chars((string) $_val->__toString()); - } else { - trigger_error("html_radios: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE); - } - } else { - $selected = (string) $_val; - } - break; - - case 'escape': - case 'labels': - case 'label_ids': - $$_key = (bool) $_val; - break; - - case 'options': - $$_key = (array) $_val; - break; - - case 'values': - case 'output': - $$_key = array_values((array) $_val); - break; - - case '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; - - case 'strict': - break; - - case 'disabled': - case 'readonly': - if (!empty($params['strict'])) { - if (!is_scalar($_val)) { - trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE); - } - - if ($_val === true || $_val === $_key) { - $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"'; - } - - break; - } - // omit break; to fall through! - - 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)) { - /* raise error here? */ - - return ''; - } - - $_html_result = array(); - - if (isset($options)) { - foreach ($options as $_key => $_val) { - $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape); - } - } else { - foreach ($values as $_i => $_key) { - $_val = isset($output[$_i]) ? $output[$_i] : ''; - $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape); - } - } - - 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, $escape) -{ - $_output = ''; - - if (is_object($value)) { - if (method_exists($value, "__toString")) { - $value = (string) $value->__toString(); - } else { - trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE); - - return ''; - } - } else { - $value = (string) $value; - } - - if (is_object($output)) { - if (method_exists($output, "__toString")) { - $output = (string) $output->__toString(); - } else { - trigger_error("html_options: output is an object of class '" . get_class($output) . "' without __toString() method", E_USER_NOTICE); - - return ''; - } - } else { - $output = (string) $output; - } - - if ($labels) { - if ($label_ids) { - $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value)); - $_output .= '<label for="' . $_id . '">'; - } else { - $_output .= '<label>'; - } - } - - $name = smarty_function_escape_special_chars($name); - $value = smarty_function_escape_special_chars($value); - if ($escape) { - $output = smarty_function_escape_special_chars($output); - } - - $_output .= '<input type="radio" name="' . $name . '" value="' . $value . '"'; - - if ($labels && $label_ids) { - $_output .= ' id="' . $_id . '"'; - } - - if ($value === $selected) { - $_output .= ' checked="checked"'; - } - - $_output .= $extra . ' />' . $output; - if ($labels) { - $_output .= '</label>'; - } - - $_output .= $separator; - - return $_output; -} diff --git a/library/Smarty/libs/plugins/function.html_select_date.php b/library/Smarty/libs/plugins/function.html_select_date.php deleted file mode 100644 index d66256651..000000000 --- a/library/Smarty/libs/plugins/function.html_select_date.php +++ /dev/null @@ -1,387 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsFunction - */ - -/** - * @ignore - */ -require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); -/** - * @ignore - */ -require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'); - -/** - * Smarty {html_select_date} plugin - * Type: function<br> - * Name: html_select_date<br> - * Purpose: Prints the dropdowns for date selection. - * ChangeLog: - * <pre> - * - 1.0 initial release - * - 1.1 added support for +/- N syntax for begin - * and end year values. (Monte) - * - 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) - * - 2.0 complete rewrite for performance, - * added attributes month_names, *_id - * </pre> - * - * @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date} - * (Smarty online manual) - * @version 2.0 - * @author Andrei Zmievski - * @author Monte Ohrt <monte at ohrt dot com> - * @author Rodney Rehm - * - * @param array $params parameters - * - * @return string - */ -function smarty_function_html_select_date($params) -{ - // generate timestamps used for month names only - static $_month_timestamps = null; - static $_current_year = null; - if ($_month_timestamps === null) { - $_current_year = date('Y'); - $_month_timestamps = array(); - for ($i = 1; $i <= 12; $i ++) { - $_month_timestamps[$i] = mktime(0, 0, 0, $i, 1, 2000); - } - } - - /* Default values. */ - $prefix = "Date_"; - $start_year = null; - $end_year = null; - $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"; - $option_separator = "\n"; - $time = null; - // $all_empty = null; - // $day_empty = null; - // $month_empty = null; - // $year_empty = null; - $extra_attrs = ''; - $all_id = null; - $day_id = null; - $month_id = null; - $year_id = null; - - foreach ($params as $_key => $_value) { - switch ($_key) { - case 'time': - if (!is_array($_value) && $_value !== null) { - $time = smarty_make_timestamp($_value); - } - break; - - case 'month_names': - if (is_array($_value) && count($_value) == 12) { - $$_key = $_value; - } else { - trigger_error("html_select_date: month_names must be an array of 12 strings", E_USER_NOTICE); - } - break; - - case 'prefix': - case 'field_array': - case 'start_year': - case 'end_year': - case 'day_format': - case 'day_value_format': - case 'month_format': - case 'month_value_format': - 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 'option_separator': - case 'all_empty': - case 'month_empty': - case 'day_empty': - case 'year_empty': - case 'all_id': - case 'month_id': - case 'day_id': - case 'year_id': - $$_key = (string) $_value; - 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; - } - } - - // Note: date() is faster than strftime() - // Note: explode(date()) is faster than date() date() date() - if (isset($params['time']) && is_array($params['time'])) { - if (isset($params['time'][$prefix . 'Year'])) { - // $_REQUEST[$field_array] given - foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) { - $_variableName = '_' . strtolower($_elementName); - $$_variableName = isset($params['time'][$prefix . $_elementName]) - ? $params['time'][$prefix . $_elementName] - : date($_elementKey); - } - } elseif (isset($params['time'][$field_array][$prefix . 'Year'])) { - // $_REQUEST given - foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) { - $_variableName = '_' . strtolower($_elementName); - $$_variableName = isset($params['time'][$field_array][$prefix . $_elementName]) - ? $params['time'][$field_array][$prefix . $_elementName] - : date($_elementKey); - } - } else { - // no date found, use NOW - list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d')); - } - } elseif ($time === null) { - if (array_key_exists('time', $params)) { - $_year = $_month = $_day = $time = null; - } else { - list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d')); - } - } else { - list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d', $time)); - } - - // make syntax "+N" or "-N" work with $start_year and $end_year - // Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr - foreach (array('start', 'end') as $key) { - $key .= '_year'; - $t = $$key; - if ($t === null) { - $$key = (int) $_current_year; - } elseif ($t[0] == '+') { - $$key = (int) ($_current_year + (int)trim(substr($t, 1))); - } elseif ($t[0] == '-') { - $$key = (int) ($_current_year - (int)trim(substr($t, 1))); - } else { - $$key = (int) $$key; - } - } - - // flip for ascending or descending - if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) { - $t = $end_year; - $end_year = $start_year; - $start_year = $t; - } - - // generate year <select> or <input> - if ($display_years) { - $_extra = ''; - $_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year'); - if ($all_extra) { - $_extra .= ' ' . $all_extra; - } - if ($year_extra) { - $_extra .= ' ' . $year_extra; - } - - if ($year_as_text) { - $_html_years = '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra . $extra_attrs . ' />'; - } else { - $_html_years = '<select name="' . $_name . '"'; - if ($year_id !== null || $all_id !== null) { - $_html_years .= ' id="' . smarty_function_escape_special_chars( - $year_id !== null ? ($year_id ? $year_id : $_name) : ($all_id ? ($all_id . $_name) : $_name) - ) . '"'; - } - if ($year_size) { - $_html_years .= ' size="' . $year_size . '"'; - } - $_html_years .= $_extra . $extra_attrs . '>' . $option_separator; - - if (isset($year_empty) || isset($all_empty)) { - $_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' . $option_separator; - } - - $op = $start_year > $end_year ? - 1 : 1; - for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) { - $_html_years .= '<option value="' . $i . '"' - . ($_year == $i ? ' selected="selected"' : '') - . '>' . $i . '</option>' . $option_separator; - } - - $_html_years .= '</select>'; - } - } - - // generate month <select> or <input> - if ($display_months) { - $_extra = ''; - $_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month'); - if ($all_extra) { - $_extra .= ' ' . $all_extra; - } - if ($month_extra) { - $_extra .= ' ' . $month_extra; - } - - $_html_months = '<select name="' . $_name . '"'; - if ($month_id !== null || $all_id !== null) { - $_html_months .= ' id="' . smarty_function_escape_special_chars( - $month_id !== null ? ($month_id ? $month_id : $_name) : ($all_id ? ($all_id . $_name) : $_name) - ) . '"'; - } - if ($month_size) { - $_html_months .= ' size="' . $month_size . '"'; - } - $_html_months .= $_extra . $extra_attrs . '>' . $option_separator; - - if (isset($month_empty) || isset($all_empty)) { - $_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' . $option_separator; - } - - for ($i = 1; $i <= 12; $i ++) { - $_val = sprintf('%02d', $i); - $_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[$i]) : ($month_format == "%m" ? $_val : strftime($month_format, $_month_timestamps[$i])); - $_value = $month_value_format == "%m" ? $_val : strftime($month_value_format, $_month_timestamps[$i]); - $_html_months .= '<option value="' . $_value . '"' - . ($_val == $_month ? ' selected="selected"' : '') - . '>' . $_text . '</option>' . $option_separator; - } - - $_html_months .= '</select>'; - } - - // generate day <select> or <input> - if ($display_days) { - $_extra = ''; - $_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day'); - if ($all_extra) { - $_extra .= ' ' . $all_extra; - } - if ($day_extra) { - $_extra .= ' ' . $day_extra; - } - - $_html_days = '<select name="' . $_name . '"'; - if ($day_id !== null || $all_id !== null) { - $_html_days .= ' id="' . smarty_function_escape_special_chars( - $day_id !== null ? ($day_id ? $day_id : $_name) : ($all_id ? ($all_id . $_name) : $_name) - ) . '"'; - } - if ($day_size) { - $_html_days .= ' size="' . $day_size . '"'; - } - $_html_days .= $_extra . $extra_attrs . '>' . $option_separator; - - if (isset($day_empty) || isset($all_empty)) { - $_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' . $option_separator; - } - - for ($i = 1; $i <= 31; $i ++) { - $_val = sprintf('%02d', $i); - $_text = $day_format == '%02d' ? $_val : sprintf($day_format, $i); - $_value = $day_value_format == '%02d' ? $_val : sprintf($day_value_format, $i); - $_html_days .= '<option value="' . $_value . '"' - . ($_val == $_day ? ' selected="selected"' : '') - . '>' . $_text . '</option>' . $option_separator; - } - - $_html_days .= '</select>'; - } - - // order the fields for output - $_html = ''; - for ($i = 0; $i <= 2; $i ++) { - switch ($field_order[$i]) { - case 'Y': - case 'y': - if (isset($_html_years)) { - if ($_html) { - $_html .= $field_separator; - } - $_html .= $_html_years; - } - break; - - case 'm': - case 'M': - if (isset($_html_months)) { - if ($_html) { - $_html .= $field_separator; - } - $_html .= $_html_months; - } - break; - - case 'd': - case 'D': - if (isset($_html_days)) { - if ($_html) { - $_html .= $field_separator; - } - $_html .= $_html_days; - } - break; - } - } - - return $_html; -} diff --git a/library/Smarty/libs/plugins/function.html_select_time.php b/library/Smarty/libs/plugins/function.html_select_time.php deleted file mode 100644 index 9af6aad5b..000000000 --- a/library/Smarty/libs/plugins/function.html_select_time.php +++ /dev/null @@ -1,364 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsFunction - */ - -/** - * @ignore - */ -require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); -/** - * @ignore - */ -require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'); - -/** - * Smarty {html_select_time} function plugin - * Type: function<br> - * Name: html_select_time<br> - * Purpose: Prints the dropdowns for time selection - * - * @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time} - * (Smarty online manual) - * @author Roberto Berto <roberto@berto.net> - * @author Monte Ohrt <monte AT ohrt DOT com> - * - * @param array $params parameters - * - * @return string - * @uses smarty_make_timestamp() - */ -function smarty_function_html_select_time($params) -{ - $prefix = "Time_"; - $field_array = null; - $field_separator = "\n"; - $option_separator = "\n"; - $time = null; - - $display_hours = true; - $display_minutes = true; - $display_seconds = true; - $display_meridian = true; - - $hour_format = '%02d'; - $hour_value_format = '%02d'; - $minute_format = '%02d'; - $minute_value_format = '%02d'; - $second_format = '%02d'; - $second_value_format = '%02d'; - - $hour_size = null; - $minute_size = null; - $second_size = null; - $meridian_size = null; - - $all_empty = null; - $hour_empty = null; - $minute_empty = null; - $second_empty = null; - $meridian_empty = null; - - $all_id = null; - $hour_id = null; - $minute_id = null; - $second_id = null; - $meridian_id = null; - - $use_24_hours = true; - $minute_interval = 1; - $second_interval = 1; - - $extra_attrs = ''; - $all_extra = null; - $hour_extra = null; - $minute_extra = null; - $second_extra = null; - $meridian_extra = null; - - foreach ($params as $_key => $_value) { - switch ($_key) { - case 'time': - if (!is_array($_value) && $_value !== null) { - $time = smarty_make_timestamp($_value); - } - break; - - case 'prefix': - case 'field_array': - - case 'field_separator': - case 'option_separator': - - case 'all_extra': - case 'hour_extra': - case 'minute_extra': - case 'second_extra': - case 'meridian_extra': - - case 'all_empty': - case 'hour_empty': - case 'minute_empty': - case 'second_empty': - case 'meridian_empty': - - case 'all_id': - case 'hour_id': - case 'minute_id': - case 'second_id': - case 'meridian_id': - - case 'hour_format': - case 'hour_value_format': - case 'minute_format': - case 'minute_value_format': - case 'second_format': - case 'second_value_format': - $$_key = (string) $_value; - 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': - - case 'hour_size': - case 'minute_size': - case 'second_size': - case 'meridian_size': - $$_key = (int) $_value; - break; - - default: - if (!is_array($_value)) { - $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"'; - } else { - trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE); - } - break; - } - } - - if (isset($params['time']) && is_array($params['time'])) { - if (isset($params['time'][$prefix . 'Hour'])) { - // $_REQUEST[$field_array] given - foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) { - $_variableName = '_' . strtolower($_elementName); - $$_variableName = isset($params['time'][$prefix . $_elementName]) - ? $params['time'][$prefix . $_elementName] - : date($_elementKey); - } - $_meridian = isset($params['time'][$prefix . 'Meridian']) - ? (' ' . $params['time'][$prefix . 'Meridian']) - : ''; - $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian); - list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time)); - } elseif (isset($params['time'][$field_array][$prefix . 'Hour'])) { - // $_REQUEST given - foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) { - $_variableName = '_' . strtolower($_elementName); - $$_variableName = isset($params['time'][$field_array][$prefix . $_elementName]) - ? $params['time'][$field_array][$prefix . $_elementName] - : date($_elementKey); - } - $_meridian = isset($params['time'][$field_array][$prefix . 'Meridian']) - ? (' ' . $params['time'][$field_array][$prefix . 'Meridian']) - : ''; - $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian); - list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time)); - } else { - // no date found, use NOW - list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d')); - } - } elseif ($time === null) { - if (array_key_exists('time', $params)) { - $_hour = $_minute = $_second = $time = null; - } else { - list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s')); - } - } else { - list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time)); - } - - // generate hour <select> - if ($display_hours) { - $_html_hours = ''; - $_extra = ''; - $_name = $field_array ? ($field_array . '[' . $prefix . 'Hour]') : ($prefix . 'Hour'); - if ($all_extra) { - $_extra .= ' ' . $all_extra; - } - if ($hour_extra) { - $_extra .= ' ' . $hour_extra; - } - - $_html_hours = '<select name="' . $_name . '"'; - if ($hour_id !== null || $all_id !== null) { - $_html_hours .= ' id="' . smarty_function_escape_special_chars( - $hour_id !== null ? ($hour_id ? $hour_id : $_name) : ($all_id ? ($all_id . $_name) : $_name) - ) . '"'; - } - if ($hour_size) { - $_html_hours .= ' size="' . $hour_size . '"'; - } - $_html_hours .= $_extra . $extra_attrs . '>' . $option_separator; - - if (isset($hour_empty) || isset($all_empty)) { - $_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' . $option_separator; - } - - $start = $use_24_hours ? 0 : 1; - $end = $use_24_hours ? 23 : 12; - for ($i = $start; $i <= $end; $i ++) { - $_val = sprintf('%02d', $i); - $_text = $hour_format == '%02d' ? $_val : sprintf($hour_format, $i); - $_value = $hour_value_format == '%02d' ? $_val : sprintf($hour_value_format, $i); - - if (!$use_24_hours) { - $_hour12 = $_hour == 0 - ? 12 - : ($_hour <= 12 ? $_hour : $_hour - 12); - } - - $selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null; - $_html_hours .= '<option value="' . $_value . '"' - . ($selected ? ' selected="selected"' : '') - . '>' . $_text . '</option>' . $option_separator; - } - - $_html_hours .= '</select>'; - } - - // generate minute <select> - if ($display_minutes) { - $_html_minutes = ''; - $_extra = ''; - $_name = $field_array ? ($field_array . '[' . $prefix . 'Minute]') : ($prefix . 'Minute'); - if ($all_extra) { - $_extra .= ' ' . $all_extra; - } - if ($minute_extra) { - $_extra .= ' ' . $minute_extra; - } - - $_html_minutes = '<select name="' . $_name . '"'; - if ($minute_id !== null || $all_id !== null) { - $_html_minutes .= ' id="' . smarty_function_escape_special_chars( - $minute_id !== null ? ($minute_id ? $minute_id : $_name) : ($all_id ? ($all_id . $_name) : $_name) - ) . '"'; - } - if ($minute_size) { - $_html_minutes .= ' size="' . $minute_size . '"'; - } - $_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator; - - if (isset($minute_empty) || isset($all_empty)) { - $_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' . $option_separator; - } - - $selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null; - for ($i = 0; $i <= 59; $i += $minute_interval) { - $_val = sprintf('%02d', $i); - $_text = $minute_format == '%02d' ? $_val : sprintf($minute_format, $i); - $_value = $minute_value_format == '%02d' ? $_val : sprintf($minute_value_format, $i); - $_html_minutes .= '<option value="' . $_value . '"' - . ($selected === $i ? ' selected="selected"' : '') - . '>' . $_text . '</option>' . $option_separator; - } - - $_html_minutes .= '</select>'; - } - - // generate second <select> - if ($display_seconds) { - $_html_seconds = ''; - $_extra = ''; - $_name = $field_array ? ($field_array . '[' . $prefix . 'Second]') : ($prefix . 'Second'); - if ($all_extra) { - $_extra .= ' ' . $all_extra; - } - if ($second_extra) { - $_extra .= ' ' . $second_extra; - } - - $_html_seconds = '<select name="' . $_name . '"'; - if ($second_id !== null || $all_id !== null) { - $_html_seconds .= ' id="' . smarty_function_escape_special_chars( - $second_id !== null ? ($second_id ? $second_id : $_name) : ($all_id ? ($all_id . $_name) : $_name) - ) . '"'; - } - if ($second_size) { - $_html_seconds .= ' size="' . $second_size . '"'; - } - $_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator; - - if (isset($second_empty) || isset($all_empty)) { - $_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' . $option_separator; - } - - $selected = $_second !== null ? ($_second - $_second % $second_interval) : null; - for ($i = 0; $i <= 59; $i += $second_interval) { - $_val = sprintf('%02d', $i); - $_text = $second_format == '%02d' ? $_val : sprintf($second_format, $i); - $_value = $second_value_format == '%02d' ? $_val : sprintf($second_value_format, $i); - $_html_seconds .= '<option value="' . $_value . '"' - . ($selected === $i ? ' selected="selected"' : '') - . '>' . $_text . '</option>' . $option_separator; - } - - $_html_seconds .= '</select>'; - } - - // generate meridian <select> - if ($display_meridian && !$use_24_hours) { - $_html_meridian = ''; - $_extra = ''; - $_name = $field_array ? ($field_array . '[' . $prefix . 'Meridian]') : ($prefix . 'Meridian'); - if ($all_extra) { - $_extra .= ' ' . $all_extra; - } - if ($meridian_extra) { - $_extra .= ' ' . $meridian_extra; - } - - $_html_meridian = '<select name="' . $_name . '"'; - if ($meridian_id !== null || $all_id !== null) { - $_html_meridian .= ' id="' . smarty_function_escape_special_chars( - $meridian_id !== null ? ($meridian_id ? $meridian_id : $_name) : ($all_id ? ($all_id . $_name) : $_name) - ) . '"'; - } - if ($meridian_size) { - $_html_meridian .= ' size="' . $meridian_size . '"'; - } - $_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator; - - if (isset($meridian_empty) || isset($all_empty)) { - $_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) . '</option>' . $option_separator; - } - - $_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') . '>AM</option>' . $option_separator - . '<option value="pm"' . ($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator - . '</select>'; - } - - $_html = ''; - foreach (array('_html_hours', '_html_minutes', '_html_seconds', '_html_meridian') as $k) { - if (isset($$k)) { - if ($_html) { - $_html .= $field_separator; - } - $_html .= $$k; - } - } - - return $_html; -} diff --git a/library/Smarty/libs/plugins/function.html_table.php b/library/Smarty/libs/plugins/function.html_table.php deleted file mode 100644 index ec7ba48a4..000000000 --- a/library/Smarty/libs/plugins/function.html_table.php +++ /dev/null @@ -1,176 +0,0 @@ -<?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> - * Params: - * <pre> - * - 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) - * </pre> - * Examples: - * <pre> - * {table loop=$data} - * {table loop=$data cols=4 tr_attr='"bgcolor=red"'} - * {table loop=$data cols="first,second,third" tr_attr=$colors} - * </pre> - * - * @author Monte Ohrt <monte at ohrt dot com> - * @author credit to Messju Mohr <messju at lammfellpuschen dot de> - * @author credit to boots <boots dot smarty at yahoo dot com> - * @version 1.1 - * @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table} - * (Smarty online manual) - * - * @param array $params parameters - * - * @return string - */ -function smarty_function_html_table($params) -{ - $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 : ''; -} diff --git a/library/Smarty/libs/plugins/function.mailto.php b/library/Smarty/libs/plugins/function.mailto.php deleted file mode 100644 index 520fb7aa6..000000000 --- a/library/Smarty/libs/plugins/function.mailto.php +++ /dev/null @@ -1,155 +0,0 @@ -<?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> - * Params: - * <pre> - * - address - (required) - e-mail address - * - text - (optional) - text to display, default is address - * - encode - (optional) - can be one of: - * * none : no encoding (default) - * * javascript : encode with javascript - * * javascript_charcode : encode with javascript charcode - * * hex : encode with hexidecimal (no javascript) - * - cc - (optional) - address(es) to carbon copy - * - bcc - (optional) - address(es) to blind carbon copy - * - subject - (optional) - e-mail subject - * - newsgroups - (optional) - newsgroup(s) to post to - * - followupto - (optional) - address(es) to follow up to - * - extra - (optional) - extra tags for the href link - * </pre> - * Examples: - * <pre> - * {mailto address="me@domain.com"} - * {mailto address="me@domain.com" encode="javascript"} - * {mailto address="me@domain.com" encode="hex"} - * {mailto address="me@domain.com" subject="Hello to you!"} - * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"} - * {mailto address="me@domain.com" extra='class="mailto"'} - * </pre> - * - * @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto} - * (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 - * - * @return string - */ -function smarty_function_mailto($params) -{ - static $_allowed_encoding = array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true); - $extra = ''; - - if (empty($params['address'])) { - trigger_error("mailto: missing 'address' parameter", E_USER_WARNING); - - return; - } else { - $address = $params['address']; - } - - $text = $address; - // netscape and mozilla do not decode %40 (@) in BCC field (bug?) - // so, don't encode it. - $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: - } - } - - if ($mail_parms) { - $address .= '?' . join('&', $mail_parms); - } - - $encode = (empty($params['encode'])) ? 'none' : $params['encode']; - if (!isset($_allowed_encoding[$encode])) { - trigger_error("mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", E_USER_WARNING); - - return; - } - // FIXME: (rodneyrehm) document.write() excues me what? 1998 has passed! - if ($encode == 'javascript') { - $string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');'; - - $js_encode = ''; - for ($x = 0, $_length = strlen($string); $x < $_length; $x ++) { - $js_encode .= '%' . bin2hex($string[$x]); - } - - return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>'; - } elseif ($encode == 'javascript_charcode') { - $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" - . "{document.write(String.fromCharCode(" - . implode(',', $ord) - . "))" - . "}\n" - . "</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, $_length = strlen($address); $x < $_length; $x ++) { - if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[$x])) { - $address_encode .= '%' . bin2hex($address[$x]); - } else { - $address_encode .= $address[$x]; - } - } - $text_encode = ''; - for ($x = 0, $_length = strlen($text); $x < $_length; $x ++) { - $text_encode .= '&#x' . bin2hex($text[$x]) . ';'; - } - - $mailto = "mailto:"; - - return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>'; - } else { - // no encoding - return '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>'; - } -} diff --git a/library/Smarty/libs/plugins/function.math.php b/library/Smarty/libs/plugins/function.math.php deleted file mode 100644 index aba76e825..000000000 --- a/library/Smarty/libs/plugins/function.math.php +++ /dev/null @@ -1,91 +0,0 @@ -<?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 - * - * @link http://www.smarty.net/manual/en/language.function.math.php {math} - * (Smarty online manual) - * @author Monte Ohrt <monte at ohrt dot com> - * - * @param array $params parameters - * @param Smarty_Internal_Template $template template object - * - * @return string|null - */ -function smarty_function_math($params, $template) -{ - static $_allowed_funcs = array( - 'int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true, - 'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true, - 'rand' => true, 'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true, 'tan' => true - ); - // 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); - - foreach ($match[1] as $curr_var) { - if ($curr_var && !isset($params[$curr_var]) && !isset($_allowed_funcs[$curr_var])) { - trigger_error("math: function call $curr_var not allowed", E_USER_WARNING); - - 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)); - } - } -} diff --git a/library/Smarty/libs/plugins/modifier.capitalize.php b/library/Smarty/libs/plugins/modifier.capitalize.php deleted file mode 100644 index a8ad76370..000000000 --- a/library/Smarty/libs/plugins/modifier.capitalize.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsModifier - */ - -/** - * Smarty capitalize modifier plugin - * Type: modifier<br> - * Name: capitalize<br> - * Purpose: capitalize words in the string - * {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }} - * - * @param string $string string to capitalize - * @param boolean $uc_digits also capitalize "x123" to "X123" - * @param boolean $lc_rest capitalize first letters, lowercase all following letters "aAa" to "Aaa" - * - * @return string capitalized string - * @author Monte Ohrt <monte at ohrt dot com> - * @author Rodney Rehm - */ -function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = false) -{ - if (Smarty::$_MBSTRING) { - if ($lc_rest) { - // uppercase (including hyphenated words) - $upper_string = mb_convert_case($string, MB_CASE_TITLE, Smarty::$_CHARSET); - } else { - // uppercase word breaks - $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert_cb', $string); - } - // check uc_digits case - if (!$uc_digits) { - if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, PREG_OFFSET_CAPTURE)) { - foreach ($matches[1] as $match) { - $upper_string = substr_replace($upper_string, mb_strtolower($match[0], Smarty::$_CHARSET), $match[1], strlen($match[0])); - } - } - } - $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert2_cb', $upper_string); - return $upper_string; - } - - // lowercase first - if ($lc_rest) { - $string = strtolower($string); - } - // uppercase (including hyphenated words) - $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst_cb', $string); - // check uc_digits case - if (!$uc_digits) { - if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, PREG_OFFSET_CAPTURE)) { - foreach ($matches[1] as $match) { - $upper_string = substr_replace($upper_string, strtolower($match[0]), $match[1], strlen($match[0])); - } - } - } - $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst2_cb', $upper_string); - return $upper_string; -} - -/* - * - * Bug: create_function() use exhausts memory when used in long loops - * Fix: use declared functions for callbacks instead of using create_function() - * Note: This can be fixed using anonymous functions instead, but that requires PHP >= 5.3 - * - * @author Kyle Renfrow - */ -function smarty_mod_cap_mbconvert_cb($matches) -{ - return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[2]), MB_CASE_UPPER, Smarty::$_CHARSET); -} - -function smarty_mod_cap_mbconvert2_cb($matches) -{ - return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[3]), MB_CASE_UPPER, Smarty::$_CHARSET); -} - -function smarty_mod_cap_ucfirst_cb($matches) -{ - return stripslashes($matches[1]) . ucfirst(stripslashes($matches[2])); -} - -function smarty_mod_cap_ucfirst2_cb($matches) -{ - return stripslashes($matches[1]) . ucfirst(stripslashes($matches[3])); -} diff --git a/library/Smarty/libs/plugins/modifier.date_format.php b/library/Smarty/libs/plugins/modifier.date_format.php deleted file mode 100644 index 28d6ff021..000000000 --- a/library/Smarty/libs/plugins/modifier.date_format.php +++ /dev/null @@ -1,65 +0,0 @@ -<?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://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual) - * @author Monte Ohrt <monte at ohrt dot com> - * - * @param string $string input date string - * @param string $format strftime format for output - * @param string $default_date default date if $string is empty - * @param string $formatter either 'strftime' or 'auto' - * - * @return string |void - * @uses smarty_make_timestamp() - */ -function smarty_modifier_date_format($string, $format = null, $default_date = '', $formatter = 'auto') -{ - if ($format === null) { - $format = Smarty::$_DATE_FORMAT; - } - /** - * require_once the {@link shared.make_timestamp.php} plugin - */ - require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'); - if ($string != '' && $string != '0000-00-00' && $string != '0000-00-00 00:00:00') { - $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); - } -} diff --git a/library/Smarty/libs/plugins/modifier.debug_print_var.php b/library/Smarty/libs/plugins/modifier.debug_print_var.php deleted file mode 100644 index 4ff8213ce..000000000 --- a/library/Smarty/libs/plugins/modifier.debug_print_var.php +++ /dev/null @@ -1,116 +0,0 @@ -<?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 - * - * @author Monte Ohrt <monte at ohrt dot com> - * - * @param array|object $var variable to be formatted - * @param int $max maximum recursion depth if $var is an array or object - * @param int $length maximum string length if $var is a string - * @param int $depth actual recursion depth - * @param array $objects processed objects in actual depth to prevent recursive object processing - * - * @return string - */ -function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = 0, $objects = array()) -{ - $_replace = array("\n" => '\n', - "\r" => '\r', - "\t" => '\t' - ); - switch (gettype($var)) { - case 'array' : - $results = '<b>Array (' . count($var) . ')</b>'; - if ($depth == $max) { - break; - } - foreach ($var as $curr_key => $curr_val) { - $results .= '<br>' . str_repeat(' ', $depth * 2) - . '<b>' . strtr($curr_key, $_replace) . '</b> => ' - . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects); - $depth --; - } - break; - - case 'object' : - $object_vars = get_object_vars($var); - $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>'; - if (in_array($var, $objects)) { - $results .= ' called recursive'; - break; - } - if ($depth == $max) { - break; - } - $objects[] = $var; - foreach ($object_vars as $curr_key => $curr_val) { - $results .= '<br>' . str_repeat(' ', $depth * 2) - . '<b> ->' . strtr($curr_key, $_replace) . '</b> = ' - . smarty_modifier_debug_print_var($curr_val, $max, $length, ++ $depth, $objects); - $depth --; - } - 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 (Smarty::$_MBSTRING) { - if (mb_strlen($var, Smarty::$_CHARSET) > $length) { - $results = mb_substr($var, 0, $length - 3, Smarty::$_CHARSET) . '...'; - } - } else { - if (isset($var[$length])) { - $results = substr($var, 0, $length - 3) . '...'; - } - } - - $results = htmlspecialchars('"' . $results . '"'); - break; - - case 'unknown type' : - default : - $results = strtr((string) $var, $_replace); - if (Smarty::$_MBSTRING) { - if (mb_strlen($results, Smarty::$_CHARSET) > $length) { - $results = mb_substr($results, 0, $length - 3, Smarty::$_CHARSET) . '...'; - } - } else { - if (strlen($results) > $length) { - $results = substr($results, 0, $length - 3) . '...'; - } - } - - $results = htmlspecialchars($results); - } - - return $results; -} diff --git a/library/Smarty/libs/plugins/modifier.escape.php b/library/Smarty/libs/plugins/modifier.escape.php deleted file mode 100644 index 9fdb0702f..000000000 --- a/library/Smarty/libs/plugins/modifier.escape.php +++ /dev/null @@ -1,198 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsModifier - */ - -/** - * Smarty escape modifier plugin - * Type: modifier<br> - * Name: escape<br> - * Purpose: escape string for output - * - * @link http://www.smarty.net/docs/en/language.modifier.escape - * @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, used for htmlspecialchars() or htmlentities() - * @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities() - * - * @return string escaped input string - */ -function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true) -{ - static $_double_encode = null; - if ($_double_encode === null) { - $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>='); - } - - if (!$char_set) { - $char_set = Smarty::$_CHARSET; - } - - switch ($esc_type) { - case 'html': - if ($_double_encode) { - // php >=5.3.2 - go native - return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode); - } else { - if ($double_encode) { - // php <5.2.3 - only handle double encoding - return htmlspecialchars($string, ENT_QUOTES, $char_set); - } else { - // php <5.2.3 - prevent double encoding - $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); - $string = htmlspecialchars($string, ENT_QUOTES, $char_set); - $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string); - - return $string; - } - } - - case 'htmlall': - if (Smarty::$_MBSTRING) { - // mb_convert_encoding ignores htmlspecialchars() - if ($_double_encode) { - // php >=5.3.2 - go native - $string = htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode); - } else { - if ($double_encode) { - // php <5.2.3 - only handle double encoding - $string = htmlspecialchars($string, ENT_QUOTES, $char_set); - } else { - // php <5.2.3 - prevent double encoding - $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); - $string = htmlspecialchars($string, ENT_QUOTES, $char_set); - $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string); - - return $string; - } - } - - // htmlentities() won't convert everything, so use mb_convert_encoding - return mb_convert_encoding($string, 'HTML-ENTITIES', $char_set); - } - - // no MBString fallback - if ($_double_encode) { - return htmlentities($string, ENT_QUOTES, $char_set, $double_encode); - } else { - if ($double_encode) { - return htmlentities($string, ENT_QUOTES, $char_set); - } else { - $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); - $string = htmlentities($string, ENT_QUOTES, $char_set); - $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string); - - return $string; - } - } - - case 'url': - return rawurlencode($string); - - case 'urlpathinfo': - return str_replace('%2F', '/', rawurlencode($string)); - - case 'quotes': - // escape unescaped single quotes - return preg_replace("%(?<!\\\\)'%", "\\'", $string); - - case 'hex': - // escape every byte into hex - // Note that the UTF-8 encoded character ä will be represented as %c3%a4 - $return = ''; - $_length = strlen($string); - for ($x = 0; $x < $_length; $x ++) { - $return .= '%' . bin2hex($string[$x]); - } - - return $return; - - case 'hexentity': - $return = ''; - if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'); - $return = ''; - foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { - $return .= '&#x' . strtoupper(dechex($unicode)) . ';'; - } - - return $return; - } - // no MBString fallback - $_length = strlen($string); - for ($x = 0; $x < $_length; $x ++) { - $return .= '&#x' . bin2hex($string[$x]) . ';'; - } - - return $return; - - case 'decentity': - $return = ''; - if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'); - $return = ''; - foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { - $return .= '&#' . $unicode . ';'; - } - - return $return; - } - // no MBString fallback - $_length = strlen($string); - for ($x = 0; $x < $_length; $x ++) { - $return .= '&#' . ord($string[$x]) . ';'; - } - - return $return; - - case 'javascript': - // escape quotes and backslashes, newlines, etc. - return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n', '</' => '<\/')); - - case 'mail': - if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'); - - return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string); - } - // no MBString fallback - return str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string); - - case 'nonstd': - // escape non-standard chars, such as ms document quotes - $return = ''; - if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'); - foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { - if ($unicode >= 126) { - $return .= '&#' . $unicode . ';'; - } else { - $return .= chr($unicode); - } - } - - return $return; - } - - $_length = strlen($string); - for ($_i = 0; $_i < $_length; $_i ++) { - $_ord = ord(substr($string, $_i, 1)); - // non-standard char, escape it - if ($_ord >= 126) { - $return .= '&#' . $_ord . ';'; - } else { - $return .= substr($string, $_i, 1); - } - } - - return $return; - - default: - return $string; - } -} diff --git a/library/Smarty/libs/plugins/modifier.regex_replace.php b/library/Smarty/libs/plugins/modifier.regex_replace.php deleted file mode 100644 index ffea16755..000000000 --- a/library/Smarty/libs/plugins/modifier.regex_replace.php +++ /dev/null @@ -1,58 +0,0 @@ -<?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 $string input string - * @param string|array $search regular expression(s) to search for - * @param string|array $replace string(s) that should be replaced - * @param int $limit the maximum number of replacements - * - * @return string - */ -function smarty_modifier_regex_replace($string, $search, $replace, $limit = -1) -{ - 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, $limit); -} - -/** - * @param string $search string(s) that should be replaced - * - * @return string - * @ignore - */ -function _smarty_regex_replace_check($search) -{ - // null-byte injection detection - // anything behind the first null-byte is ignored - if (($pos = strpos($search, "\0")) !== false) { - $search = substr($search, 0, $pos); - } - // remove eval-modifier from $search - if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) { - $search = substr($search, 0, - strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]); - } - - return $search; -} diff --git a/library/Smarty/libs/plugins/modifier.replace.php b/library/Smarty/libs/plugins/modifier.replace.php deleted file mode 100644 index aa5e8570b..000000000 --- a/library/Smarty/libs/plugins/modifier.replace.php +++ /dev/null @@ -1,34 +0,0 @@ -<?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 $string input string - * @param string $search text to search for - * @param string $replace replacement text - * - * @return string - */ -function smarty_modifier_replace($string, $search, $replace) -{ - if (Smarty::$_MBSTRING) { - require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'); - - return smarty_mb_str_replace($search, $replace, $string); - } - - return str_replace($search, $replace, $string); -} diff --git a/library/Smarty/libs/plugins/modifier.spacify.php b/library/Smarty/libs/plugins/modifier.spacify.php deleted file mode 100644 index e5c41ad8b..000000000 --- a/library/Smarty/libs/plugins/modifier.spacify.php +++ /dev/null @@ -1,27 +0,0 @@ -<?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 $string input string - * @param string $spacify_char string to insert between characters. - * - * @return string - */ -function smarty_modifier_spacify($string, $spacify_char = ' ') -{ - // well… what about charsets besides latin and UTF-8? - return implode($spacify_char, preg_split('//' . Smarty::$_UTF8_MODIFIER, $string, - 1, PREG_SPLIT_NO_EMPTY)); -} diff --git a/library/Smarty/libs/plugins/modifier.truncate.php b/library/Smarty/libs/plugins/modifier.truncate.php deleted file mode 100644 index fbe62e823..000000000 --- a/library/Smarty/libs/plugins/modifier.truncate.php +++ /dev/null @@ -1,64 +0,0 @@ -<?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 length 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 (Smarty::$_MBSTRING) { - if (mb_strlen($string, Smarty::$_CHARSET) > $length) { - $length -= min($length, mb_strlen($etc, Smarty::$_CHARSET)); - if (!$break_words && !$middle) { - $string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '', mb_substr($string, 0, $length + 1, Smarty::$_CHARSET)); - } - if (!$middle) { - return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc; - } - - return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc . mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET); - } - - return $string; - } - - // no MBString fallback - if (isset($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; - } - - return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2); - } - - return $string; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.cat.php b/library/Smarty/libs/plugins/modifiercompiler.cat.php deleted file mode 100644 index db9d81fbf..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.cat.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsModifierCompiler - */ - -/** - * Smarty cat modifier plugin - * Type: modifier<br> - * Name: cat<br> - * Date: Feb 24, 2003<br> - * Purpose: catenate a value to a variable<br> - * Input: string to catenate<br> - * 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) -{ - return '(' . implode(').(', $params) . ')'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_characters.php b/library/Smarty/libs/plugins/modifiercompiler.count_characters.php deleted file mode 100644 index f8463d80a..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.count_characters.php +++ /dev/null @@ -1,32 +0,0 @@ -<?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://www.smarty.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) -{ - if (!isset($params[1]) || $params[1] != 'true') { - return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[0] . ', $tmp)'; - } - if (Smarty::$_MBSTRING) { - return 'mb_strlen(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; - } - // no MBString fallback - return 'strlen(' . $params[0] . ')'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php b/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php deleted file mode 100644 index 34f0bbb8a..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php +++ /dev/null @@ -1,27 +0,0 @@ -<?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://www.smarty.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) -{ - // count \r or \n characters - return '(preg_match_all(\'#[\r\n]+#\', ' . $params[0] . ', $tmp)+1)'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php b/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php deleted file mode 100644 index f1ec56007..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php +++ /dev/null @@ -1,27 +0,0 @@ -<?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://www.smarty.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) -{ - // find periods, question marks, exclamation marks with a word before but not after. - return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[0] . ', $tmp)'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_words.php b/library/Smarty/libs/plugins/modifiercompiler.count_words.php deleted file mode 100644 index 8b4330f1e..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.count_words.php +++ /dev/null @@ -1,31 +0,0 @@ -<?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://www.smarty.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) -{ - if (Smarty::$_MBSTRING) { - // return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)'; - // expression taken from http://de.php.net/manual/en/function.str-word-count.php#85592 - return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)'; - } - // no MBString fallback - return 'str_word_count(' . $params[0] . ')'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.default.php b/library/Smarty/libs/plugins/modifiercompiler.default.php deleted file mode 100644 index fe777623e..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.default.php +++ /dev/null @@ -1,35 +0,0 @@ -<?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://www.smarty.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) -{ - $output = $params[0]; - if (!isset($params[1])) { - $params[1] = "''"; - } - - array_shift($params); - foreach ($params as $param) { - $output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $param . ' : $tmp)'; - } - - return $output; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.escape.php b/library/Smarty/libs/plugins/modifiercompiler.escape.php deleted file mode 100644 index 0b29220ef..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.escape.php +++ /dev/null @@ -1,126 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsModifierCompiler - */ - -/** - * @ignore - */ -require_once(SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php'); - -/** - * Smarty escape modifier plugin - * Type: modifier<br> - * Name: escape<br> - * Purpose: escape string for output - * - * @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual) - * @author Rodney Rehm - * - * @param array $params parameters - * @param $compiler - * - * @return string with compiled code - */ -function smarty_modifiercompiler_escape($params, $compiler) -{ - static $_double_encode = null; - if ($_double_encode === null) { - $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>='); - } - - try { - $esc_type = smarty_literal_compiler_param($params, 1, 'html'); - $char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET); - $double_encode = smarty_literal_compiler_param($params, 3, true); - - if (!$char_set) { - $char_set = Smarty::$_CHARSET; - } - - switch ($esc_type) { - case 'html': - if ($_double_encode) { - return 'htmlspecialchars(' - . $params[0] . ', ENT_QUOTES, ' - . var_export($char_set, true) . ', ' - . var_export($double_encode, true) . ')'; - } elseif ($double_encode) { - return 'htmlspecialchars(' - . $params[0] . ', ENT_QUOTES, ' - . var_export($char_set, true) . ')'; - } else { - // fall back to modifier.escape.php - } - - case 'htmlall': - if (Smarty::$_MBSTRING) { - if ($_double_encode) { - // php >=5.2.3 - go native - return 'mb_convert_encoding(htmlspecialchars(' - . $params[0] . ', ENT_QUOTES, ' - . var_export($char_set, true) . ', ' - . var_export($double_encode, true) - . '), "HTML-ENTITIES", ' - . var_export($char_set, true) . ')'; - } elseif ($double_encode) { - // php <5.2.3 - only handle double encoding - return 'mb_convert_encoding(htmlspecialchars(' - . $params[0] . ', ENT_QUOTES, ' - . var_export($char_set, true) - . '), "HTML-ENTITIES", ' - . var_export($char_set, true) . ')'; - } else { - // fall back to modifier.escape.php - } - } - - // no MBString fallback - if ($_double_encode) { - // php >=5.2.3 - go native - return 'htmlentities(' - . $params[0] . ', ENT_QUOTES, ' - . var_export($char_set, true) . ', ' - . var_export($double_encode, true) . ')'; - } elseif ($double_encode) { - // php <5.2.3 - only handle double encoding - return 'htmlentities(' - . $params[0] . ', ENT_QUOTES, ' - . var_export($char_set, true) . ')'; - } else { - // fall back to modifier.escape.php - } - - case 'url': - return 'rawurlencode(' . $params[0] . ')'; - - case 'urlpathinfo': - return 'str_replace("%2F", "/", rawurlencode(' . $params[0] . '))'; - - case 'quotes': - // escape unescaped single quotes - return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[0] . ')'; - - case 'javascript': - // escape quotes and backslashes, newlines, etc. - return 'strtr(' . $params[0] . ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))'; - } - } - catch (SmartyException $e) { - // pass through to regular plugin fallback - } - - // could not optimize |escape call, so fallback to regular plugin - if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) { - $compiler->parent_compiler->template->compiled->required_plugins['nocache']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'modifier.escape.php'; - $compiler->parent_compiler->template->compiled->required_plugins['nocache']['escape']['modifier']['function'] = 'smarty_modifier_escape'; - } else { - $compiler->parent_compiler->template->compiled->required_plugins['compiled']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'modifier.escape.php'; - $compiler->parent_compiler->template->compiled->required_plugins['compiled']['escape']['modifier']['function'] = 'smarty_modifier_escape'; - } - - return 'smarty_modifier_escape(' . join(', ', $params) . ')'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.from_charset.php b/library/Smarty/libs/plugins/modifiercompiler.from_charset.php deleted file mode 100644 index dab43e9c3..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.from_charset.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsModifierCompiler - */ - -/** - * Smarty from_charset modifier plugin - * Type: modifier<br> - * Name: from_charset<br> - * Purpose: convert character encoding from $charset to internal encoding - * - * @author Rodney Rehm - * - * @param array $params parameters - * - * @return string with compiled code - */ -function smarty_modifiercompiler_from_charset($params) -{ - if (!Smarty::$_MBSTRING) { - // FIXME: (rodneyrehm) shouldn't this throw an error? - return $params[0]; - } - - if (!isset($params[1])) { - $params[1] = '"ISO-8859-1"'; - } - - return 'mb_convert_encoding(' . $params[0] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[1] . ')'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.indent.php b/library/Smarty/libs/plugins/modifiercompiler.indent.php deleted file mode 100644 index e3ca20821..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.indent.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsModifierCompiler - */ - -/** - * Smarty indent modifier plugin - * Type: modifier<br> - * Name: indent<br> - * Purpose: indent lines of text - * - * @link http://www.smarty.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) -{ - 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] . ')'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.lower.php b/library/Smarty/libs/plugins/modifiercompiler.lower.php deleted file mode 100644 index 1d255f371..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.lower.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsModifierCompiler - */ - -/** - * Smarty lower modifier plugin - * Type: modifier<br> - * Name: lower<br> - * Purpose: convert string to lowercase - * - * @link http://www.smarty.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) -{ - if (Smarty::$_MBSTRING) { - return 'mb_strtolower(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; - } - // no MBString fallback - return 'strtolower(' . $params[0] . ')'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.noprint.php b/library/Smarty/libs/plugins/modifiercompiler.noprint.php deleted file mode 100644 index 4906908b4..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.noprint.php +++ /dev/null @@ -1,21 +0,0 @@ -<?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 - * @return string with compiled code - */ -function smarty_modifiercompiler_noprint() -{ - return "''"; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.string_format.php b/library/Smarty/libs/plugins/modifiercompiler.string_format.php deleted file mode 100644 index 71cdf2819..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.string_format.php +++ /dev/null @@ -1,25 +0,0 @@ -<?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://www.smarty.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) -{ - return 'sprintf(' . $params[1] . ',' . $params[0] . ')'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.strip.php b/library/Smarty/libs/plugins/modifiercompiler.strip.php deleted file mode 100644 index fcd6cbaea..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.strip.php +++ /dev/null @@ -1,33 +0,0 @@ -<?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:" "}<br> - * Date: September 25th, 2002 - * - * @link http://www.smarty.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) -{ - if (!isset($params[1])) { - $params[1] = "' '"; - } - - return "preg_replace('!\s+!" . Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})"; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php b/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php deleted file mode 100644 index da5d364cb..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php +++ /dev/null @@ -1,29 +0,0 @@ -<?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://www.smarty.net/docs/en/language.modifier.strip.tags.tpl strip_tags (Smarty online manual) - * @author Uwe Tews - * - * @param array $params parameters - * - * @return string with compiled code - */ -function smarty_modifiercompiler_strip_tags($params) -{ - if (!isset($params[1]) || $params[1] === true || trim($params[1], '"') == 'true') { - return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})"; - } else { - return 'strip_tags(' . $params[0] . ')'; - } -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.to_charset.php b/library/Smarty/libs/plugins/modifiercompiler.to_charset.php deleted file mode 100644 index 9122d8bbb..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.to_charset.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsModifierCompiler - */ - -/** - * Smarty to_charset modifier plugin - * Type: modifier<br> - * Name: to_charset<br> - * Purpose: convert character encoding from internal encoding to $charset - * - * @author Rodney Rehm - * - * @param array $params parameters - * - * @return string with compiled code - */ -function smarty_modifiercompiler_to_charset($params) -{ - if (!Smarty::$_MBSTRING) { - // FIXME: (rodneyrehm) shouldn't this throw an error? - return $params[0]; - } - - if (!isset($params[1])) { - $params[1] = '"ISO-8859-1"'; - } - - return 'mb_convert_encoding(' . $params[0] . ', ' . $params[1] . ', "' . addslashes(Smarty::$_CHARSET) . '")'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.unescape.php b/library/Smarty/libs/plugins/modifiercompiler.unescape.php deleted file mode 100644 index 3b17ea2e1..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.unescape.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsModifierCompiler - */ - -/** - * Smarty unescape modifier plugin - * Type: modifier<br> - * Name: unescape<br> - * Purpose: unescape html entities - * - * @author Rodney Rehm - * - * @param array $params parameters - * - * @return string with compiled code - */ -function smarty_modifiercompiler_unescape($params) -{ - if (!isset($params[1])) { - $params[1] = 'html'; - } - if (!isset($params[2])) { - $params[2] = '\'' . addslashes(Smarty::$_CHARSET) . '\''; - } else { - $params[2] = "'" . $params[2] . "'"; - } - - switch (trim($params[1], '"\'')) { - case 'entity': - case 'htmlall': - if (Smarty::$_MBSTRING) { - return 'mb_convert_encoding(' . $params[0] . ', ' . $params[2] . ', \'HTML-ENTITIES\')'; - } - - return 'html_entity_decode(' . $params[0] . ', ENT_NOQUOTES, ' . $params[2] . ')'; - - case 'html': - return 'htmlspecialchars_decode(' . $params[0] . ', ENT_QUOTES)'; - - case 'url': - return 'rawurldecode(' . $params[0] . ')'; - - default: - return $params[0]; - } -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.upper.php b/library/Smarty/libs/plugins/modifiercompiler.upper.php deleted file mode 100644 index 52ca4e8ff..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.upper.php +++ /dev/null @@ -1,29 +0,0 @@ -<?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) -{ - if (Smarty::$_MBSTRING) { - return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; - } - // no MBString fallback - return 'strtoupper(' . $params[0] . ')'; -} diff --git a/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php b/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php deleted file mode 100644 index 6bb63247d..000000000 --- a/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php +++ /dev/null @@ -1,47 +0,0 @@ -<?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 - * @param $compiler - * - * @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'; - } - $function = 'wordwrap'; - if (Smarty::$_MBSTRING) { - if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) { - $compiler->parent_compiler->template->compiled->required_plugins['nocache']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php'; - $compiler->template->required_plugins['nocache']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap'; - } else { - $compiler->parent_compiler->template->compiled->required_plugins['compiled']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php'; - $compiler->parent_compiler->template->compiled->required_plugins['compiled']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap'; - } - $function = 'smarty_mb_wordwrap'; - } - - return $function . '(' . $params[0] . ',' . $params[1] . ',' . $params[2] . ',' . $params[3] . ')'; -} diff --git a/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php b/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php deleted file mode 100644 index ad35d11a2..000000000 --- a/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsFilter - */ - -/** - * Smarty trimwhitespace outputfilter plugin - * Trim unnecessary whitespace from HTML markup. - * - * @author Rodney Rehm - * - * @param string $source input string - * - * @return string filtered output - * @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail! - */ -function smarty_outputfilter_trimwhitespace($source) -{ - $store = array(); - $_store = 0; - $_offset = 0; - - // Unify Line-Breaks to \n - $source = preg_replace("/\015\012|\015|\012/", "\n", $source); - - // capture Internet Explorer Conditional Comments - if (preg_match_all('#<!--\[[^\]]+\]>.*?<!\[[^\]]+\]-->#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) { - foreach ($matches as $match) { - $store[] = $match[0][0]; - $_length = strlen($match[0][0]); - $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; - $source = substr_replace($source, $replace, $match[0][1] - $_offset, $_length); - - $_offset += $_length - strlen($replace); - $_store ++; - } - } - - // Strip all HTML-Comments - // yes, even the ones in <script> - see http://stackoverflow.com/a/808850/515124 - $source = preg_replace('#<!--.*?-->#ms', '', $source); - - // capture html elements not to be messed with - $_offset = 0; - if (preg_match_all('#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) { - foreach ($matches as $match) { - $store[] = $match[0][0]; - $_length = strlen($match[0][0]); - $replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; - $source = substr_replace($source, $replace, $match[0][1] - $_offset, $_length); - - $_offset += $_length - strlen($replace); - $_store ++; - } - } - - $expressions = array( - // replace multiple spaces between tags by a single space - // can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements - '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2', - // remove spaces between attributes (but not in attribute values!) - '#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5', - // note: for some very weird reason trim() seems to remove spaces inside attributes. - // maybe a \0 byte or something is interfering? - '#^\s+<#Ss' => '<', - '#>\s+$#Ss' => '>', - ); - - $source = preg_replace(array_keys($expressions), array_values($expressions), $source); - // note: for some very weird reason trim() seems to remove spaces inside attributes. - // maybe a \0 byte or something is interfering? - // $source = trim( $source ); - - $_offset = 0; - if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) { - foreach ($matches as $match) { - $_length = strlen($match[0][0]); - $replace = $store[$match[1][0]]; - $source = substr_replace($source, $replace, $match[0][1] + $_offset, $_length); - - $_offset += strlen($replace) - $_length; - $_store ++; - } - } - - return $source; -} diff --git a/library/Smarty/libs/plugins/shared.escape_special_chars.php b/library/Smarty/libs/plugins/shared.escape_special_chars.php deleted file mode 100644 index d3bd756b1..000000000 --- a/library/Smarty/libs/plugins/shared.escape_special_chars.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -/** - * Smarty shared plugin - * - * @package Smarty - * @subpackage PluginsShared - */ - -if (version_compare(PHP_VERSION, '5.2.3', '>=')) { - /** - * 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 $string text that should by escaped - * - * @return string - */ - function smarty_function_escape_special_chars($string) - { - if (!is_array($string)) { - $string = htmlspecialchars($string, ENT_COMPAT, Smarty::$_CHARSET, false); - } - - return $string; - } -} else { - /** - * 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 $string text that should by escaped - * - * @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; - } -} diff --git a/library/Smarty/libs/plugins/shared.literal_compiler_param.php b/library/Smarty/libs/plugins/shared.literal_compiler_param.php deleted file mode 100644 index 47d728a76..000000000 --- a/library/Smarty/libs/plugins/shared.literal_compiler_param.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsShared - */ - -/** - * evaluate compiler parameter - * - * @param array $params parameter array as given to the compiler function - * @param integer $index array index of the parameter to convert - * @param mixed $default value to be returned if the parameter is not present - * - * @return mixed evaluated value of parameter or $default - * @throws SmartyException if parameter is not a literal (but an expression, variable, …) - * @author Rodney Rehm - */ -function smarty_literal_compiler_param($params, $index, $default = null) -{ - // not set, go default - if (!isset($params[$index])) { - return $default; - } - // test if param is a literal - if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[$index])) { - throw new SmartyException('$param[' . $index . '] is not a literal and is thus not evaluatable at compile time'); - } - - $t = null; - eval("\$t = " . $params[$index] . ";"); - - return $t; -} diff --git a/library/Smarty/libs/plugins/shared.make_timestamp.php b/library/Smarty/libs/plugins/shared.make_timestamp.php deleted file mode 100644 index f87d40c7e..000000000 --- a/library/Smarty/libs/plugins/shared.make_timestamp.php +++ /dev/null @@ -1,43 +0,0 @@ -<?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 DateTime|int|string $string date object, timestamp or string that can be converted using strtotime() - * - * @return int - */ -function smarty_make_timestamp($string) -{ - if (empty($string)) { - // use "now": - return time(); - } elseif ($string instanceof DateTime || (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface)) { - return (int) $string->format('U'); // PHP 5.2 BC - } elseif (strlen($string) == 14 && ctype_digit($string)) { - // 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/library/Smarty/libs/plugins/shared.mb_str_replace.php b/library/Smarty/libs/plugins/shared.mb_str_replace.php deleted file mode 100644 index a5682ed30..000000000 --- a/library/Smarty/libs/plugins/shared.mb_str_replace.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php -/** - * Smarty shared plugin - * - * @package Smarty - * @subpackage PluginsShared - */ -if (!function_exists('smarty_mb_str_replace')) { - - /** - * Multibyte string replace - * - * @param string $search the string to be searched - * @param string $replace the replacement string - * @param string $subject the source string - * @param int &$count number of matches found - * - * @return string replaced string - * @author Rodney Rehm - */ - 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; - } -} diff --git a/library/Smarty/libs/plugins/shared.mb_unicode.php b/library/Smarty/libs/plugins/shared.mb_unicode.php deleted file mode 100644 index 0f790b56a..000000000 --- a/library/Smarty/libs/plugins/shared.mb_unicode.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -/** - * Smarty shared plugin - * - * @package Smarty - * @subpackage PluginsShared - */ - -/** - * convert characters to their decimal unicode equivalents - * - * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration - * - * @param string $string characters to calculate unicode of - * @param string $encoding encoding of $string, if null mb_internal_encoding() is used - * - * @return array sequence of unicodes - * @author Rodney Rehm - */ -function smarty_mb_to_unicode($string, $encoding = null) -{ - if ($encoding) { - $expanded = mb_convert_encoding($string, "UTF-32BE", $encoding); - } else { - $expanded = mb_convert_encoding($string, "UTF-32BE"); - } - - return unpack("N*", $expanded); -} - -/** - * convert unicodes to the character of given encoding - * - * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration - * - * @param integer|array $unicode single unicode or list of unicodes to convert - * @param string $encoding encoding of returned string, if null mb_internal_encoding() is used - * - * @return string unicode as character sequence in given $encoding - * @author Rodney Rehm - */ -function smarty_mb_from_unicode($unicode, $encoding = null) -{ - $t = ''; - if (!$encoding) { - $encoding = mb_internal_encoding(); - } - foreach ((array) $unicode as $utf32be) { - $character = pack("N*", $utf32be); - $t .= mb_convert_encoding($character, $encoding, "UTF-32BE"); - } - - return $t; -} diff --git a/library/Smarty/libs/plugins/shared.mb_wordwrap.php b/library/Smarty/libs/plugins/shared.mb_wordwrap.php deleted file mode 100644 index 31f4acf01..000000000 --- a/library/Smarty/libs/plugins/shared.mb_wordwrap.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php -/** - * Smarty shared plugin - * - * @package Smarty - * @subpackage PluginsShared - */ - -if (!function_exists('smarty_mb_wordwrap')) { - - /** - * Wrap a string to a given number of characters - * - * @link http://php.net/manual/en/function.wordwrap.php for similarity - * - * @param string $str the string to wrap - * @param int $width the width of the output - * @param string $break the character used to break the line - * @param boolean $cut ignored parameter, just for the sake of - * - * @return string wrapped string - * @author Rodney Rehm - */ - function smarty_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false) - { - // break words into tokens using white space as a delimiter - $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE); - $length = 0; - $t = ''; - $_previous = false; - $_space = false; - - foreach ($tokens as $_token) { - $token_length = mb_strlen($_token, Smarty::$_CHARSET); - $_tokens = array($_token); - if ($token_length > $width) { - if ($cut) { - $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE); - } - } - - foreach ($_tokens as $token) { - $_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token); - $token_length = mb_strlen($token, Smarty::$_CHARSET); - $length += $token_length; - - if ($length > $width) { - // remove space before inserted break - if ($_previous) { - $t = mb_substr($t, 0, - 1, Smarty::$_CHARSET); - } - - if (!$_space) { - // add the break before the token - if (!empty($t)) { - $t .= $break; - } - $length = $token_length; - } - } elseif ($token == "\n") { - // hard break must reset counters - $_previous = 0; - $length = 0; - } - $_previous = $_space; - // add the token - $t .= $token; - } - } - - return $t; - } -} diff --git a/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php b/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php deleted file mode 100644 index aecd1e7e7..000000000 --- a/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -/** - * Smarty plugin - * - * @package Smarty - * @subpackage PluginsFilter - */ - -/** - * Smarty htmlspecialchars variablefilter plugin - * - * @param string $source input string - * - * @return string filtered output - */ -function smarty_variablefilter_htmlspecialchars($source) -{ - return htmlspecialchars($source, ENT_QUOTES, Smarty::$_CHARSET); -} |