/web/acc/manager/vnstat/smarty/plugins/block.textformat.php |
---|
0,0 → 1,121 |
<?php |
/** |
* Smarty plugin to format text blocks |
* |
* @package Smarty |
* @subpackage PluginsBlock |
*/ |
/** |
* Smarty {textformat}{/textformat} block plugin |
* Type: block function |
* Name: textformat |
* Purpose: format text a certain way with preset styles |
* or custom wrap/indent settings |
* Params: |
* |
* - style - string (email) |
* - indent - integer (0) |
* - wrap - integer (80) |
* - wrap_char - string ("\n") |
* - indent_char - string (" ") |
* - wrap_boundary - boolean (true) |
* |
* @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> |
* @throws \SmartyException |
*/ |
function smarty_block_textformat($params, $content, Smarty_Internal_Template $template, &$repeat) |
{ |
if (is_null($content)) { |
return; |
} |
if (Smarty::$_MBSTRING) { |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_modifier_mb_wordwrap', |
'file' => SMARTY_PLUGINS_DIR . 'modifier.mb_wordwrap.php' |
) |
) |
); |
} |
$style = null; |
$indent = 0; |
$indent_first = 0; |
$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) { |
$_paragraph = smarty_modifier_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; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/function.counter.php |
---|
0,0 → 1,62 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {counter} function plugin |
* Type: function |
* Name: counter |
* 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; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.cycle.php |
---|
0,0 → 1,92 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {cycle} function plugin |
* Type: function |
* Name: cycle |
* Date: May 3, 2002 |
* Purpose: cycle through given values |
* Params: |
* |
* - name - name of cycle (optional) |
* - values - comma separated list of values to cycle, or an array of values to cycle |
* (this can be left out for subsequent calls) |
* - reset - boolean - resets given var to true |
* - print - boolean - print var or not. default is true |
* - advance - boolean - whether or not to advance the cycle |
* - delimiter - the value delimiter, default is "," |
* - assign - boolean, assigns to template var instead of printed. |
* |
* Examples: |
* |
* {cycle values="#eeeeee,#d0d0d0d"} |
* {cycle name=row values="one,two,three" reset=true} |
* {cycle name=row} |
* |
* @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; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.fetch.php |
---|
0,0 → 1,204 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {fetch} plugin |
* Type: function |
* Name: fetch |
* Purpose: fetch file, web or ftp data and display results |
* |
* @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch} |
* (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; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_checkboxes.php |
---|
0,0 → 1,286 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_checkboxes} function plugin |
* File: function.html_checkboxes.php |
* Type: function |
* Name: html_checkboxes |
* Date: 24.Feb.2003 |
* Purpose: Prints out a list of checkbox input types |
* Examples: |
* |
* {html_checkboxes values=$ids output=$names} |
* {html_checkboxes values=$ids name='box' separator='<br>' output=$names} |
* {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names} |
* |
* Params: |
* |
* - name (optional) - string default "checkbox" |
* - values (required) - array |
* - options (optional) - associative array |
* - checked (optional) - array default not set |
* - separator (optional) - ie <br> or |
* - output (optional) - the output next to each checkbox |
* - assign (optional) - assign the output as an array to this variable |
* - escape (optional) - escape the content (not value), defaults to true |
* |
* @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} |
* (Smarty online manual) |
* @author Christopher Kvarme <christopher.kvarme@flashjab.com> |
* @author credits to Monte Ohrt <monte at ohrt dot com> |
* @version 1.0 |
* |
* @param array $params parameters |
* @param Smarty_Internal_Template $template template object |
* |
* @return string |
* @uses smarty_function_escape_special_chars() |
* @throws \SmartyException |
*/ |
function smarty_function_html_checkboxes($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
$name = 'checkbox'; |
$values = null; |
$options = null; |
$selected = array(); |
$separator = ''; |
$escape = true; |
$labels = true; |
$label_ids = false; |
$output = null; |
$extra = ''; |
foreach ($params as $_key => $_val) { |
switch ($_key) { |
case 'name': |
case 'separator': |
$$_key = (string)$_val; |
break; |
case 'escape': |
case 'labels': |
case 'label_ids': |
$$_key = (bool)$_val; |
break; |
case 'options': |
$$_key = (array)$_val; |
break; |
case 'values': |
case 'output': |
$$_key = array_values((array)$_val); |
break; |
case 'checked': |
case 'selected': |
if (is_array($_val)) { |
$selected = array(); |
foreach ($_val as $_sel) { |
if (is_object($_sel)) { |
if (method_exists($_sel, '__toString')) { |
$_sel = smarty_function_escape_special_chars((string)$_sel->__toString()); |
} else { |
trigger_error( |
'html_checkboxes: selected attribute contains an object of class \'' . |
get_class($_sel) . '\' without __toString() method', |
E_USER_NOTICE |
); |
continue; |
} |
} else { |
$_sel = smarty_function_escape_special_chars((string)$_sel); |
} |
$selected[ $_sel ] = true; |
} |
} elseif (is_object($_val)) { |
if (method_exists($_val, '__toString')) { |
$selected = smarty_function_escape_special_chars((string)$_val->__toString()); |
} else { |
trigger_error( |
'html_checkboxes: selected attribute is an object of class \'' . get_class($_val) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
} |
} else { |
$selected = smarty_function_escape_special_chars((string)$_val); |
} |
break; |
case 'checkboxes': |
trigger_error( |
'html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', |
E_USER_WARNING |
); |
$options = (array)$_val; |
break; |
case 'assign': |
break; |
case 'strict': |
break; |
case 'disabled': |
case 'readonly': |
if (!empty($params[ 'strict' ])) { |
if (!is_scalar($_val)) { |
trigger_error( |
"html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute", |
E_USER_NOTICE |
); |
} |
if ($_val === true || $_val === $_key) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"'; |
} |
break; |
} |
// omit break; to fall through! |
// no break |
default: |
if (!is_array($_val)) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; |
} else { |
trigger_error("html_checkboxes: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); |
} |
break; |
} |
} |
if (!isset($options) && !isset($values)) { |
return ''; |
} /* raise error here? */ |
$_html_result = array(); |
if (isset($options)) { |
foreach ($options as $_key => $_val) { |
$_html_result[] = |
smarty_function_html_checkboxes_output( |
$name, |
$_key, |
$_val, |
$selected, |
$extra, |
$separator, |
$labels, |
$label_ids, |
$escape |
); |
} |
} else { |
foreach ($values as $_i => $_key) { |
$_val = isset($output[ $_i ]) ? $output[ $_i ] : ''; |
$_html_result[] = |
smarty_function_html_checkboxes_output( |
$name, |
$_key, |
$_val, |
$selected, |
$extra, |
$separator, |
$labels, |
$label_ids, |
$escape |
); |
} |
} |
if (!empty($params[ 'assign' ])) { |
$template->assign($params[ 'assign' ], $_html_result); |
} else { |
return implode("\n", $_html_result); |
} |
} |
/** |
* @param $name |
* @param $value |
* @param $output |
* @param $selected |
* @param $extra |
* @param $separator |
* @param $labels |
* @param $label_ids |
* @param bool $escape |
* |
* @return string |
*/ |
function smarty_function_html_checkboxes_output( |
$name, |
$value, |
$output, |
$selected, |
$extra, |
$separator, |
$labels, |
$label_ids, |
$escape = true |
) { |
$_output = ''; |
if (is_object($value)) { |
if (method_exists($value, '__toString')) { |
$value = (string)$value->__toString(); |
} else { |
trigger_error( |
'html_options: value is an object of class \'' . get_class($value) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
return ''; |
} |
} else { |
$value = (string)$value; |
} |
if (is_object($output)) { |
if (method_exists($output, '__toString')) { |
$output = (string)$output->__toString(); |
} else { |
trigger_error( |
'html_options: output is an object of class \'' . get_class($output) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
return ''; |
} |
} else { |
$output = (string)$output; |
} |
if ($labels) { |
if ($label_ids) { |
$_id = smarty_function_escape_special_chars( |
preg_replace( |
'![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, |
'_', |
$name . '_' . $value |
) |
); |
$_output .= '<label for="' . $_id . '">'; |
} else { |
$_output .= '<label>'; |
} |
} |
$name = smarty_function_escape_special_chars($name); |
$value = smarty_function_escape_special_chars($value); |
if ($escape) { |
$output = smarty_function_escape_special_chars($output); |
} |
$_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"'; |
if ($labels && $label_ids) { |
$_output .= ' id="' . $_id . '"'; |
} |
if (is_array($selected)) { |
if (isset($selected[ $value ])) { |
$_output .= ' checked="checked"'; |
} |
} elseif ($value === $selected) { |
$_output .= ' checked="checked"'; |
} |
$_output .= $extra . ' />' . $output; |
if ($labels) { |
$_output .= '</label>'; |
} |
$_output .= $separator; |
return $_output; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_image.php |
---|
0,0 → 1,158 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_image} function plugin |
* Type: function |
* Name: html_image |
* Date: Feb 24, 2003 |
* Purpose: format HTML tags for the image |
* Examples: {html_image file="/images/masthead.gif"} |
* Output: <img src="/images/masthead.gif" width=400 height=23> |
* Params: |
* |
* - 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) |
* |
* @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, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => 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; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_options.php |
---|
0,0 → 1,230 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_options} function plugin |
* Type: function |
* Name: html_options |
* Purpose: Prints the list of <option> tags generated from |
* the passed parameters |
* Params: |
* |
* - 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 |
* |
* @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 |
* |
* @param \Smarty_Internal_Template $template |
* |
* @return string |
* @uses smarty_function_escape_special_chars() |
* @throws \SmartyException |
*/ |
function smarty_function_html_options($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
$name = 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! |
// no break |
default: |
if (!is_array($_val)) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; |
} else { |
trigger_error("html_options: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); |
} |
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; |
} |
/** |
* @param $key |
* @param $value |
* @param $selected |
* @param $id |
* @param $class |
* @param $idx |
* |
* @return string |
*/ |
function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx) |
{ |
if (!is_array($value)) { |
$_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; |
} |
/** |
* @param $key |
* @param $values |
* @param $selected |
* @param $id |
* @param $class |
* @param $idx |
* |
* @return string |
*/ |
function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx) |
{ |
$optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n"; |
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; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_radios.php |
---|
0,0 → 1,266 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_radios} function plugin |
* File: function.html_radios.php |
* Type: function |
* Name: html_radios |
* Date: 24.Feb.2003 |
* Purpose: Prints out a list of radio input types |
* Params: |
* |
* - 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 |
* |
* Examples: |
* |
* {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} |
* |
* @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() |
* @throws \SmartyException |
*/ |
function smarty_function_html_radios($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
$name = '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! |
// no break |
default: |
if (!is_array($_val)) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; |
} else { |
trigger_error("html_radios: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); |
} |
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); |
} |
} |
/** |
* @param $name |
* @param $value |
* @param $output |
* @param $selected |
* @param $extra |
* @param $separator |
* @param $labels |
* @param $label_ids |
* @param $escape |
* |
* @return string |
*/ |
function smarty_function_html_radios_output( |
$name, |
$value, |
$output, |
$selected, |
$extra, |
$separator, |
$labels, |
$label_ids, |
$escape |
) { |
$_output = ''; |
if (is_object($value)) { |
if (method_exists($value, '__toString')) { |
$value = (string)$value->__toString(); |
} 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; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_select_date.php |
---|
0,0 → 1,388 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_select_date} plugin |
* Type: function |
* Name: html_select_date |
* Purpose: Prints the dropdowns for date selection. |
* ChangeLog: |
* |
* - 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 |
* |
* @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 |
* |
* @param \Smarty_Internal_Template $template |
* |
* @return string |
* @throws \SmartyException |
*/ |
function smarty_function_html_select_date($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
// generate timestamps used for month names only |
static $_month_timestamps = null; |
static $_current_year = null; |
if ($_month_timestamps === null) { |
$_current_year = date('Y'); |
$_month_timestamps = array(); |
for ($i = 1; $i <= 12; $i++) { |
$_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) { |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_make_timestamp', |
'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php' |
) |
) |
); |
$time = smarty_make_timestamp($_value); |
} |
break; |
case 'month_names': |
if (is_array($_value) && count($_value) === 12) { |
$$_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; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_select_time.php |
---|
0,0 → 1,354 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_select_time} function plugin |
* Type: function |
* Name: html_select_time |
* Purpose: Prints the dropdowns for time selection |
* |
* @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time} |
* (Smarty online manual) |
* @author Roberto Berto <roberto@berto.net> |
* @author Monte Ohrt <monte AT ohrt DOT com> |
* |
* @param array $params parameters |
* |
* @param \Smarty_Internal_Template $template |
* |
* @return string |
* @uses smarty_make_timestamp() |
* @throws \SmartyException |
*/ |
function smarty_function_html_select_time($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
$prefix = 'Time_'; |
$field_array = null; |
$field_separator = "\n"; |
$option_separator = "\n"; |
$time = null; |
$display_hours = true; |
$display_minutes = true; |
$display_seconds = true; |
$display_meridian = true; |
$hour_format = '%02d'; |
$hour_value_format = '%02d'; |
$minute_format = '%02d'; |
$minute_value_format = '%02d'; |
$second_format = '%02d'; |
$second_value_format = '%02d'; |
$hour_size = null; |
$minute_size = null; |
$second_size = null; |
$meridian_size = null; |
$all_empty = null; |
$hour_empty = null; |
$minute_empty = null; |
$second_empty = null; |
$meridian_empty = null; |
$all_id = null; |
$hour_id = null; |
$minute_id = null; |
$second_id = null; |
$meridian_id = null; |
$use_24_hours = true; |
$minute_interval = 1; |
$second_interval = 1; |
$extra_attrs = ''; |
$all_extra = null; |
$hour_extra = null; |
$minute_extra = null; |
$second_extra = null; |
$meridian_extra = null; |
foreach ($params as $_key => $_value) { |
switch ($_key) { |
case 'time': |
if (!is_array($_value) && $_value !== null) { |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_make_timestamp', |
'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php' |
) |
) |
); |
$time = smarty_make_timestamp($_value); |
} |
break; |
case 'prefix': |
case 'field_array': |
case 'field_separator': |
case 'option_separator': |
case 'all_extra': |
case 'hour_extra': |
case 'minute_extra': |
case 'second_extra': |
case 'meridian_extra': |
case 'all_empty': |
case 'hour_empty': |
case 'minute_empty': |
case 'second_empty': |
case 'meridian_empty': |
case 'all_id': |
case 'hour_id': |
case 'minute_id': |
case 'second_id': |
case 'meridian_id': |
case 'hour_format': |
case 'hour_value_format': |
case 'minute_format': |
case 'minute_value_format': |
case 'second_format': |
case 'second_value_format': |
$$_key = (string)$_value; |
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; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_table.php |
---|
0,0 → 1,164 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_table} function plugin |
* Type: function |
* Name: html_table |
* Date: Feb 17, 2003 |
* Purpose: make an html table from an array of data |
* Params: |
* |
* - 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) |
* |
* Examples: |
* |
* {table loop=$data} |
* {table loop=$data cols=4 tr_attr='"bgcolor=red"'} |
* {table loop=$data cols="first,second,third" tr_attr=$colors} |
* |
* @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; |
} |
/** |
* @param $name |
* @param $var |
* @param $no |
* |
* @return string |
*/ |
function smarty_function_html_table_cycle($name, $var, $no) |
{ |
if (!is_array($var)) { |
$ret = $var; |
} else { |
$ret = $var[ $no % count($var) ]; |
} |
return ($ret) ? ' ' . $ret : ''; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.mailto.php |
---|
0,0 → 1,137 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {mailto} function plugin |
* Type: function |
* Name: mailto |
* Date: May 21, 2002 |
* Purpose: automate mailto address link creation, and optionally encode them. |
* Params: |
* |
* - 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 hexadecimal (no javascript) |
* - cc - (optional) - address(es) to carbon copy |
* - bcc - (optional) - address(es) to blind carbon copy |
* - subject - (optional) - e-mail subject |
* - newsgroups - (optional) - newsgroup(s) to post to |
* - followupto - (optional) - address(es) to follow up to |
* - extra - (optional) - extra tags for the href link |
* |
* Examples: |
* |
* {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"'} |
* |
* @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; |
// no break |
default: |
} |
} |
if ($mail_parms) { |
$address .= '?' . join('&', $mail_parms); |
} |
$encode = (empty($params[ 'encode' ])) ? 'none' : $params[ 'encode' ]; |
if (!isset($_allowed_encoding[ $encode ])) { |
trigger_error( |
"mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", |
E_USER_WARNING |
); |
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>'; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/function.math.php |
---|
0,0 → 1,112 |
<?php |
/** |
* Smarty plugin |
* This plugin is only for Smarty2 BC |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {math} function plugin |
* Type: function |
* Name: math |
* 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; |
} |
// disallow backticks |
if (strpos($equation, '`') !== false) { |
trigger_error("math: backtick character not allowed in equation", E_USER_WARNING); |
return; |
} |
// also disallow dollar signs |
if (strpos($equation, '$') !== false) { |
trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING); |
return; |
} |
foreach ($params as $key => $val) { |
if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') { |
// make sure value is not empty |
if (strlen($val) === 0) { |
trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING); |
return; |
} |
if (!is_numeric($val)) { |
trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING); |
return; |
} |
} |
} |
// match all vars in equation, make sure all are passed |
preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match); |
foreach ($match[ 1 ] as $curr_var) { |
if ($curr_var && !isset($params[ $curr_var ]) && !isset($_allowed_funcs[ $curr_var ])) { |
trigger_error( |
"math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'", |
E_USER_WARNING |
); |
return; |
} |
} |
foreach ($params as $key => $val) { |
if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') { |
$equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation); |
} |
} |
$smarty_math_result = null; |
eval("\$smarty_math_result = " . $equation . ";"); |
if (empty($params[ 'format' ])) { |
if (empty($params[ 'assign' ])) { |
return $smarty_math_result; |
} 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)); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.capitalize.php |
---|
0,0 → 1,145 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty capitalize modifier plugin |
* Type: modifier |
* Name: capitalize |
* 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 |
*/ |
/** |
* @param $matches |
* |
* @return string |
*/ |
function smarty_mod_cap_mbconvert_cb($matches) |
{ |
return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 2 ]), MB_CASE_UPPER, Smarty::$_CHARSET); |
} |
/** |
* @param $matches |
* |
* @return string |
*/ |
function smarty_mod_cap_mbconvert2_cb($matches) |
{ |
return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]), MB_CASE_UPPER, Smarty::$_CHARSET); |
} |
/** |
* @param $matches |
* |
* @return string |
*/ |
function smarty_mod_cap_ucfirst_cb($matches) |
{ |
return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 2 ])); |
} |
/** |
* @param $matches |
* |
* @return string |
*/ |
function smarty_mod_cap_ucfirst2_cb($matches) |
{ |
return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 3 ])); |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.date_format.php |
---|
0,0 → 1,85 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty date_format modifier plugin |
* Type: modifier |
* Name: date_format |
* Purpose: format datestamps via strftime |
* Input: |
* - string: input date string |
* - format: strftime format for output |
* - default_date: default date if $string is empty |
* |
* @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 |
*/ |
static $is_loaded = false; |
if (!$is_loaded) { |
if (!is_callable('smarty_make_timestamp')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'; |
} |
$is_loaded = true; |
} |
if (!empty($string) && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') { |
$timestamp = smarty_make_timestamp($string); |
} elseif (!empty($default_date)) { |
$timestamp = smarty_make_timestamp($default_date); |
} else { |
return; |
} |
if ($formatter === 'strftime' || ($formatter === 'auto' && strpos($format, '%') !== false)) { |
if (Smarty::$_IS_WINDOWS) { |
$_win_from = array( |
'%D', |
'%h', |
'%n', |
'%r', |
'%R', |
'%t', |
'%T' |
); |
$_win_to = array( |
'%m/%d/%y', |
'%b', |
"\n", |
'%I:%M:%S %p', |
'%H:%M', |
"\t", |
'%H:%M:%S' |
); |
if (strpos($format, '%e') !== false) { |
$_win_from[] = '%e'; |
$_win_to[] = sprintf('%\' 2d', date('j', $timestamp)); |
} |
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); |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.debug_print_var.php |
---|
0,0 → 1,103 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage Debug |
*/ |
/** |
* Smarty debug_print_var modifier plugin |
* Type: modifier |
* Name: debug_print_var |
* 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 . '"', ENT_QUOTES, Smarty::$_CHARSET); |
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, ENT_QUOTES, Smarty::$_CHARSET); |
} |
return $results; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.escape.php |
---|
0,0 → 1,255 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty escape modifier plugin |
* Type: modifier |
* Name: escape |
* 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; |
static $is_loaded_1 = false; |
static $is_loaded_2 = false; |
if ($_double_encode === null) { |
$_double_encode = version_compare(PHP_VERSION, '5.2.3', '>='); |
} |
if (!$char_set) { |
$char_set = Smarty::$_CHARSET; |
} |
switch ($esc_type) { |
case 'html': |
if ($_double_encode) { |
// 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; |
} |
} |
// no break |
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; |
} |
} |
// no break |
case 'url': |
return rawurlencode($string); |
case 'urlpathinfo': |
return str_replace('%2F', '/', rawurlencode($string)); |
case 'quotes': |
// escape unescaped single quotes |
return preg_replace("%(?<!\\\\)'%", "\\'", $string); |
case 'hex': |
// escape every byte into hex |
// Note that the UTF-8 encoded character ä will be represented as %c3%a4 |
$return = ''; |
$_length = strlen($string); |
for ($x = 0; $x < $_length; $x++) { |
$return .= '%' . bin2hex($string[ $x ]); |
} |
return $return; |
case 'hexentity': |
$return = ''; |
if (Smarty::$_MBSTRING) { |
if (!$is_loaded_1) { |
if (!is_callable('smarty_mb_to_unicode')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'; |
} |
$is_loaded_1 = true; |
} |
$return = ''; |
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { |
$return .= '&#x' . strtoupper(dechex($unicode)) . ';'; |
} |
return $return; |
} |
// no MBString fallback |
$_length = strlen($string); |
for ($x = 0; $x < $_length; $x++) { |
$return .= '&#x' . bin2hex($string[ $x ]) . ';'; |
} |
return $return; |
case 'decentity': |
$return = ''; |
if (Smarty::$_MBSTRING) { |
if (!$is_loaded_1) { |
if (!is_callable('smarty_mb_to_unicode')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'; |
} |
$is_loaded_1 = true; |
} |
$return = ''; |
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { |
$return .= '&#' . $unicode . ';'; |
} |
return $return; |
} |
// no MBString fallback |
$_length = strlen($string); |
for ($x = 0; $x < $_length; $x++) { |
$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) { |
if (!$is_loaded_2) { |
if (!is_callable('smarty_mb_str_replace')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'; |
} |
$is_loaded_2 = true; |
} |
return smarty_mb_str_replace( |
array( |
'@', |
'.' |
), |
array( |
' [AT] ', |
' [DOT] ' |
), |
$string |
); |
} |
// no MBString fallback |
return str_replace( |
array( |
'@', |
'.' |
), |
array( |
' [AT] ', |
' [DOT] ' |
), |
$string |
); |
case 'nonstd': |
// escape non-standard chars, such as ms document quotes |
$return = ''; |
if (Smarty::$_MBSTRING) { |
if (!$is_loaded_1) { |
if (!is_callable('smarty_mb_to_unicode')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'; |
} |
$is_loaded_1 = true; |
} |
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { |
if ($unicode >= 126) { |
$return .= '&#' . $unicode . ';'; |
} 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; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.mb_wordwrap.php |
---|
0,0 → 1,71 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty wordwrap modifier plugin |
* Type: modifier |
* Name: mb_wordwrap |
* Purpose: Wrap a string to a given number of characters |
* |
* @link http://php.net/manual/en/function.wordwrap.php for similarity |
* |
* @param string $str the string to wrap |
* @param int $width the width of the output |
* @param string $break the character used to break the line |
* @param boolean $cut ignored parameter, just for the sake of |
* |
* @return string wrapped string |
* @author Rodney Rehm |
*/ |
function smarty_modifier_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false) |
{ |
// break words into tokens using white space as a delimiter |
$tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE); |
$length = 0; |
$t = ''; |
$_previous = false; |
$_space = false; |
foreach ($tokens as $_token) { |
$token_length = mb_strlen($_token, Smarty::$_CHARSET); |
$_tokens = array($_token); |
if ($token_length > $width) { |
if ($cut) { |
$_tokens = preg_split( |
'!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, |
$_token, |
-1, |
PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE |
); |
} |
} |
foreach ($_tokens as $token) { |
$_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token); |
$token_length = mb_strlen($token, Smarty::$_CHARSET); |
$length += $token_length; |
if ($length > $width) { |
// remove space before inserted break |
if ($_previous) { |
$t = mb_substr($t, 0, -1, Smarty::$_CHARSET); |
} |
if (!$_space) { |
// add the break before the token |
if (!empty($t)) { |
$t .= $break; |
} |
$length = $token_length; |
} |
} elseif ($token === "\n") { |
// hard break must reset counters |
$length = 0; |
} |
$_previous = $_space; |
// add the token |
$t .= $token; |
} |
} |
return $t; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.regex_replace.php |
---|
0,0 → 1,55 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty regex_replace modifier plugin |
* Type: modifier |
* Name: regex_replace |
* 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; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.replace.php |
---|
0,0 → 1,37 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty replace modifier plugin |
* Type: modifier |
* Name: replace |
* 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) |
{ |
static $is_loaded = false; |
if (Smarty::$_MBSTRING) { |
if (!$is_loaded) { |
if (!is_callable('smarty_mb_str_replace')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'; |
} |
$is_loaded = true; |
} |
return smarty_mb_str_replace($search, $replace, $string); |
} |
return str_replace($search, $replace, $string); |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.spacify.php |
---|
0,0 → 1,26 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty spacify modifier plugin |
* Type: modifier |
* Name: spacify |
* Purpose: add spaces between characters in a string |
* |
* @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual) |
* @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)); |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.truncate.php |
---|
0,0 → 1,62 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty truncate modifier plugin |
* Type: modifier |
* Name: truncate |
* Purpose: Truncate a string to a certain length if necessary, |
* optionally splitting in the middle of a word, and |
* appending the $etc string or inserting $etc into the middle. |
* |
* @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; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.cat.php |
---|
0,0 → 1,28 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty cat modifier plugin |
* Type: modifier |
* Name: cat |
* Date: Feb 24, 2003 |
* Purpose: catenate a value to a variable |
* Input: string to catenate |
* Example: {$var|cat:"foo"} |
* |
* @link http://smarty.php.net/manual/en/language.modifier.cat.php cat |
* (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_cat($params) |
{ |
return '(' . implode(').(', $params) . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.count_characters.php |
---|
0,0 → 1,32 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty count_characters modifier plugin |
* Type: modifier |
* Name: count_characters |
* Purpose: count the number of characters in a text |
* |
* @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online |
* manual) |
* @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 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.count_paragraphs.php |
---|
0,0 → 1,26 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty count_paragraphs modifier plugin |
* Type: modifier |
* Name: count_paragraphs |
* Purpose: count the number of paragraphs in a text |
* |
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php |
* 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)'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.count_sentences.php |
---|
0,0 → 1,26 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty count_sentences modifier plugin |
* Type: modifier |
* Name: count_sentences |
* Purpose: count the number of sentences in a text |
* |
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php |
* 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)'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.count_words.php |
---|
0,0 → 1,31 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty count_words modifier plugin |
* Type: modifier |
* Name: count_words |
* Purpose: count the number of words in a text |
* |
* @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual) |
* @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 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.default.php |
---|
0,0 → 1,32 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty default modifier plugin |
* Type: modifier |
* Name: default |
* Purpose: designate default value for empty variables |
* |
* @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual) |
* @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; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.escape.php |
---|
0,0 → 1,112 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty escape modifier plugin |
* Type: modifier |
* Name: escape |
* Purpose: escape string for output |
* |
* @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual) |
* @author Rodney Rehm |
* |
* @param array $params parameters |
* @param Smarty_Internal_TemplateCompilerBase $compiler |
* |
* @return string with compiled code |
* @throws \SmartyException |
*/ |
function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
static $_double_encode = null; |
static $is_loaded = false; |
$compiler->template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_literal_compiler_param', |
'file' => SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php' |
) |
) |
); |
if ($_double_encode === null) { |
$_double_encode = version_compare(PHP_VERSION, '5.2.3', '>='); |
} |
try { |
$esc_type = smarty_literal_compiler_param($params, 1, 'html'); |
$char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET); |
$double_encode = smarty_literal_compiler_param($params, 3, true); |
if (!$char_set) { |
$char_set = Smarty::$_CHARSET; |
} |
switch ($esc_type) { |
case 'html': |
if ($_double_encode) { |
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 |
} |
// no break |
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 |
} |
// no break |
case 'url': |
return 'rawurlencode(' . $params[ 0 ] . ')'; |
case 'urlpathinfo': |
return 'str_replace("%2F", "/", rawurlencode(' . $params[ 0 ] . '))'; |
case 'quotes': |
// escape unescaped single quotes |
return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[ 0 ] . ')'; |
case 'javascript': |
// escape quotes and backslashes, newlines, etc. |
return 'strtr(' . |
$params[ 0 ] . |
', 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->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'file' ] = |
SMARTY_PLUGINS_DIR . 'modifier.escape.php'; |
$compiler->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'function' ] = |
'smarty_modifier_escape'; |
} else { |
$compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'file' ] = |
SMARTY_PLUGINS_DIR . 'modifier.escape.php'; |
$compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'function' ] = |
'smarty_modifier_escape'; |
} |
return 'smarty_modifier_escape(' . join(', ', $params) . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.from_charset.php |
---|
0,0 → 1,30 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty from_charset modifier plugin |
* Type: modifier |
* Name: from_charset |
* 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 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.indent.php |
---|
0,0 → 1,30 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty indent modifier plugin |
* Type: modifier |
* Name: indent |
* 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 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.lower.php |
---|
0,0 → 1,29 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty lower modifier plugin |
* Type: modifier |
* Name: lower |
* 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 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.noprint.php |
---|
0,0 → 1,20 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty noprint modifier plugin |
* Type: modifier |
* Name: noprint |
* Purpose: return an empty string |
* |
* @author Uwe Tews |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_noprint() |
{ |
return "''"; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.string_format.php |
---|
0,0 → 1,24 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty string_format modifier plugin |
* Type: modifier |
* Name: string_format |
* Purpose: format strings via sprintf |
* |
* @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_string_format($params) |
{ |
return 'sprintf(' . $params[ 1 ] . ',' . $params[ 0 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.strip.php |
---|
0,0 → 1,30 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty strip modifier plugin |
* Type: modifier |
* Name: strip |
* Purpose: Replace all repeated spaces, newlines, tabs |
* with a single space or supplied replacement string. |
* Example: {$var|strip} {$var|strip:" "} |
* Date: September 25th, 2002 |
* |
* @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual) |
* @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]})"; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.strip_tags.php |
---|
0,0 → 1,28 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty strip_tags modifier plugin |
* Type: modifier |
* Name: strip_tags |
* Purpose: strip html tags from text |
* |
* @link http://www.smarty.net/docs/en/language.modifier.strip.tags.tpl strip_tags (Smarty online manual) |
* @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 ] . ')'; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.to_charset.php |
---|
0,0 → 1,30 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty to_charset modifier plugin |
* Type: modifier |
* Name: to_charset |
* 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) . '")'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.unescape.php |
---|
0,0 → 1,44 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty unescape modifier plugin |
* Type: modifier |
* Name: unescape |
* 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 ]; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.upper.php |
---|
0,0 → 1,28 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty upper modifier plugin |
* Type: modifier |
* Name: lower |
* 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 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.wordwrap.php |
---|
0,0 → 1,39 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty wordwrap modifier plugin |
* Type: modifier |
* Name: wordwrap |
* Purpose: wrap a string of text at a given length |
* |
* @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* |
* @return string with compiled code |
* @throws \SmartyException |
*/ |
function smarty_modifiercompiler_wordwrap($params, Smarty_Internal_TemplateCompilerBase $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) { |
$function = $compiler->getPlugin('mb_wordwrap', 'modifier'); |
} |
return $function . '(' . $params[ 0 ] . ',' . $params[ 1 ] . ',' . $params[ 2 ] . ',' . $params[ 3 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/outputfilter.trimwhitespace.php |
---|
0,0 → 1,89 |
<?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 and KnockoutJS Conditional Comments |
if (preg_match_all( |
'#<!--((\[[^\]]+\]>.*?<!\[[^\]]+\])|(\s*/?ko\s+.+))-->#is', |
$source, |
$matches, |
PREG_OFFSET_CAPTURE | PREG_SET_ORDER |
) |
) { |
foreach ($matches as $match) { |
$store[] = $match[ 0 ][ 0 ]; |
$_length = strlen($match[ 0 ][ 0 ]); |
$replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; |
$source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length); |
$_offset += $_length - strlen($replace); |
$_store++; |
} |
} |
// 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; |
} |
/web/acc/manager/vnstat/smarty/plugins/shared.escape_special_chars.php |
---|
0,0 → 1,32 |
<?php |
/** |
* Smarty shared plugin |
* |
* @package Smarty |
* @subpackage PluginsShared |
*/ |
/** |
* escape_special_chars common function |
* Function: smarty_function_escape_special_chars |
* Purpose: used by other smarty functions to escape |
* special chars except for already escaped ones |
* |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param string $string text that should by escaped |
* |
* @return string |
*/ |
function smarty_function_escape_special_chars($string) |
{ |
if (!is_array($string)) { |
if (version_compare(PHP_VERSION, '5.2.3', '>=')) { |
$string = htmlspecialchars($string, ENT_COMPAT, Smarty::$_CHARSET, false); |
} else { |
$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; |
} |
/web/acc/manager/vnstat/smarty/plugins/shared.literal_compiler_param.php |
---|
0,0 → 1,35 |
<?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; |
} |
/web/acc/manager/vnstat/smarty/plugins/shared.make_timestamp.php |
---|
0,0 → 1,49 |
<?php |
/** |
* Smarty shared plugin |
* |
* @package Smarty |
* @subpackage PluginsShared |
*/ |
/** |
* Function: smarty_make_timestamp |
* Purpose: used by other smarty functions to make a timestamp from a string. |
* |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @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; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/shared.mb_str_replace.php |
---|
0,0 → 1,53 |
<?php |
/** |
* Smarty shared plugin |
* |
* @package Smarty |
* @subpackage PluginsShared |
*/ |
if (!function_exists('smarty_mb_str_replace')) { |
/** |
* Multibyte string replace |
* |
* @param string|string[] $search the string to be searched |
* @param string|string[] $replace the replacement string |
* @param string $subject the source string |
* @param int &$count number of matches found |
* |
* @return string replaced string |
* @author Rodney Rehm |
*/ |
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; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/shared.mb_unicode.php |
---|
0,0 → 1,51 |
<?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; |
} |
/web/acc/manager/vnstat/smarty/plugins/variablefilter.htmlspecialchars.php |
---|
0,0 → 1,19 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFilter |
*/ |
/** |
* Smarty htmlspecialchars variablefilter plugin |
* |
* @param string $source input string |
* @param \Smarty_Internal_Template $template |
* |
* @return string filtered output |
*/ |
function smarty_variablefilter_htmlspecialchars($source, Smarty_Internal_Template $template) |
{ |
return htmlspecialchars($source, ENT_QUOTES, Smarty::$_CHARSET); |
} |