forked from SimplesIP/pabx-app
bruno
1 year ago
71 changed files with 0 additions and 9802 deletions
@ -1,393 +0,0 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* Config_File class. |
||||
* |
||||
* This library is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU Lesser General Public |
||||
* License as published by the Free Software Foundation; either |
||||
* version 2.1 of the License, or (at your option) any later version. |
||||
* |
||||
* This library is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
||||
* Lesser General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Lesser General Public |
||||
* License along with this library; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
||||
* |
||||
* For questions, help, comments, discussion, etc., please join the |
||||
* Smarty mailing list. Send a blank e-mail to |
||||
* smarty-discussion-subscribe@googlegroups.com |
||||
* |
||||
* @link http://www.smarty.net/ |
||||
* @version 2.6.24 |
||||
* @copyright Copyright: 2001-2005 New Digital Group, Inc. |
||||
* @author Andrei Zmievski <andrei@php.net> |
||||
* @access public |
||||
* @package Smarty |
||||
*/ |
||||
|
||||
/* $Id: Config_File.class.php 3144 2009-05-14 13:18:50Z monte.ohrt $ */ |
||||
|
||||
/** |
||||
* Config file reading class |
||||
* @package Smarty |
||||
*/ |
||||
class Config_File { |
||||
/**#@+ |
||||
* Options |
||||
* @var boolean |
||||
*/ |
||||
/** |
||||
* Controls whether variables with the same name overwrite each other. |
||||
*/ |
||||
var $overwrite = true; |
||||
|
||||
/** |
||||
* Controls whether config values of on/true/yes and off/false/no get |
||||
* converted to boolean values automatically. |
||||
*/ |
||||
var $booleanize = true; |
||||
|
||||
/** |
||||
* Controls whether hidden config sections/vars are read from the file. |
||||
*/ |
||||
var $read_hidden = true; |
||||
|
||||
/** |
||||
* Controls whether or not to fix mac or dos formatted newlines. |
||||
* If set to true, \r or \r\n will be changed to \n. |
||||
*/ |
||||
var $fix_newlines = true; |
||||
/**#@-*/ |
||||
|
||||
/** @access private */ |
||||
var $_config_path = ""; |
||||
var $_config_data = array(); |
||||
/**#@-*/ |
||||
|
||||
/** |
||||
* Constructs a new config file class. |
||||
* |
||||
* @param string $config_path (optional) path to the config files |
||||
*/ |
||||
function Config_File($config_path = NULL) |
||||
{ |
||||
if (isset($config_path)) |
||||
$this->set_path($config_path); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Set the path where configuration files can be found. |
||||
* |
||||
* @param string $config_path path to the config files |
||||
*/ |
||||
function set_path($config_path) |
||||
{ |
||||
if (!empty($config_path)) { |
||||
if (!is_string($config_path) || !file_exists($config_path) || !is_dir($config_path)) { |
||||
$this->_trigger_error_msg("Bad config file path '$config_path'"); |
||||
return; |
||||
} |
||||
if(substr($config_path, -1) != DIRECTORY_SEPARATOR) { |
||||
$config_path .= DIRECTORY_SEPARATOR; |
||||
} |
||||
|
||||
$this->_config_path = $config_path; |
||||
} |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Retrieves config info based on the file, section, and variable name. |
||||
* |
||||
* @param string $file_name config file to get info for |
||||
* @param string $section_name (optional) section to get info for |
||||
* @param string $var_name (optional) variable to get info for |
||||
* @return string|array a value or array of values |
||||
*/ |
||||
function get($file_name, $section_name = NULL, $var_name = NULL) |
||||
{ |
||||
if (empty($file_name)) { |
||||
$this->_trigger_error_msg('Empty config file name'); |
||||
return; |
||||
} else { |
||||
$file_name = $this->_config_path . $file_name; |
||||
if (!isset($this->_config_data[$file_name])) |
||||
$this->load_file($file_name, false); |
||||
} |
||||
|
||||
if (!empty($var_name)) { |
||||
if (empty($section_name)) { |
||||
return $this->_config_data[$file_name]["vars"][$var_name]; |
||||
} else { |
||||
if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name])) |
||||
return $this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name]; |
||||
else |
||||
return array(); |
||||
} |
||||
} else { |
||||
if (empty($section_name)) { |
||||
return (array)$this->_config_data[$file_name]["vars"]; |
||||
} else { |
||||
if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"])) |
||||
return (array)$this->_config_data[$file_name]["sections"][$section_name]["vars"]; |
||||
else |
||||
return array(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Retrieves config info based on the key. |
||||
* |
||||
* @param $file_name string config key (filename/section/var) |
||||
* @return string|array same as get() |
||||
* @uses get() retrieves information from config file and returns it |
||||
*/ |
||||
function &get_key($config_key) |
||||
{ |
||||
list($file_name, $section_name, $var_name) = explode('/', $config_key, 3); |
||||
$result = &$this->get($file_name, $section_name, $var_name); |
||||
return $result; |
||||
} |
||||
|
||||
/** |
||||
* Get all loaded config file names. |
||||
* |
||||
* @return array an array of loaded config file names |
||||
*/ |
||||
function get_file_names() |
||||
{ |
||||
return array_keys($this->_config_data); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Get all section names from a loaded file. |
||||
* |
||||
* @param string $file_name config file to get section names from |
||||
* @return array an array of section names from the specified file |
||||
*/ |
||||
function get_section_names($file_name) |
||||
{ |
||||
$file_name = $this->_config_path . $file_name; |
||||
if (!isset($this->_config_data[$file_name])) { |
||||
$this->_trigger_error_msg("Unknown config file '$file_name'"); |
||||
return; |
||||
} |
||||
|
||||
return array_keys($this->_config_data[$file_name]["sections"]); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Get all global or section variable names. |
||||
* |
||||
* @param string $file_name config file to get info for |
||||
* @param string $section_name (optional) section to get info for |
||||
* @return array an array of variables names from the specified file/section |
||||
*/ |
||||
function get_var_names($file_name, $section = NULL) |
||||
{ |
||||
if (empty($file_name)) { |
||||
$this->_trigger_error_msg('Empty config file name'); |
||||
return; |
||||
} else if (!isset($this->_config_data[$file_name])) { |
||||
$this->_trigger_error_msg("Unknown config file '$file_name'"); |
||||
return; |
||||
} |
||||
|
||||
if (empty($section)) |
||||
return array_keys($this->_config_data[$file_name]["vars"]); |
||||
else |
||||
return array_keys($this->_config_data[$file_name]["sections"][$section]["vars"]); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Clear loaded config data for a certain file or all files. |
||||
* |
||||
* @param string $file_name file to clear config data for |
||||
*/ |
||||
function clear($file_name = NULL) |
||||
{ |
||||
if ($file_name === NULL) |
||||
$this->_config_data = array(); |
||||
else if (isset($this->_config_data[$file_name])) |
||||
$this->_config_data[$file_name] = array(); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Load a configuration file manually. |
||||
* |
||||
* @param string $file_name file name to load |
||||
* @param boolean $prepend_path whether current config path should be |
||||
* prepended to the filename |
||||
*/ |
||||
function load_file($file_name, $prepend_path = true) |
||||
{ |
||||
if ($prepend_path && $this->_config_path != "") |
||||
$config_file = $this->_config_path . $file_name; |
||||
else |
||||
$config_file = $file_name; |
||||
|
||||
ini_set('track_errors', true); |
||||
$fp = @fopen($config_file, "r"); |
||||
if (!is_resource($fp)) { |
||||
$this->_trigger_error_msg("Could not open config file '$config_file'"); |
||||
return false; |
||||
} |
||||
|
||||
$contents = ($size = filesize($config_file)) ? fread($fp, $size) : ''; |
||||
fclose($fp); |
||||
|
||||
$this->_config_data[$config_file] = $this->parse_contents($contents); |
||||
return true; |
||||
} |
||||
|
||||
/** |
||||
* Store the contents of a file manually. |
||||
* |
||||
* @param string $config_file file name of the related contents |
||||
* @param string $contents the file-contents to parse |
||||
*/ |
||||
function set_file_contents($config_file, $contents) |
||||
{ |
||||
$this->_config_data[$config_file] = $this->parse_contents($contents); |
||||
return true; |
||||
} |
||||
|
||||
/** |
||||
* parse the source of a configuration file manually. |
||||
* |
||||
* @param string $contents the file-contents to parse |
||||
*/ |
||||
function parse_contents($contents) |
||||
{ |
||||
if($this->fix_newlines) { |
||||
// fix mac/dos formatted newlines |
||||
$contents = preg_replace('!\r\n?!', "\n", $contents); |
||||
} |
||||
|
||||
$config_data = array(); |
||||
$config_data['sections'] = array(); |
||||
$config_data['vars'] = array(); |
||||
|
||||
/* reference to fill with data */ |
||||
$vars =& $config_data['vars']; |
||||
|
||||
/* parse file line by line */ |
||||
preg_match_all('!^.*\r?\n?!m', $contents, $match); |
||||
$lines = $match[0]; |
||||
for ($i=0, $count=count($lines); $i<$count; $i++) { |
||||
$line = $lines[$i]; |
||||
if (empty($line)) continue; |
||||
|
||||
if ( substr($line, 0, 1) == '[' && preg_match('!^\[(.*?)\]!', $line, $match) ) { |
||||
/* section found */ |
||||
if (substr($match[1], 0, 1) == '.') { |
||||
/* hidden section */ |
||||
if ($this->read_hidden) { |
||||
$section_name = substr($match[1], 1); |
||||
} else { |
||||
/* break reference to $vars to ignore hidden section */ |
||||
unset($vars); |
||||
$vars = array(); |
||||
continue; |
||||
} |
||||
} else { |
||||
$section_name = $match[1]; |
||||
} |
||||
if (!isset($config_data['sections'][$section_name])) |
||||
$config_data['sections'][$section_name] = array('vars' => array()); |
||||
$vars =& $config_data['sections'][$section_name]['vars']; |
||||
continue; |
||||
} |
||||
|
||||
if (preg_match('/^\s*(\.?\w+)\s*=\s*(.*)/s', $line, $match)) { |
||||
/* variable found */ |
||||
$var_name = rtrim($match[1]); |
||||
if (strpos($match[2], '"""') === 0) { |
||||
/* handle multiline-value */ |
||||
$lines[$i] = substr($match[2], 3); |
||||
$var_value = ''; |
||||
while ($i<$count) { |
||||
if (($pos = strpos($lines[$i], '"""')) === false) { |
||||
$var_value .= $lines[$i++]; |
||||
} else { |
||||
/* end of multiline-value */ |
||||
$var_value .= substr($lines[$i], 0, $pos); |
||||
break; |
||||
} |
||||
} |
||||
$booleanize = false; |
||||
|
||||
} else { |
||||
/* handle simple value */ |
||||
$var_value = preg_replace('/^([\'"])(.*)\1$/', '\2', rtrim($match[2])); |
||||
$booleanize = $this->booleanize; |
||||
|
||||
} |
||||
$this->_set_config_var($vars, $var_name, $var_value, $booleanize); |
||||
} |
||||
/* else unparsable line / means it is a comment / means ignore it */ |
||||
} |
||||
return $config_data; |
||||
} |
||||
|
||||
/**#@+ @access private */ |
||||
/** |
||||
* @param array &$container |
||||
* @param string $var_name |
||||
* @param mixed $var_value |
||||
* @param boolean $booleanize determines whether $var_value is converted to |
||||
* to true/false |
||||
*/ |
||||
function _set_config_var(&$container, $var_name, $var_value, $booleanize) |
||||
{ |
||||
if (substr($var_name, 0, 1) == '.') { |
||||
if (!$this->read_hidden) |
||||
return; |
||||
else |
||||
$var_name = substr($var_name, 1); |
||||
} |
||||
|
||||
if (!preg_match("/^[a-zA-Z_]\w*$/", $var_name)) { |
||||
$this->_trigger_error_msg("Bad variable name '$var_name'"); |
||||
return; |
||||
} |
||||
|
||||
if ($booleanize) { |
||||
if (preg_match("/^(on|true|yes)$/i", $var_value)) |
||||
$var_value = true; |
||||
else if (preg_match("/^(off|false|no)$/i", $var_value)) |
||||
$var_value = false; |
||||
} |
||||
|
||||
if (!isset($container[$var_name]) || $this->overwrite) |
||||
$container[$var_name] = $var_value; |
||||
else { |
||||
settype($container[$var_name], 'array'); |
||||
$container[$var_name][] = $var_value; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* @uses trigger_error() creates a PHP warning/error |
||||
* @param string $error_msg |
||||
* @param integer $error_type one of |
||||
*/ |
||||
function _trigger_error_msg($error_msg, $error_type = E_USER_WARNING) |
||||
{ |
||||
trigger_error("Config_File error: $error_msg", $error_type); |
||||
} |
||||
/**#@-*/ |
||||
} |
||||
|
||||
?> |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,157 +0,0 @@
|
||||
{* Smarty *} |
||||
{* debug.tpl, last updated version 2.1.0 *} |
||||
{assign_debug_info} |
||||
{capture assign=debug_output} |
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> |
||||
<head> |
||||
<title>Smarty Debug Console</title> |
||||
{literal} |
||||
<style type="text/css"> |
||||
/* <![CDATA[ */ |
||||
body, h1, h2, td, th, p { |
||||
font-family: sans-serif; |
||||
font-weight: normal; |
||||
font-size: 0.9em; |
||||
margin: 1px; |
||||
padding: 0; |
||||
} |
||||
|
||||
h1 { |
||||
margin: 0; |
||||
text-align: left; |
||||
padding: 2px; |
||||
background-color: #f0c040; |
||||
color: black; |
||||
font-weight: bold; |
||||
font-size: 1.2em; |
||||
} |
||||
|
||||
h2 { |
||||
background-color: #9B410E; |
||||
color: white; |
||||
text-align: left; |
||||
font-weight: bold; |
||||
padding: 2px; |
||||
border-top: 1px solid black; |
||||
} |
||||
|
||||
body { |
||||
background: black; |
||||
} |
||||
|
||||
p, table, div { |
||||
background: #f0ead8; |
||||
} |
||||
|
||||
p { |
||||
margin: 0; |
||||
font-style: italic; |
||||
text-align: center; |
||||
} |
||||
|
||||
table { |
||||
width: 100%; |
||||
} |
||||
|
||||
th, td { |
||||
font-family: monospace; |
||||
vertical-align: top; |
||||
text-align: left; |
||||
width: 50%; |
||||
} |
||||
|
||||
td { |
||||
color: green; |
||||
} |
||||
|
||||
.odd { |
||||
background-color: #eeeeee; |
||||
} |
||||
|
||||
.even { |
||||
background-color: #fafafa; |
||||
} |
||||
|
||||
.exectime { |
||||
font-size: 0.8em; |
||||
font-style: italic; |
||||
} |
||||
|
||||
#table_assigned_vars th { |
||||
color: blue; |
||||
} |
||||
|
||||
#table_config_vars th { |
||||
color: maroon; |
||||
} |
||||
/* ]]> */ |
||||
</style> |
||||
{/literal} |
||||
</head> |
||||
<body> |
||||
|
||||
<h1>Smarty Debug Console</h1> |
||||
|
||||
<h2>included templates & config files (load time in seconds)</h2> |
||||
|
||||
<div> |
||||
{section name=templates loop=$_debug_tpls} |
||||
{section name=indent loop=$_debug_tpls[templates].depth} {/section} |
||||
<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}> |
||||
{$_debug_tpls[templates].filename|escape:html}</font> |
||||
{if isset($_debug_tpls[templates].exec_time)} |
||||
<span class="exectime"> |
||||
({$_debug_tpls[templates].exec_time|string_format:"%.5f"}) |
||||
{if %templates.index% eq 0}(total){/if} |
||||
</span> |
||||
{/if} |
||||
<br /> |
||||
{sectionelse} |
||||
<p>no templates included</p> |
||||
{/section} |
||||
</div> |
||||
|
||||
<h2>assigned template variables</h2> |
||||
|
||||
<table id="table_assigned_vars"> |
||||
{section name=vars loop=$_debug_keys} |
||||
<tr class="{cycle values="odd,even"}"> |
||||
<th>{ldelim}${$_debug_keys[vars]|escape:'html'}{rdelim}</th> |
||||
<td>{$_debug_vals[vars]|@debug_print_var}</td></tr> |
||||
{sectionelse} |
||||
<tr><td><p>no template variables assigned</p></td></tr> |
||||
{/section} |
||||
</table> |
||||
|
||||
<h2>assigned config file variables (outer template scope)</h2> |
||||
|
||||
<table id="table_config_vars"> |
||||
{section name=config_vars loop=$_debug_config_keys} |
||||
<tr class="{cycle values="odd,even"}"> |
||||
<th>{ldelim}#{$_debug_config_keys[config_vars]|escape:'html'}#{rdelim}</th> |
||||
<td>{$_debug_config_vals[config_vars]|@debug_print_var}</td></tr> |
||||
{sectionelse} |
||||
<tr><td><p>no config vars assigned</p></td></tr> |
||||
{/section} |
||||
</table> |
||||
</body> |
||||
</html> |
||||
{/capture} |
||||
{if isset($_smarty_debug_output) and $_smarty_debug_output eq "html"} |
||||
{$debug_output} |
||||
{else} |
||||
<script type="text/javascript"> |
||||
// <![CDATA[ |
||||
if ( self.name == '' ) {ldelim} |
||||
var title = 'Console'; |
||||
{rdelim} |
||||
else {ldelim} |
||||
var title = 'Console_' + self.name; |
||||
{rdelim} |
||||
_smarty_console = window.open("",title.value,"width=680,height=600,resizable,scrollbars=yes"); |
||||
_smarty_console.document.write('{$debug_output|escape:'javascript'}'); |
||||
_smarty_console.document.close(); |
||||
// ]]> |
||||
</script> |
||||
{/if} |
@ -1,67 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* assemble filepath of requested plugin |
||||
* |
||||
* @param string $type |
||||
* @param string $name |
||||
* @return string|false |
||||
*/ |
||||
function smarty_core_assemble_plugin_filepath($params, &$smarty) |
||||
{ |
||||
static $_filepaths_cache = array(); |
||||
|
||||
$_plugin_filename = $params['type'] . '.' . $params['name'] . '.php'; |
||||
if (isset($_filepaths_cache[$_plugin_filename])) { |
||||
return $_filepaths_cache[$_plugin_filename]; |
||||
} |
||||
$_return = false; |
||||
|
||||
foreach ((array)$smarty->plugins_dir as $_plugin_dir) { |
||||
|
||||
$_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; |
||||
|
||||
// see if path is relative |
||||
if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) { |
||||
$_relative_paths[] = $_plugin_dir; |
||||
// relative path, see if it is in the SMARTY_DIR |
||||
if (@is_readable(SMARTY_DIR . $_plugin_filepath)) { |
||||
$_return = SMARTY_DIR . $_plugin_filepath; |
||||
break; |
||||
} |
||||
} |
||||
// try relative to cwd (or absolute) |
||||
if (@is_readable($_plugin_filepath)) { |
||||
$_return = $_plugin_filepath; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if($_return === false) { |
||||
// still not found, try PHP include_path |
||||
if(isset($_relative_paths)) { |
||||
foreach ((array)$_relative_paths as $_plugin_dir) { |
||||
|
||||
$_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; |
||||
|
||||
$_params = array('file_path' => $_plugin_filepath); |
||||
require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); |
||||
if(smarty_core_get_include_path($_params, $smarty)) { |
||||
$_return = $_params['new_file_path']; |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
$_filepaths_cache[$_plugin_filename] = $_return; |
||||
return $_return; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,43 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Smarty assign_smarty_interface core plugin |
||||
* |
||||
* Type: core<br> |
||||
* Name: assign_smarty_interface<br> |
||||
* Purpose: assign the $smarty interface variable |
||||
* @param array Format: null |
||||
* @param Smarty |
||||
*/ |
||||
function smarty_core_assign_smarty_interface($params, &$smarty) |
||||
{ |
||||
if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) { |
||||
return; |
||||
} |
||||
|
||||
$_globals_map = array('g' => 'HTTP_GET_VARS', |
||||
'p' => 'HTTP_POST_VARS', |
||||
'c' => 'HTTP_COOKIE_VARS', |
||||
's' => 'HTTP_SERVER_VARS', |
||||
'e' => 'HTTP_ENV_VARS'); |
||||
|
||||
$_smarty_vars_request = array(); |
||||
|
||||
foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) { |
||||
if (isset($_globals_map[$_c])) { |
||||
$_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]); |
||||
} |
||||
} |
||||
$_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']); |
||||
|
||||
$smarty->_smarty_vars['request'] = $_smarty_vars_request; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,79 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* create full directory structure |
||||
* |
||||
* @param string $dir |
||||
*/ |
||||
|
||||
// $dir |
||||
|
||||
function smarty_core_create_dir_structure($params, &$smarty) |
||||
{ |
||||
if (!file_exists($params['dir'])) { |
||||
$_open_basedir_ini = ini_get('open_basedir'); |
||||
|
||||
if (DIRECTORY_SEPARATOR=='/') { |
||||
/* unix-style paths */ |
||||
$_dir = $params['dir']; |
||||
$_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY); |
||||
$_new_dir = (substr($_dir, 0, 1)=='/') ? '/' : getcwd().'/'; |
||||
if($_use_open_basedir = !empty($_open_basedir_ini)) { |
||||
$_open_basedirs = explode(':', $_open_basedir_ini); |
||||
} |
||||
|
||||
} else { |
||||
/* other-style paths */ |
||||
$_dir = str_replace('\\','/', $params['dir']); |
||||
$_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY); |
||||
if (preg_match('!^((//)|([a-zA-Z]:/))!', $_dir, $_root_dir)) { |
||||
/* leading "//" for network volume, or "[letter]:/" for full path */ |
||||
$_new_dir = $_root_dir[1]; |
||||
/* remove drive-letter from _dir_parts */ |
||||
if (isset($_root_dir[3])) array_shift($_dir_parts); |
||||
|
||||
} else { |
||||
$_new_dir = str_replace('\\', '/', getcwd()).'/'; |
||||
|
||||
} |
||||
|
||||
if($_use_open_basedir = !empty($_open_basedir_ini)) { |
||||
$_open_basedirs = explode(';', str_replace('\\', '/', $_open_basedir_ini)); |
||||
} |
||||
|
||||
} |
||||
|
||||
/* all paths use "/" only from here */ |
||||
foreach ($_dir_parts as $_dir_part) { |
||||
$_new_dir .= $_dir_part; |
||||
|
||||
if ($_use_open_basedir) { |
||||
// do not attempt to test or make directories outside of open_basedir |
||||
$_make_new_dir = false; |
||||
foreach ($_open_basedirs as $_open_basedir) { |
||||
if (substr($_new_dir, 0, strlen($_open_basedir)) == $_open_basedir) { |
||||
$_make_new_dir = true; |
||||
break; |
||||
} |
||||
} |
||||
} else { |
||||
$_make_new_dir = true; |
||||
} |
||||
|
||||
if ($_make_new_dir && !file_exists($_new_dir) && !@mkdir($_new_dir, $smarty->_dir_perms) && !is_dir($_new_dir)) { |
||||
$smarty->trigger_error("problem creating directory '" . $_new_dir . "'"); |
||||
return false; |
||||
} |
||||
$_new_dir .= '/'; |
||||
} |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,61 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Smarty debug_console function plugin |
||||
* |
||||
* Type: core<br> |
||||
* Name: display_debug_console<br> |
||||
* Purpose: display the javascript debug console window |
||||
* @param array Format: null |
||||
* @param Smarty |
||||
*/ |
||||
function smarty_core_display_debug_console($params, &$smarty) |
||||
{ |
||||
// we must force compile the debug template in case the environment |
||||
// changed between separate applications. |
||||
|
||||
if(empty($smarty->debug_tpl)) { |
||||
// set path to debug template from SMARTY_DIR |
||||
$smarty->debug_tpl = SMARTY_DIR . 'debug.tpl'; |
||||
if($smarty->security && is_file($smarty->debug_tpl)) { |
||||
$smarty->secure_dir[] = realpath($smarty->debug_tpl); |
||||
} |
||||
$smarty->debug_tpl = 'file:' . SMARTY_DIR . 'debug.tpl'; |
||||
} |
||||
|
||||
$_ldelim_orig = $smarty->left_delimiter; |
||||
$_rdelim_orig = $smarty->right_delimiter; |
||||
|
||||
$smarty->left_delimiter = '{'; |
||||
$smarty->right_delimiter = '}'; |
||||
|
||||
$_compile_id_orig = $smarty->_compile_id; |
||||
$smarty->_compile_id = null; |
||||
|
||||
$_compile_path = $smarty->_get_compile_path($smarty->debug_tpl); |
||||
if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path)) |
||||
{ |
||||
ob_start(); |
||||
$smarty->_include($_compile_path); |
||||
$_results = ob_get_contents(); |
||||
ob_end_clean(); |
||||
} else { |
||||
$_results = ''; |
||||
} |
||||
|
||||
$smarty->_compile_id = $_compile_id_orig; |
||||
|
||||
$smarty->left_delimiter = $_ldelim_orig; |
||||
$smarty->right_delimiter = $_rdelim_orig; |
||||
|
||||
return $_results; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,44 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Get path to file from include_path |
||||
* |
||||
* @param string $file_path |
||||
* @param string $new_file_path |
||||
* @return boolean |
||||
* @staticvar array|null |
||||
*/ |
||||
|
||||
// $file_path, &$new_file_path |
||||
|
||||
function smarty_core_get_include_path(&$params, &$smarty) |
||||
{ |
||||
static $_path_array = null; |
||||
|
||||
if(!isset($_path_array)) { |
||||
$_ini_include_path = ini_get('include_path'); |
||||
|
||||
if(strstr($_ini_include_path,';')) { |
||||
// windows pathnames |
||||
$_path_array = explode(';',$_ini_include_path); |
||||
} else { |
||||
$_path_array = explode(':',$_ini_include_path); |
||||
} |
||||
} |
||||
foreach ($_path_array as $_include_path) { |
||||
if (@is_readable($_include_path . DIRECTORY_SEPARATOR . $params['file_path'])) { |
||||
$params['new_file_path'] = $_include_path . DIRECTORY_SEPARATOR . $params['file_path']; |
||||
return true; |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,23 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Get seconds and microseconds |
||||
* @return double |
||||
*/ |
||||
function smarty_core_get_microtime($params, &$smarty) |
||||
{ |
||||
$mtime = microtime(); |
||||
$mtime = explode(" ", $mtime); |
||||
$mtime = (double)($mtime[1]) + (double)($mtime[0]); |
||||
return ($mtime); |
||||
} |
||||
|
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,80 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Retrieves PHP script resource |
||||
* |
||||
* sets $php_resource to the returned resource |
||||
* @param string $resource |
||||
* @param string $resource_type |
||||
* @param $php_resource |
||||
* @return boolean |
||||
*/ |
||||
|
||||
function smarty_core_get_php_resource(&$params, &$smarty) |
||||
{ |
||||
|
||||
$params['resource_base_path'] = $smarty->trusted_dir; |
||||
$smarty->_parse_resource_name($params, $smarty); |
||||
|
||||
/* |
||||
* Find out if the resource exists. |
||||
*/ |
||||
|
||||
if ($params['resource_type'] == 'file') { |
||||
$_readable = false; |
||||
if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) { |
||||
$_readable = true; |
||||
} else { |
||||
// test for file in include_path |
||||
$_params = array('file_path' => $params['resource_name']); |
||||
require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); |
||||
if(smarty_core_get_include_path($_params, $smarty)) { |
||||
$_include_path = $_params['new_file_path']; |
||||
$_readable = true; |
||||
} |
||||
} |
||||
} else if ($params['resource_type'] != 'file') { |
||||
$_template_source = null; |
||||
$_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0]) |
||||
&& call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0], |
||||
array($params['resource_name'], &$_template_source, &$smarty)); |
||||
} |
||||
|
||||
/* |
||||
* Set the error function, depending on which class calls us. |
||||
*/ |
||||
if (method_exists($smarty, '_syntax_error')) { |
||||
$_error_funcc = '_syntax_error'; |
||||
} else { |
||||
$_error_funcc = 'trigger_error'; |
||||
} |
||||
|
||||
if ($_readable) { |
||||
if ($smarty->security) { |
||||
require_once(SMARTY_CORE_DIR . 'core.is_trusted.php'); |
||||
if (!smarty_core_is_trusted($params, $smarty)) { |
||||
$smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted'); |
||||
return false; |
||||
} |
||||
} |
||||
} else { |
||||
$smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable'); |
||||
return false; |
||||
} |
||||
|
||||
if ($params['resource_type'] == 'file') { |
||||
$params['php_resource'] = $params['resource_name']; |
||||
} else { |
||||
$params['php_resource'] = $_template_source; |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,59 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* determines if a resource is secure or not. |
||||
* |
||||
* @param string $resource_type |
||||
* @param string $resource_name |
||||
* @return boolean |
||||
*/ |
||||
|
||||
// $resource_type, $resource_name |
||||
|
||||
function smarty_core_is_secure($params, &$smarty) |
||||
{ |
||||
if (!$smarty->security || $smarty->security_settings['INCLUDE_ANY']) { |
||||
return true; |
||||
} |
||||
|
||||
if ($params['resource_type'] == 'file') { |
||||
$_rp = realpath($params['resource_name']); |
||||
if (isset($params['resource_base_path'])) { |
||||
foreach ((array)$params['resource_base_path'] as $curr_dir) { |
||||
if ( ($_cd = realpath($curr_dir)) !== false && |
||||
strncmp($_rp, $_cd, strlen($_cd)) == 0 && |
||||
substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) { |
||||
return true; |
||||
} |
||||
} |
||||
} |
||||
if (!empty($smarty->secure_dir)) { |
||||
foreach ((array)$smarty->secure_dir as $curr_dir) { |
||||
if ( ($_cd = realpath($curr_dir)) !== false) { |
||||
if($_cd == $_rp) { |
||||
return true; |
||||
} elseif (strncmp($_rp, $_cd, strlen($_cd)) == 0 && |
||||
substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR) { |
||||
return true; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} else { |
||||
// resource is not on local file system |
||||
return call_user_func_array( |
||||
$smarty->_plugins['resource'][$params['resource_type']][0][2], |
||||
array($params['resource_name'], &$smarty)); |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,47 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* determines if a resource is trusted or not |
||||
* |
||||
* @param string $resource_type |
||||
* @param string $resource_name |
||||
* @return boolean |
||||
*/ |
||||
|
||||
// $resource_type, $resource_name |
||||
|
||||
function smarty_core_is_trusted($params, &$smarty) |
||||
{ |
||||
$_smarty_trusted = false; |
||||
if ($params['resource_type'] == 'file') { |
||||
if (!empty($smarty->trusted_dir)) { |
||||
$_rp = realpath($params['resource_name']); |
||||
foreach ((array)$smarty->trusted_dir as $curr_dir) { |
||||
if (!empty($curr_dir) && is_readable ($curr_dir)) { |
||||
$_cd = realpath($curr_dir); |
||||
if (strncmp($_rp, $_cd, strlen($_cd)) == 0 |
||||
&& substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) { |
||||
$_smarty_trusted = true; |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
} else { |
||||
// resource is not on local file system |
||||
$_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3], |
||||
array($params['resource_name'], $smarty)); |
||||
} |
||||
|
||||
return $_smarty_trusted; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,125 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Load requested plugins |
||||
* |
||||
* @param array $plugins |
||||
*/ |
||||
|
||||
// $plugins |
||||
|
||||
function smarty_core_load_plugins($params, &$smarty) |
||||
{ |
||||
|
||||
foreach ($params['plugins'] as $_plugin_info) { |
||||
list($_type, $_name, $_tpl_file, $_tpl_line, $_delayed_loading) = $_plugin_info; |
||||
$_plugin = &$smarty->_plugins[$_type][$_name]; |
||||
|
||||
/* |
||||
* We do not load plugin more than once for each instance of Smarty. |
||||
* The following code checks for that. The plugin can also be |
||||
* registered dynamically at runtime, in which case template file |
||||
* and line number will be unknown, so we fill them in. |
||||
* |
||||
* The final element of the info array is a flag that indicates |
||||
* whether the dynamically registered plugin function has been |
||||
* checked for existence yet or not. |
||||
*/ |
||||
if (isset($_plugin)) { |
||||
if (empty($_plugin[3])) { |
||||
if (!is_callable($_plugin[0])) { |
||||
$smarty->_trigger_fatal_error("[plugin] $_type '$_name' is not implemented", $_tpl_file, $_tpl_line, __FILE__, __LINE__); |
||||
} else { |
||||
$_plugin[1] = $_tpl_file; |
||||
$_plugin[2] = $_tpl_line; |
||||
$_plugin[3] = true; |
||||
if (!isset($_plugin[4])) $_plugin[4] = true; /* cacheable */ |
||||
} |
||||
} |
||||
continue; |
||||
} else if ($_type == 'insert') { |
||||
/* |
||||
* For backwards compatibility, we check for insert functions in |
||||
* the symbol table before trying to load them as a plugin. |
||||
*/ |
||||
$_plugin_func = 'insert_' . $_name; |
||||
if (function_exists($_plugin_func)) { |
||||
$_plugin = array($_plugin_func, $_tpl_file, $_tpl_line, true, false); |
||||
continue; |
||||
} |
||||
} |
||||
|
||||
$_plugin_file = $smarty->_get_plugin_filepath($_type, $_name); |
||||
|
||||
if (! $_found = ($_plugin_file != false)) { |
||||
$_message = "could not load plugin file '$_type.$_name.php'\n"; |
||||
} |
||||
|
||||
/* |
||||
* If plugin file is found, it -must- provide the properly named |
||||
* plugin function. In case it doesn't, simply output the error and |
||||
* do not fall back on any other method. |
||||
*/ |
||||
if ($_found) { |
||||
include_once $_plugin_file; |
||||
|
||||
$_plugin_func = 'smarty_' . $_type . '_' . $_name; |
||||
if (!function_exists($_plugin_func)) { |
||||
$smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", $_tpl_file, $_tpl_line, __FILE__, __LINE__); |
||||
continue; |
||||
} |
||||
} |
||||
/* |
||||
* In case of insert plugins, their code may be loaded later via |
||||
* 'script' attribute. |
||||
*/ |
||||
else if ($_type == 'insert' && $_delayed_loading) { |
||||
$_plugin_func = 'smarty_' . $_type . '_' . $_name; |
||||
$_found = true; |
||||
} |
||||
|
||||
/* |
||||
* Plugin specific processing and error checking. |
||||
*/ |
||||
if (!$_found) { |
||||
if ($_type == 'modifier') { |
||||
/* |
||||
* In case modifier falls back on using PHP functions |
||||
* directly, we only allow those specified in the security |
||||
* context. |
||||
*/ |
||||
if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) { |
||||
$_message = "(secure mode) modifier '$_name' is not allowed"; |
||||
} else { |
||||
if (!function_exists($_name)) { |
||||
$_message = "modifier '$_name' is not implemented"; |
||||
} else { |
||||
$_plugin_func = $_name; |
||||
$_found = true; |
||||
} |
||||
} |
||||
} else if ($_type == 'function') { |
||||
/* |
||||
* This is a catch-all situation. |
||||
*/ |
||||
$_message = "unknown tag - '$_name'"; |
||||
} |
||||
} |
||||
|
||||
if ($_found) { |
||||
$smarty->_plugins[$_type][$_name] = array($_plugin_func, $_tpl_file, $_tpl_line, true, true); |
||||
} else { |
||||
// output error |
||||
$smarty->_trigger_fatal_error('[plugin] ' . $_message, $_tpl_file, $_tpl_line, __FILE__, __LINE__); |
||||
} |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,74 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* load a resource plugin |
||||
* |
||||
* @param string $type |
||||
*/ |
||||
|
||||
// $type |
||||
|
||||
function smarty_core_load_resource_plugin($params, &$smarty) |
||||
{ |
||||
/* |
||||
* Resource plugins are not quite like the other ones, so they are |
||||
* handled differently. The first element of plugin info is the array of |
||||
* functions provided by the plugin, the second one indicates whether |
||||
* all of them exist or not. |
||||
*/ |
||||
|
||||
$_plugin = &$smarty->_plugins['resource'][$params['type']]; |
||||
if (isset($_plugin)) { |
||||
if (!$_plugin[1] && count($_plugin[0])) { |
||||
$_plugin[1] = true; |
||||
foreach ($_plugin[0] as $_plugin_func) { |
||||
if (!is_callable($_plugin_func)) { |
||||
$_plugin[1] = false; |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
|
||||
if (!$_plugin[1]) { |
||||
$smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__); |
||||
} |
||||
|
||||
return; |
||||
} |
||||
|
||||
$_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']); |
||||
$_found = ($_plugin_file != false); |
||||
|
||||
if ($_found) { /* |
||||
* If the plugin file is found, it -must- provide the properly named |
||||
* plugin functions. |
||||
*/ |
||||
include_once($_plugin_file); |
||||
|
||||
/* |
||||
* Locate functions that we require the plugin to provide. |
||||
*/ |
||||
$_resource_ops = array('source', 'timestamp', 'secure', 'trusted'); |
||||
$_resource_funcs = array(); |
||||
foreach ($_resource_ops as $_op) { |
||||
$_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op; |
||||
if (!function_exists($_plugin_func)) { |
||||
$smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__); |
||||
return; |
||||
} else { |
||||
$_resource_funcs[] = $_plugin_func; |
||||
} |
||||
} |
||||
|
||||
$smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true); |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,71 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Replace cached inserts with the actual results |
||||
* |
||||
* @param string $results |
||||
* @return string |
||||
*/ |
||||
function smarty_core_process_cached_inserts($params, &$smarty) |
||||
{ |
||||
preg_match_all('!'.$smarty->_smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis', |
||||
$params['results'], $match); |
||||
list($cached_inserts, $insert_args) = $match; |
||||
|
||||
for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) { |
||||
if ($smarty->debugging) { |
||||
$_params = array(); |
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); |
||||
$debug_start_time = smarty_core_get_microtime($_params, $smarty); |
||||
} |
||||
|
||||
$args = unserialize($insert_args[$i]); |
||||
$name = $args['name']; |
||||
|
||||
if (isset($args['script'])) { |
||||
$_params = array('resource_name' => $smarty->_dequote($args['script'])); |
||||
require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); |
||||
if(!smarty_core_get_php_resource($_params, $smarty)) { |
||||
return false; |
||||
} |
||||
$resource_type = $_params['resource_type']; |
||||
$php_resource = $_params['php_resource']; |
||||
|
||||
|
||||
if ($resource_type == 'file') { |
||||
$smarty->_include($php_resource, true); |
||||
} else { |
||||
$smarty->_eval($php_resource); |
||||
} |
||||
} |
||||
|
||||
$function_name = $smarty->_plugins['insert'][$name][0]; |
||||
if (empty($args['assign'])) { |
||||
$replace = $function_name($args, $smarty); |
||||
} else { |
||||
$smarty->assign($args['assign'], $function_name($args, $smarty)); |
||||
$replace = ''; |
||||
} |
||||
|
||||
$params['results'] = substr_replace($params['results'], $replace, strpos($params['results'], $cached_inserts[$i]), strlen($cached_inserts[$i])); |
||||
if ($smarty->debugging) { |
||||
$_params = array(); |
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); |
||||
$smarty->_smarty_debug_info[] = array('type' => 'insert', |
||||
'filename' => 'insert_'.$name, |
||||
'depth' => $smarty->_inclusion_depth, |
||||
'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time); |
||||
} |
||||
} |
||||
|
||||
return $params['results']; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,37 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Replace nocache-tags by results of the corresponding non-cacheable |
||||
* functions and return it |
||||
* |
||||
* @param string $compiled_tpl |
||||
* @param string $cached_source |
||||
* @return string |
||||
*/ |
||||
|
||||
function smarty_core_process_compiled_include($params, &$smarty) |
||||
{ |
||||
$_cache_including = $smarty->_cache_including; |
||||
$smarty->_cache_including = true; |
||||
|
||||
$_return = $params['results']; |
||||
|
||||
foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) { |
||||
$smarty->_include($_include_file_path, true); |
||||
} |
||||
|
||||
foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) { |
||||
$_return = preg_replace_callback('!(\{nocache\:('.$_cache_serial.')#(\d+)\})!s', |
||||
array(&$smarty, '_process_compiled_include_callback'), |
||||
$_return); |
||||
} |
||||
$smarty->_cache_including = $_cache_including; |
||||
return $_return; |
||||
} |
||||
|
||||
?> |
@ -1,101 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* read a cache file, determine if it needs to be |
||||
* regenerated or not |
||||
* |
||||
* @param string $tpl_file |
||||
* @param string $cache_id |
||||
* @param string $compile_id |
||||
* @param string $results |
||||
* @return boolean |
||||
*/ |
||||
|
||||
// $tpl_file, $cache_id, $compile_id, &$results |
||||
|
||||
function smarty_core_read_cache_file(&$params, &$smarty) |
||||
{ |
||||
static $content_cache = array(); |
||||
|
||||
if ($smarty->force_compile) { |
||||
// force compile enabled, always regenerate |
||||
return false; |
||||
} |
||||
|
||||
if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) { |
||||
list($params['results'], $smarty->_cache_info) = $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']]; |
||||
return true; |
||||
} |
||||
|
||||
if (!empty($smarty->cache_handler_func)) { |
||||
// use cache_handler function |
||||
call_user_func_array($smarty->cache_handler_func, |
||||
array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null)); |
||||
} else { |
||||
// use local cache file |
||||
$_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); |
||||
$_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); |
||||
$params['results'] = $smarty->_read_file($_cache_file); |
||||
} |
||||
|
||||
if (empty($params['results'])) { |
||||
// nothing to parse (error?), regenerate cache |
||||
return false; |
||||
} |
||||
|
||||
$_contents = $params['results']; |
||||
$_info_start = strpos($_contents, "\n") + 1; |
||||
$_info_len = (int)substr($_contents, 0, $_info_start - 1); |
||||
$_cache_info = unserialize(substr($_contents, $_info_start, $_info_len)); |
||||
$params['results'] = substr($_contents, $_info_start + $_info_len); |
||||
|
||||
if ($smarty->caching == 2 && isset ($_cache_info['expires'])){ |
||||
// caching by expiration time |
||||
if ($_cache_info['expires'] > -1 && (time() > $_cache_info['expires'])) { |
||||
// cache expired, regenerate |
||||
return false; |
||||
} |
||||
} else { |
||||
// caching by lifetime |
||||
if ($smarty->cache_lifetime > -1 && (time() - $_cache_info['timestamp'] > $smarty->cache_lifetime)) { |
||||
// cache expired, regenerate |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
if ($smarty->compile_check) { |
||||
$_params = array('get_source' => false, 'quiet'=>true); |
||||
foreach (array_keys($_cache_info['template']) as $_template_dep) { |
||||
$_params['resource_name'] = $_template_dep; |
||||
if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { |
||||
// template file has changed, regenerate cache |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
if (isset($_cache_info['config'])) { |
||||
$_params = array('resource_base_path' => $smarty->config_dir, 'get_source' => false, 'quiet'=>true); |
||||
foreach (array_keys($_cache_info['config']) as $_config_dep) { |
||||
$_params['resource_name'] = $_config_dep; |
||||
if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { |
||||
// config file has changed, regenerate cache |
||||
return false; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
$content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info); |
||||
|
||||
$smarty->_cache_info = $_cache_info; |
||||
return true; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,71 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* delete an automagically created file by name and id |
||||
* |
||||
* @param string $auto_base |
||||
* @param string $auto_source |
||||
* @param string $auto_id |
||||
* @param integer $exp_time |
||||
* @return boolean |
||||
*/ |
||||
|
||||
// $auto_base, $auto_source = null, $auto_id = null, $exp_time = null |
||||
|
||||
function smarty_core_rm_auto($params, &$smarty) |
||||
{ |
||||
if (!@is_dir($params['auto_base'])) |
||||
return false; |
||||
|
||||
if(!isset($params['auto_id']) && !isset($params['auto_source'])) { |
||||
$_params = array( |
||||
'dirname' => $params['auto_base'], |
||||
'level' => 0, |
||||
'exp_time' => $params['exp_time'] |
||||
); |
||||
require_once(SMARTY_CORE_DIR . 'core.rmdir.php'); |
||||
$_res = smarty_core_rmdir($_params, $smarty); |
||||
} else { |
||||
$_tname = $smarty->_get_auto_filename($params['auto_base'], $params['auto_source'], $params['auto_id']); |
||||
|
||||
if(isset($params['auto_source'])) { |
||||
if (isset($params['extensions'])) { |
||||
$_res = false; |
||||
foreach ((array)$params['extensions'] as $_extension) |
||||
$_res |= $smarty->_unlink($_tname.$_extension, $params['exp_time']); |
||||
} else { |
||||
$_res = $smarty->_unlink($_tname, $params['exp_time']); |
||||
} |
||||
} elseif ($smarty->use_sub_dirs) { |
||||
$_params = array( |
||||
'dirname' => $_tname, |
||||
'level' => 1, |
||||
'exp_time' => $params['exp_time'] |
||||
); |
||||
require_once(SMARTY_CORE_DIR . 'core.rmdir.php'); |
||||
$_res = smarty_core_rmdir($_params, $smarty); |
||||
} else { |
||||
// remove matching file names |
||||
$_handle = opendir($params['auto_base']); |
||||
$_res = true; |
||||
while (false !== ($_filename = readdir($_handle))) { |
||||
if($_filename == '.' || $_filename == '..') { |
||||
continue; |
||||
} elseif (substr($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, 0, strlen($_tname)) == $_tname) { |
||||
$_res &= (bool)$smarty->_unlink($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, $params['exp_time']); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
return $_res; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,54 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* delete a dir recursively (level=0 -> keep root) |
||||
* WARNING: no tests, it will try to remove what you tell it! |
||||
* |
||||
* @param string $dirname |
||||
* @param integer $level |
||||
* @param integer $exp_time |
||||
* @return boolean |
||||
*/ |
||||
|
||||
// $dirname, $level = 1, $exp_time = null |
||||
|
||||
function smarty_core_rmdir($params, &$smarty) |
||||
{ |
||||
if(!isset($params['level'])) { $params['level'] = 1; } |
||||
if(!isset($params['exp_time'])) { $params['exp_time'] = null; } |
||||
|
||||
if($_handle = @opendir($params['dirname'])) { |
||||
|
||||
while (false !== ($_entry = readdir($_handle))) { |
||||
if ($_entry != '.' && $_entry != '..') { |
||||
if (@is_dir($params['dirname'] . DIRECTORY_SEPARATOR . $_entry)) { |
||||
$_params = array( |
||||
'dirname' => $params['dirname'] . DIRECTORY_SEPARATOR . $_entry, |
||||
'level' => $params['level'] + 1, |
||||
'exp_time' => $params['exp_time'] |
||||
); |
||||
smarty_core_rmdir($_params, $smarty); |
||||
} |
||||
else { |
||||
$smarty->_unlink($params['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params['exp_time']); |
||||
} |
||||
} |
||||
} |
||||
closedir($_handle); |
||||
} |
||||
|
||||
if ($params['level']) { |
||||
return @rmdir($params['dirname']); |
||||
} |
||||
return (bool)$_handle; |
||||
|
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,71 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Handle insert tags |
||||
* |
||||
* @param array $args |
||||
* @return string |
||||
*/ |
||||
function smarty_core_run_insert_handler($params, &$smarty) |
||||
{ |
||||
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); |
||||
if ($smarty->debugging) { |
||||
$_params = array(); |
||||
$_debug_start_time = smarty_core_get_microtime($_params, $smarty); |
||||
} |
||||
|
||||
if ($smarty->caching) { |
||||
$_arg_string = serialize($params['args']); |
||||
$_name = $params['args']['name']; |
||||
if (!isset($smarty->_cache_info['insert_tags'][$_name])) { |
||||
$smarty->_cache_info['insert_tags'][$_name] = array('insert', |
||||
$_name, |
||||
$smarty->_plugins['insert'][$_name][1], |
||||
$smarty->_plugins['insert'][$_name][2], |
||||
!empty($params['args']['script']) ? true : false); |
||||
} |
||||
return $smarty->_smarty_md5."{insert_cache $_arg_string}".$smarty->_smarty_md5; |
||||
} else { |
||||
if (isset($params['args']['script'])) { |
||||
$_params = array('resource_name' => $smarty->_dequote($params['args']['script'])); |
||||
require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); |
||||
if(!smarty_core_get_php_resource($_params, $smarty)) { |
||||
return false; |
||||
} |
||||
|
||||
if ($_params['resource_type'] == 'file') { |
||||
$smarty->_include($_params['php_resource'], true); |
||||
} else { |
||||
$smarty->_eval($_params['php_resource']); |
||||
} |
||||
unset($params['args']['script']); |
||||
} |
||||
|
||||
$_funcname = $smarty->_plugins['insert'][$params['args']['name']][0]; |
||||
$_content = $_funcname($params['args'], $smarty); |
||||
if ($smarty->debugging) { |
||||
$_params = array(); |
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); |
||||
$smarty->_smarty_debug_info[] = array('type' => 'insert', |
||||
'filename' => 'insert_'.$params['args']['name'], |
||||
'depth' => $smarty->_inclusion_depth, |
||||
'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); |
||||
} |
||||
|
||||
if (!empty($params['args']["assign"])) { |
||||
$smarty->assign($params['args']["assign"], $_content); |
||||
} else { |
||||
return $_content; |
||||
} |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,50 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* called for included php files within templates |
||||
* |
||||
* @param string $smarty_file |
||||
* @param string $smarty_assign variable to assign the included template's |
||||
* output into |
||||
* @param boolean $smarty_once uses include_once if this is true |
||||
* @param array $smarty_include_vars associative array of vars from |
||||
* {include file="blah" var=$var} |
||||
*/ |
||||
|
||||
// $file, $assign, $once, $_smarty_include_vars |
||||
|
||||
function smarty_core_smarty_include_php($params, &$smarty) |
||||
{ |
||||
$_params = array('resource_name' => $params['smarty_file']); |
||||
require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); |
||||
smarty_core_get_php_resource($_params, $smarty); |
||||
$_smarty_resource_type = $_params['resource_type']; |
||||
$_smarty_php_resource = $_params['php_resource']; |
||||
|
||||
if (!empty($params['smarty_assign'])) { |
||||
ob_start(); |
||||
if ($_smarty_resource_type == 'file') { |
||||
$smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); |
||||
} else { |
||||
$smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); |
||||
} |
||||
$smarty->assign($params['smarty_assign'], ob_get_contents()); |
||||
ob_end_clean(); |
||||
} else { |
||||
if ($_smarty_resource_type == 'file') { |
||||
$smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); |
||||
} else { |
||||
$smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,96 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Prepend the cache information to the cache file |
||||
* and write it |
||||
* |
||||
* @param string $tpl_file |
||||
* @param string $cache_id |
||||
* @param string $compile_id |
||||
* @param string $results |
||||
* @return true|null |
||||
*/ |
||||
|
||||
// $tpl_file, $cache_id, $compile_id, $results |
||||
|
||||
function smarty_core_write_cache_file($params, &$smarty) |
||||
{ |
||||
|
||||
// put timestamp in cache header |
||||
$smarty->_cache_info['timestamp'] = time(); |
||||
if ($smarty->cache_lifetime > -1){ |
||||
// expiration set |
||||
$smarty->_cache_info['expires'] = $smarty->_cache_info['timestamp'] + $smarty->cache_lifetime; |
||||
} else { |
||||
// cache will never expire |
||||
$smarty->_cache_info['expires'] = -1; |
||||
} |
||||
|
||||
// collapse nocache.../nocache-tags |
||||
if (preg_match_all('!\{(/?)nocache\:[0-9a-f]{32}#\d+\}!', $params['results'], $match, PREG_PATTERN_ORDER)) { |
||||
// remove everything between every pair of outermost noache.../nocache-tags |
||||
// and replace it by a single nocache-tag |
||||
// this new nocache-tag will be replaced by dynamic contents in |
||||
// smarty_core_process_compiled_includes() on a cache-read |
||||
|
||||
$match_count = count($match[0]); |
||||
$results = preg_split('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!', $params['results'], -1, PREG_SPLIT_DELIM_CAPTURE); |
||||
|
||||
$level = 0; |
||||
$j = 0; |
||||
for ($i=0, $results_count = count($results); $i < $results_count && $j < $match_count; $i++) { |
||||
if ($results[$i] == $match[0][$j]) { |
||||
// nocache tag |
||||
if ($match[1][$j]) { // closing tag |
||||
$level--; |
||||
unset($results[$i]); |
||||
} else { // opening tag |
||||
if ($level++ > 0) unset($results[$i]); |
||||
} |
||||
$j++; |
||||
} elseif ($level > 0) { |
||||
unset($results[$i]); |
||||
} |
||||
} |
||||
$params['results'] = implode('', $results); |
||||
} |
||||
$smarty->_cache_info['cache_serials'] = $smarty->_cache_serials; |
||||
|
||||
// prepend the cache header info into cache file |
||||
$_cache_info = serialize($smarty->_cache_info); |
||||
$params['results'] = strlen($_cache_info) . "\n" . $_cache_info . $params['results']; |
||||
|
||||
if (!empty($smarty->cache_handler_func)) { |
||||
// use cache_handler function |
||||
call_user_func_array($smarty->cache_handler_func, |
||||
array('write', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], $smarty->_cache_info['expires'])); |
||||
} else { |
||||
// use local cache file |
||||
|
||||
if(!@is_writable($smarty->cache_dir)) { |
||||
// cache_dir not writable, see if it exists |
||||
if(!@is_dir($smarty->cache_dir)) { |
||||
$smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); |
||||
return false; |
||||
} |
||||
$smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR); |
||||
return false; |
||||
} |
||||
|
||||
$_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); |
||||
$_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); |
||||
$_params = array('filename' => $_cache_file, 'contents' => $params['results'], 'create_dirs' => true); |
||||
require_once(SMARTY_CORE_DIR . 'core.write_file.php'); |
||||
smarty_core_write_file($_params, $smarty); |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,91 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Extract non-cacheable parts out of compiled template and write it |
||||
* |
||||
* @param string $compile_path |
||||
* @param string $template_compiled |
||||
* @return boolean |
||||
*/ |
||||
|
||||
function smarty_core_write_compiled_include($params, &$smarty) |
||||
{ |
||||
$_tag_start = 'if \(\$this->caching && \!\$this->_cache_including\)\: echo \'\{nocache\:('.$params['cache_serial'].')#(\d+)\}\'; endif;'; |
||||
$_tag_end = 'if \(\$this->caching && \!\$this->_cache_including\)\: echo \'\{/nocache\:(\\2)#(\\3)\}\'; endif;'; |
||||
|
||||
preg_match_all('!('.$_tag_start.'(.*)'.$_tag_end.')!Us', |
||||
$params['compiled_content'], $_match_source, PREG_SET_ORDER); |
||||
|
||||
// no nocache-parts found: done |
||||
if (count($_match_source)==0) return; |
||||
|
||||
// convert the matched php-code to functions |
||||
$_include_compiled = "<?php /* Smarty version ".$smarty->_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n";
|
||||
$_include_compiled .= " compiled from " . strtr(urlencode($params['resource_name']), array('%2F'=>'/', '%3A'=>':')) . " */\n\n"; |
||||
|
||||
$_compile_path = $params['include_file_path']; |
||||
|
||||
$smarty->_cache_serials[$_compile_path] = $params['cache_serial']; |
||||
$_include_compiled .= "\$this->_cache_serials['".$_compile_path."'] = '".$params['cache_serial']."';\n\n?>"; |
||||
|
||||
$_include_compiled .= $params['plugins_code']; |
||||
$_include_compiled .= "<?php";
|
||||
|
||||
$this_varname = ((double)phpversion() >= 5.0) ? '_smarty' : 'this'; |
||||
for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) { |
||||
$_match =& $_match_source[$_i]; |
||||
$source = $_match[4]; |
||||
if ($this_varname == '_smarty') { |
||||
/* rename $this to $_smarty in the sourcecode */ |
||||
$tokens = token_get_all('<?php ' . $_match[4]); |
||||
|
||||
/* remove trailing <?php */ |
||||
$open_tag = ''; |
||||
while ($tokens) { |
||||
$token = array_shift($tokens); |
||||
if (is_array($token)) { |
||||
$open_tag .= $token[1]; |
||||
} else { |
||||
$open_tag .= $token; |
||||
} |
||||
if ($open_tag == '<?php ') break; |
||||
} |
||||
|
||||
for ($i=0, $count = count($tokens); $i < $count; $i++) { |
||||
if (is_array($tokens[$i])) { |
||||
if ($tokens[$i][0] == T_VARIABLE && $tokens[$i][1] == '$this') { |
||||
$tokens[$i] = '$' . $this_varname; |
||||
} else { |
||||
$tokens[$i] = $tokens[$i][1]; |
||||
} |
||||
} |
||||
} |
||||
$source = implode('', $tokens); |
||||
} |
||||
|
||||
/* add function to compiled include */ |
||||
$_include_compiled .= " |
||||
function _smarty_tplfunc_$_match[2]_$_match[3](&\$$this_varname) |
||||
{ |
||||
$source |
||||
} |
||||
|
||||
"; |
||||
} |
||||
$_include_compiled .= "\n\n?>\n"; |
||||
|
||||
$_params = array('filename' => $_compile_path, |
||||
'contents' => $_include_compiled, 'create_dirs' => true); |
||||
|
||||
require_once(SMARTY_CORE_DIR . 'core.write_file.php'); |
||||
smarty_core_write_file($_params, $smarty); |
||||
return true; |
||||
} |
||||
|
||||
|
||||
?> |
@ -1,35 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* write the compiled resource |
||||
* |
||||
* @param string $compile_path |
||||
* @param string $compiled_content |
||||
* @return true |
||||
*/ |
||||
function smarty_core_write_compiled_resource($params, &$smarty) |
||||
{ |
||||
if(!@is_writable($smarty->compile_dir)) { |
||||
// compile_dir not writable, see if it exists |
||||
if(!@is_dir($smarty->compile_dir)) { |
||||
$smarty->trigger_error('the $compile_dir \'' . $smarty->compile_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); |
||||
return false; |
||||
} |
||||
$smarty->trigger_error('unable to write to $compile_dir \'' . realpath($smarty->compile_dir) . '\'. Be sure $compile_dir is writable by the web server user.', E_USER_ERROR); |
||||
return false; |
||||
} |
||||
|
||||
$_params = array('filename' => $params['compile_path'], 'contents' => $params['compiled_content'], 'create_dirs' => true); |
||||
require_once(SMARTY_CORE_DIR . 'core.write_file.php'); |
||||
smarty_core_write_file($_params, $smarty); |
||||
return true; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,54 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* write out a file to disk |
||||
* |
||||
* @param string $filename |
||||
* @param string $contents |
||||
* @param boolean $create_dirs |
||||
* @return boolean |
||||
*/ |
||||
function smarty_core_write_file($params, &$smarty) |
||||
{ |
||||
$_dirname = dirname($params['filename']); |
||||
|
||||
if ($params['create_dirs']) { |
||||
$_params = array('dir' => $_dirname); |
||||
require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); |
||||
smarty_core_create_dir_structure($_params, $smarty); |
||||
} |
||||
|
||||
// write to tmp file, then rename it to avoid file locking race condition |
||||
$_tmp_file = tempnam($_dirname, 'wrt'); |
||||
|
||||
if (!($fd = @fopen($_tmp_file, 'wb'))) { |
||||
$_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); |
||||
if (!($fd = @fopen($_tmp_file, 'wb'))) { |
||||
$smarty->trigger_error("problem writing temporary file '$_tmp_file'"); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
fwrite($fd, $params['contents']); |
||||
fclose($fd); |
||||
|
||||
if (DIRECTORY_SEPARATOR == '\\' || !@rename($_tmp_file, $params['filename'])) { |
||||
// On platforms and filesystems that cannot overwrite with rename() |
||||
// delete the file before renaming it -- because windows always suffers |
||||
// this, it is short-circuited to avoid the initial rename() attempt |
||||
@unlink($params['filename']); |
||||
@rename($_tmp_file, $params['filename']); |
||||
} |
||||
@chmod($params['filename'], $smarty->_file_perms); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,103 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Smarty {textformat}{/textformat} block plugin |
||||
* |
||||
* Type: block function<br> |
||||
* Name: textformat<br> |
||||
* Purpose: format text a certain way with preset styles |
||||
* or custom wrap/indent settings<br> |
||||
* @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat} |
||||
* (Smarty online manual) |
||||
* @param array |
||||
* <pre> |
||||
* Params: style: string (email) |
||||
* indent: integer (0) |
||||
* wrap: integer (80) |
||||
* wrap_char string ("\n") |
||||
* indent_char: string (" ") |
||||
* wrap_boundary: boolean (true) |
||||
* </pre> |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string contents of the block |
||||
* @param Smarty clever simulation of a method |
||||
* @return string string $content re-formatted |
||||
*/ |
||||
function smarty_block_textformat($params, $content, &$smarty) |
||||
{ |
||||
if (is_null($content)) { |
||||
return; |
||||
} |
||||
|
||||
$style = null; |
||||
$indent = 0; |
||||
$indent_first = 0; |
||||
$indent_char = ' '; |
||||
$wrap = 80; |
||||
$wrap_char = "\n"; |
||||
$wrap_cut = false; |
||||
$assign = null; |
||||
|
||||
foreach ($params as $_key => $_val) { |
||||
switch ($_key) { |
||||
case 'style': |
||||
case 'indent_char': |
||||
case 'wrap_char': |
||||
case 'assign': |
||||
$$_key = (string)$_val; |
||||
break; |
||||
|
||||
case 'indent': |
||||
case 'indent_first': |
||||
case 'wrap': |
||||
$$_key = (int)$_val; |
||||
break; |
||||
|
||||
case 'wrap_cut': |
||||
$$_key = (bool)$_val; |
||||
break; |
||||
|
||||
default: |
||||
$smarty->trigger_error("textformat: unknown attribute '$_key'"); |
||||
} |
||||
} |
||||
|
||||
if ($style == 'email') { |
||||
$wrap = 72; |
||||
} |
||||
|
||||
// split into paragraphs |
||||
$_paragraphs = preg_split('![\r\n][\r\n]!',$content); |
||||
$_output = ''; |
||||
|
||||
for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) { |
||||
if ($_paragraphs[$_x] == '') { |
||||
continue; |
||||
} |
||||
// convert mult. spaces & special chars to single space |
||||
$_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]); |
||||
// indent first line |
||||
if($indent_first > 0) { |
||||
$_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x]; |
||||
} |
||||
// wordwrap sentences |
||||
$_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut); |
||||
// indent lines |
||||
if($indent > 0) { |
||||
$_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]); |
||||
} |
||||
} |
||||
$_output = implode($wrap_char . $wrap_char, $_paragraphs); |
||||
|
||||
return $assign ? $smarty->assign($assign, $_output) : $_output; |
||||
|
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,40 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Smarty {assign} compiler function plugin |
||||
* |
||||
* Type: compiler function<br> |
||||
* Name: assign<br> |
||||
* Purpose: assign a value to a template variable |
||||
* @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> (initial author) |
||||
* @author messju mohr <messju at lammfellpuschen dot de> (conversion to compiler function) |
||||
* @param string containing var-attribute and value-attribute |
||||
* @param Smarty_Compiler |
||||
*/ |
||||
function smarty_compiler_assign($tag_attrs, &$compiler) |
||||
{ |
||||
$_params = $compiler->_parse_attrs($tag_attrs); |
||||
|
||||
if (!isset($_params['var'])) { |
||||
$compiler->_syntax_error("assign: missing 'var' parameter", E_USER_WARNING); |
||||
return; |
||||
} |
||||
|
||||
if (!isset($_params['value'])) { |
||||
$compiler->_syntax_error("assign: missing 'value' parameter", E_USER_WARNING); |
||||
return; |
||||
} |
||||
|
||||
return "\$this->assign({$_params['var']}, {$_params['value']});"; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,40 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Smarty {assign_debug_info} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: assign_debug_info<br> |
||||
* Purpose: assign debug info to the template<br> |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param array unused in this plugin, this plugin uses {@link Smarty::$_config}, |
||||
* {@link Smarty::$_tpl_vars} and {@link Smarty::$_smarty_debug_info} |
||||
* @param Smarty |
||||
*/ |
||||
function smarty_function_assign_debug_info($params, &$smarty) |
||||
{ |
||||
$assigned_vars = $smarty->_tpl_vars; |
||||
ksort($assigned_vars); |
||||
if (@is_array($smarty->_config[0])) { |
||||
$config_vars = $smarty->_config[0]; |
||||
ksort($config_vars); |
||||
$smarty->assign("_debug_config_keys", array_keys($config_vars)); |
||||
$smarty->assign("_debug_config_vals", array_values($config_vars)); |
||||
} |
||||
|
||||
$included_templates = $smarty->_smarty_debug_info; |
||||
|
||||
$smarty->assign("_debug_keys", array_keys($assigned_vars)); |
||||
$smarty->assign("_debug_vals", array_values($assigned_vars)); |
||||
|
||||
$smarty->assign("_debug_tpls", $included_templates); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,142 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Smarty {config_load} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: config_load<br> |
||||
* Purpose: load config file vars |
||||
* @link http://smarty.php.net/manual/en/language.function.config.load.php {config_load} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @author messju mohr <messju at lammfellpuschen dot de> (added use of resources) |
||||
* @param array Format: |
||||
* <pre> |
||||
* array('file' => required config file name, |
||||
* 'section' => optional config file section to load |
||||
* 'scope' => local/parent/global |
||||
* 'global' => overrides scope, setting to parent if true) |
||||
* </pre> |
||||
* @param Smarty |
||||
*/ |
||||
function smarty_function_config_load($params, &$smarty) |
||||
{ |
||||
if ($smarty->debugging) { |
||||
$_params = array(); |
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); |
||||
$_debug_start_time = smarty_core_get_microtime($_params, $smarty); |
||||
} |
||||
|
||||
$_file = isset($params['file']) ? $smarty->_dequote($params['file']) : null; |
||||
$_section = isset($params['section']) ? $smarty->_dequote($params['section']) : null; |
||||
$_scope = isset($params['scope']) ? $smarty->_dequote($params['scope']) : 'global'; |
||||
$_global = isset($params['global']) ? $smarty->_dequote($params['global']) : false; |
||||
|
||||
if (!isset($_file) || strlen($_file) == 0) { |
||||
$smarty->trigger_error("missing 'file' attribute in config_load tag", E_USER_ERROR, __FILE__, __LINE__); |
||||
} |
||||
|
||||
if (isset($_scope)) { |
||||
if ($_scope != 'local' && |
||||
$_scope != 'parent' && |
||||
$_scope != 'global') { |
||||
$smarty->trigger_error("invalid 'scope' attribute value", E_USER_ERROR, __FILE__, __LINE__); |
||||
} |
||||
} else { |
||||
if ($_global) { |
||||
$_scope = 'parent'; |
||||
} else { |
||||
$_scope = 'local'; |
||||
} |
||||
} |
||||
|
||||
$_params = array('resource_name' => $_file, |
||||
'resource_base_path' => $smarty->config_dir, |
||||
'get_source' => false); |
||||
$smarty->_parse_resource_name($_params); |
||||
$_file_path = $_params['resource_type'] . ':' . $_params['resource_name']; |
||||
if (isset($_section)) |
||||
$_compile_file = $smarty->_get_compile_path($_file_path.'|'.$_section); |
||||
else |
||||
$_compile_file = $smarty->_get_compile_path($_file_path); |
||||
|
||||
if($smarty->force_compile || !file_exists($_compile_file)) { |
||||
$_compile = true; |
||||
} elseif ($smarty->compile_check) { |
||||
$_params = array('resource_name' => $_file, |
||||
'resource_base_path' => $smarty->config_dir, |
||||
'get_source' => false); |
||||
$_compile = $smarty->_fetch_resource_info($_params) && |
||||
$_params['resource_timestamp'] > filemtime($_compile_file); |
||||
} else { |
||||
$_compile = false; |
||||
} |
||||
|
||||
if($_compile) { |
||||
// compile config file |
||||
if(!is_object($smarty->_conf_obj)) { |
||||
require_once SMARTY_DIR . $smarty->config_class . '.class.php'; |
||||
$smarty->_conf_obj = new $smarty->config_class(); |
||||
$smarty->_conf_obj->overwrite = $smarty->config_overwrite; |
||||
$smarty->_conf_obj->booleanize = $smarty->config_booleanize; |
||||
$smarty->_conf_obj->read_hidden = $smarty->config_read_hidden; |
||||
$smarty->_conf_obj->fix_newlines = $smarty->config_fix_newlines; |
||||
} |
||||
|
||||
$_params = array('resource_name' => $_file, |
||||
'resource_base_path' => $smarty->config_dir, |
||||
$_params['get_source'] = true); |
||||
if (!$smarty->_fetch_resource_info($_params)) { |
||||
return; |
||||
} |
||||
$smarty->_conf_obj->set_file_contents($_file, $_params['source_content']); |
||||
$_config_vars = array_merge($smarty->_conf_obj->get($_file), |
||||
$smarty->_conf_obj->get($_file, $_section)); |
||||
if(function_exists('var_export')) { |
||||
$_output = '<?php $_config_vars = ' . var_export($_config_vars, true) . '; ?>';
|
||||
} else { |
||||
$_output = '<?php $_config_vars = unserialize(\'' . strtr(serialize($_config_vars),array('\''=>'\\\'', '\\'=>'\\\\')) . '\'); ?>'; |
||||
} |
||||
$_params = (array('compile_path' => $_compile_file, 'compiled_content' => $_output, 'resource_timestamp' => $_params['resource_timestamp'])); |
||||
require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php'); |
||||
smarty_core_write_compiled_resource($_params, $smarty); |
||||
} else { |
||||
include($_compile_file); |
||||
} |
||||
|
||||
if ($smarty->caching) { |
||||
$smarty->_cache_info['config'][$_file] = true; |
||||
} |
||||
|
||||
$smarty->_config[0]['vars'] = @array_merge($smarty->_config[0]['vars'], $_config_vars); |
||||
$smarty->_config[0]['files'][$_file] = true; |
||||
|
||||
if ($_scope == 'parent') { |
||||
$smarty->_config[1]['vars'] = @array_merge($smarty->_config[1]['vars'], $_config_vars); |
||||
$smarty->_config[1]['files'][$_file] = true; |
||||
} else if ($_scope == 'global') { |
||||
for ($i = 1, $for_max = count($smarty->_config); $i < $for_max; $i++) { |
||||
$smarty->_config[$i]['vars'] = @array_merge($smarty->_config[$i]['vars'], $_config_vars); |
||||
$smarty->_config[$i]['files'][$_file] = true; |
||||
} |
||||
} |
||||
|
||||
if ($smarty->debugging) { |
||||
$_params = array(); |
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); |
||||
$smarty->_smarty_debug_info[] = array('type' => 'config', |
||||
'filename' => $_file.' ['.$_section.'] '.$_scope, |
||||
'depth' => $smarty->_inclusion_depth, |
||||
'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); |
||||
} |
||||
|
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,80 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {counter} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: counter<br> |
||||
* Purpose: print out a counter value |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @link http://smarty.php.net/manual/en/language.function.counter.php {counter} |
||||
* (Smarty online manual) |
||||
* @param array parameters |
||||
* @param Smarty |
||||
* @return string|null |
||||
*/ |
||||
function smarty_function_counter($params, &$smarty) |
||||
{ |
||||
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'])) { |
||||
$smarty->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; |
||||
|
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,102 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Smarty {cycle} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: cycle<br> |
||||
* Date: May 3, 2002<br> |
||||
* Purpose: cycle through given values<br> |
||||
* Input: |
||||
* - name = name of cycle (optional) |
||||
* - values = comma separated list of values to cycle, |
||||
* or an array of values to cycle |
||||
* (this can be left out for subsequent calls) |
||||
* - reset = boolean - resets given var to true |
||||
* - print = boolean - print var or not. default is true |
||||
* - advance = boolean - whether or not to advance the cycle |
||||
* - delimiter = the value delimiter, default is "," |
||||
* - assign = boolean, assigns to template var instead of |
||||
* printed. |
||||
* |
||||
* Examples:<br> |
||||
* <pre> |
||||
* {cycle values="#eeeeee,#d0d0d0d"} |
||||
* {cycle name=row values="one,two,three" reset=true} |
||||
* {cycle name=row} |
||||
* </pre> |
||||
* @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @author credit to Mark Priatel <mpriatel@rogers.com> |
||||
* @author credit to Gerard <gerard@interfold.com> |
||||
* @author credit to Jason Sweat <jsweat_php@yahoo.com> |
||||
* @version 1.3 |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string|null |
||||
*/ |
||||
function smarty_function_cycle($params, &$smarty) |
||||
{ |
||||
static $cycle_vars; |
||||
|
||||
$name = (empty($params['name'])) ? 'default' : $params['name']; |
||||
$print = (isset($params['print'])) ? (bool)$params['print'] : true; |
||||
$advance = (isset($params['advance'])) ? (bool)$params['advance'] : true; |
||||
$reset = (isset($params['reset'])) ? (bool)$params['reset'] : false; |
||||
|
||||
if (!in_array('values', array_keys($params))) { |
||||
if(!isset($cycle_vars[$name]['values'])) { |
||||
$smarty->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']; |
||||
} |
||||
|
||||
$cycle_vars[$name]['delimiter'] = (isset($params['delimiter'])) ? $params['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; |
||||
$smarty->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; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,35 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {debug} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: debug<br> |
||||
* Date: July 1, 2002<br> |
||||
* Purpose: popup debug window |
||||
* @link http://smarty.php.net/manual/en/language.function.debug.php {debug} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @version 1.0 |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string output from {@link Smarty::_generate_debug_output()} |
||||
*/ |
||||
function smarty_function_debug($params, &$smarty) |
||||
{ |
||||
if (isset($params['output'])) { |
||||
$smarty->assign('_smarty_debug_output', $params['output']); |
||||
} |
||||
require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php'); |
||||
return smarty_core_display_debug_console(null, $smarty); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,49 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {eval} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: eval<br> |
||||
* Purpose: evaluate a template variable as a template<br> |
||||
* @link http://smarty.php.net/manual/en/language.function.eval.php {eval} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param array |
||||
* @param Smarty |
||||
*/ |
||||
function smarty_function_eval($params, &$smarty) |
||||
{ |
||||
|
||||
if (!isset($params['var'])) { |
||||
$smarty->trigger_error("eval: missing 'var' parameter"); |
||||
return; |
||||
} |
||||
|
||||
if($params['var'] == '') { |
||||
return; |
||||
} |
||||
|
||||
$smarty->_compile_source('evaluated template', $params['var'], $_var_compiled); |
||||
|
||||
ob_start(); |
||||
$smarty->_eval('?>' . $_var_compiled); |
||||
$_contents = ob_get_contents(); |
||||
ob_end_clean(); |
||||
|
||||
if (!empty($params['assign'])) { |
||||
$smarty->assign($params['assign'], $_contents); |
||||
} else { |
||||
return $_contents; |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,221 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {fetch} plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: fetch<br> |
||||
* Purpose: fetch file, web or ftp data and display results |
||||
* @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string|null if the assign parameter is passed, Smarty assigns the |
||||
* result to a template variable |
||||
*/ |
||||
function smarty_function_fetch($params, &$smarty) |
||||
{ |
||||
if (empty($params['file'])) { |
||||
$smarty->_trigger_fatal_error("[plugin] parameter 'file' cannot be empty"); |
||||
return; |
||||
} |
||||
|
||||
$content = ''; |
||||
if ($smarty->security && !preg_match('!^(http|ftp)://!i', $params['file'])) { |
||||
$_params = array('resource_type' => 'file', 'resource_name' => $params['file']); |
||||
require_once(SMARTY_CORE_DIR . 'core.is_secure.php'); |
||||
if(!smarty_core_is_secure($_params, $smarty)) { |
||||
$smarty->_trigger_fatal_error('[plugin] (secure mode) fetch \'' . $params['file'] . '\' is not allowed'); |
||||
return; |
||||
} |
||||
|
||||
// fetch the file |
||||
if($fp = @fopen($params['file'],'r')) { |
||||
while(!feof($fp)) { |
||||
$content .= fgets ($fp,4096); |
||||
} |
||||
fclose($fp); |
||||
} else { |
||||
$smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] . '\''); |
||||
return; |
||||
} |
||||
} else { |
||||
// not a local file |
||||
if(preg_match('!^http://!i',$params['file'])) { |
||||
// http fetch |
||||
if($uri_parts = parse_url($params['file'])) { |
||||
// set defaults |
||||
$host = $server_name = $uri_parts['host']; |
||||
$timeout = 30; |
||||
$accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"; |
||||
$agent = "Smarty Template Engine ".$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)) { |
||||
$smarty->_trigger_fatal_error("[plugin] invalid header format '".$param_value."'"); |
||||
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 { |
||||
$smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'"); |
||||
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 { |
||||
$smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'"); |
||||
return; |
||||
} |
||||
break; |
||||
default: |
||||
$smarty->_trigger_fatal_error("[plugin] unrecognized attribute '".$param_key."'"); |
||||
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) { |
||||
$smarty->_trigger_fatal_error("[plugin] unable to fetch: $errstr ($errno)"); |
||||
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 = explode("\r\n\r\n",$content,2); |
||||
|
||||
$content = $csplit[1]; |
||||
|
||||
if(!empty($params['assign_headers'])) { |
||||
$smarty->assign($params['assign_headers'],split("\r\n",$csplit[0])); |
||||
} |
||||
} |
||||
} else { |
||||
$smarty->_trigger_fatal_error("[plugin] unable to parse URL, check syntax"); |
||||
return; |
||||
} |
||||
} else { |
||||
// ftp fetch |
||||
if($fp = @fopen($params['file'],'r')) { |
||||
while(!feof($fp)) { |
||||
$content .= fgets ($fp,4096); |
||||
} |
||||
fclose($fp); |
||||
} else { |
||||
$smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] .'\''); |
||||
return; |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
|
||||
if (!empty($params['assign'])) { |
||||
$smarty->assign($params['assign'],$content); |
||||
} else { |
||||
return $content; |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,143 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {html_checkboxes} function plugin |
||||
* |
||||
* File: function.html_checkboxes.php<br> |
||||
* Type: function<br> |
||||
* Name: html_checkboxes<br> |
||||
* Date: 24.Feb.2003<br> |
||||
* Purpose: Prints out a list of checkbox input types<br> |
||||
* Input:<br> |
||||
* - name (optional) - string default "checkbox" |
||||
* - values (required) - array |
||||
* - options (optional) - associative array |
||||
* - checked (optional) - array default not set |
||||
* - separator (optional) - ie <br> or |
||||
* - output (optional) - the output next to each checkbox |
||||
* - assign (optional) - assign the output as an array to this variable |
||||
* Examples: |
||||
* <pre> |
||||
* {html_checkboxes values=$ids output=$names} |
||||
* {html_checkboxes values=$ids name='box' separator='<br>' output=$names} |
||||
* {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names} |
||||
* </pre> |
||||
* @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} |
||||
* (Smarty online manual) |
||||
* @author Christopher Kvarme <christopher.kvarme@flashjab.com> |
||||
* @author credits to Monte Ohrt <monte at ohrt dot com> |
||||
* @version 1.0 |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
* @uses smarty_function_escape_special_chars() |
||||
*/ |
||||
function smarty_function_html_checkboxes($params, &$smarty) |
||||
{ |
||||
require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); |
||||
|
||||
$name = 'checkbox'; |
||||
$values = null; |
||||
$options = null; |
||||
$selected = null; |
||||
$separator = ''; |
||||
$labels = true; |
||||
$output = null; |
||||
|
||||
$extra = ''; |
||||
|
||||
foreach($params as $_key => $_val) { |
||||
switch($_key) { |
||||
case 'name': |
||||
case 'separator': |
||||
$$_key = $_val; |
||||
break; |
||||
|
||||
case 'labels': |
||||
$$_key = (bool)$_val; |
||||
break; |
||||
|
||||
case 'options': |
||||
$$_key = (array)$_val; |
||||
break; |
||||
|
||||
case 'values': |
||||
case 'output': |
||||
$$_key = array_values((array)$_val); |
||||
break; |
||||
|
||||
case 'checked': |
||||
case 'selected': |
||||
$selected = array_map('strval', array_values((array)$_val)); |
||||
break; |
||||
|
||||
case 'checkboxes': |
||||
$smarty->trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING); |
||||
$options = (array)$_val; |
||||
break; |
||||
|
||||
case 'assign': |
||||
break; |
||||
|
||||
default: |
||||
if(!is_array($_val)) { |
||||
$extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; |
||||
} else { |
||||
$smarty->trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE); |
||||
} |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if (!isset($options) && !isset($values)) |
||||
return ''; /* raise error here? */ |
||||
|
||||
settype($selected, 'array'); |
||||
$_html_result = array(); |
||||
|
||||
if (isset($options)) { |
||||
|
||||
foreach ($options as $_key=>$_val) |
||||
$_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels); |
||||
|
||||
|
||||
} else { |
||||
foreach ($values as $_i=>$_key) { |
||||
$_val = isset($output[$_i]) ? $output[$_i] : ''; |
||||
$_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels); |
||||
} |
||||
|
||||
} |
||||
|
||||
if(!empty($params['assign'])) { |
||||
$smarty->assign($params['assign'], $_html_result); |
||||
} else { |
||||
return implode("\n",$_html_result); |
||||
} |
||||
|
||||
} |
||||
|
||||
function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) { |
||||
$_output = ''; |
||||
if ($labels) $_output .= '<label>'; |
||||
$_output .= '<input type="checkbox" name="' |
||||
. smarty_function_escape_special_chars($name) . '[]" value="' |
||||
. smarty_function_escape_special_chars($value) . '"'; |
||||
|
||||
if (in_array((string)$value, $selected)) { |
||||
$_output .= ' checked="checked"'; |
||||
} |
||||
$_output .= $extra . ' />' . $output; |
||||
if ($labels) $_output .= '</label>'; |
||||
$_output .= $separator; |
||||
|
||||
return $_output; |
||||
} |
||||
|
||||
?> |
@ -1,142 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {html_image} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: html_image<br> |
||||
* Date: Feb 24, 2003<br> |
||||
* Purpose: format HTML tags for the image<br> |
||||
* Input:<br> |
||||
* - file = file (and path) of image (required) |
||||
* - height = image height (optional, default actual height) |
||||
* - width = image width (optional, default actual width) |
||||
* - basedir = base directory for absolute paths, default |
||||
* is environment variable DOCUMENT_ROOT |
||||
* - path_prefix = prefix for path output (optional, default empty) |
||||
* |
||||
* Examples: {html_image file="/images/masthead.gif"} |
||||
* Output: <img src="/images/masthead.gif" width=400 height=23> |
||||
* @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @author credits to Duda <duda@big.hu> - wrote first image function |
||||
* in repository, helped with lots of functionality |
||||
* @version 1.0 |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
* @uses smarty_function_escape_special_chars() |
||||
*/ |
||||
function smarty_function_html_image($params, &$smarty) |
||||
{ |
||||
require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); |
||||
|
||||
$alt = ''; |
||||
$file = ''; |
||||
$height = ''; |
||||
$width = ''; |
||||
$extra = ''; |
||||
$prefix = ''; |
||||
$suffix = ''; |
||||
$path_prefix = ''; |
||||
$server_vars = ($smarty->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; |
||||
$basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : ''; |
||||
foreach($params as $_key => $_val) { |
||||
switch($_key) { |
||||
case 'file': |
||||
case 'height': |
||||
case 'width': |
||||
case 'dpi': |
||||
case 'path_prefix': |
||||
case 'basedir': |
||||
$$_key = $_val; |
||||
break; |
||||
|
||||
case 'alt': |
||||
if(!is_array($_val)) { |
||||
$$_key = smarty_function_escape_special_chars($_val); |
||||
} else { |
||||
$smarty->trigger_error("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 { |
||||
$smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); |
||||
} |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if (empty($file)) { |
||||
$smarty->trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE); |
||||
return; |
||||
} |
||||
|
||||
if (substr($file,0,1) == '/') { |
||||
$_image_path = $basedir . $file; |
||||
} else { |
||||
$_image_path = $file; |
||||
} |
||||
|
||||
if(!isset($params['width']) || !isset($params['height'])) { |
||||
if(!$_image_data = @getimagesize($_image_path)) { |
||||
if(!file_exists($_image_path)) { |
||||
$smarty->trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE); |
||||
return; |
||||
} else if(!is_readable($_image_path)) { |
||||
$smarty->trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE); |
||||
return; |
||||
} else { |
||||
$smarty->trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE); |
||||
return; |
||||
} |
||||
} |
||||
if ($smarty->security && |
||||
($_params = array('resource_type' => 'file', 'resource_name' => $_image_path)) && |
||||
(require_once(SMARTY_CORE_DIR . 'core.is_secure.php')) && |
||||
(!smarty_core_is_secure($_params, $smarty)) ) { |
||||
$smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE); |
||||
} |
||||
|
||||
if(!isset($params['width'])) { |
||||
$width = $_image_data[0]; |
||||
} |
||||
if(!isset($params['height'])) { |
||||
$height = $_image_data[1]; |
||||
} |
||||
|
||||
} |
||||
|
||||
if(isset($params['dpi'])) { |
||||
if(strstr($server_vars['HTTP_USER_AGENT'], 'Mac')) { |
||||
$dpi_default = 72; |
||||
} else { |
||||
$dpi_default = 96; |
||||
} |
||||
$_resize = $dpi_default/$params['dpi']; |
||||
$width = round($width * $_resize); |
||||
$height = round($height * $_resize); |
||||
} |
||||
|
||||
return $prefix . '<img src="'.$path_prefix.$file.'" alt="'.$alt.'" width="'.$width.'" height="'.$height.'"'.$extra.' />' . $suffix; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,122 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {html_options} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: html_options<br> |
||||
* Input:<br> |
||||
* - name (optional) - string default "select" |
||||
* - values (required if no options supplied) - array |
||||
* - options (required if no values supplied) - associative array |
||||
* - selected (optional) - string default not set |
||||
* - output (required if not options supplied) - array |
||||
* Purpose: Prints the list of <option> tags generated from |
||||
* the passed parameters |
||||
* @link http://smarty.php.net/manual/en/language.function.html.options.php {html_image} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
* @uses smarty_function_escape_special_chars() |
||||
*/ |
||||
function smarty_function_html_options($params, &$smarty) |
||||
{ |
||||
require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); |
||||
|
||||
$name = null; |
||||
$values = null; |
||||
$options = null; |
||||
$selected = array(); |
||||
$output = null; |
||||
|
||||
$extra = ''; |
||||
|
||||
foreach($params as $_key => $_val) { |
||||
switch($_key) { |
||||
case 'name': |
||||
$$_key = (string)$_val; |
||||
break; |
||||
|
||||
case 'options': |
||||
$$_key = (array)$_val; |
||||
break; |
||||
|
||||
case 'values': |
||||
case 'output': |
||||
$$_key = array_values((array)$_val); |
||||
break; |
||||
|
||||
case 'selected': |
||||
$$_key = array_map('strval', array_values((array)$_val)); |
||||
break; |
||||
|
||||
default: |
||||
if(!is_array($_val)) { |
||||
$extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; |
||||
} else { |
||||
$smarty->trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE); |
||||
} |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if (!isset($options) && !isset($values)) |
||||
return ''; /* raise error here? */ |
||||
|
||||
$_html_result = ''; |
||||
|
||||
if (isset($options)) { |
||||
|
||||
foreach ($options as $_key=>$_val) |
||||
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected); |
||||
|
||||
} else { |
||||
|
||||
foreach ($values as $_i=>$_key) { |
||||
$_val = isset($output[$_i]) ? $output[$_i] : ''; |
||||
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected); |
||||
} |
||||
|
||||
} |
||||
|
||||
if(!empty($name)) { |
||||
$_html_result = '<select name="' . $name . '"' . $extra . '>' . "\n" . $_html_result . '</select>' . "\n"; |
||||
} |
||||
|
||||
return $_html_result; |
||||
|
||||
} |
||||
|
||||
function smarty_function_html_options_optoutput($key, $value, $selected) { |
||||
if(!is_array($value)) { |
||||
$_html_result = '<option label="' . smarty_function_escape_special_chars($value) . '" value="' . |
||||
smarty_function_escape_special_chars($key) . '"'; |
||||
if (in_array((string)$key, $selected)) |
||||
$_html_result .= ' selected="selected"'; |
||||
$_html_result .= '>' . smarty_function_escape_special_chars($value) . '</option>' . "\n"; |
||||
} else { |
||||
$_html_result = smarty_function_html_options_optgroup($key, $value, $selected); |
||||
} |
||||
return $_html_result; |
||||
} |
||||
|
||||
function smarty_function_html_options_optgroup($key, $values, $selected) { |
||||
$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); |
||||
} |
||||
$optgroup_html .= "</optgroup>\n"; |
||||
return $optgroup_html; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,156 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {html_radios} function plugin |
||||
* |
||||
* File: function.html_radios.php<br> |
||||
* Type: function<br> |
||||
* Name: html_radios<br> |
||||
* Date: 24.Feb.2003<br> |
||||
* Purpose: Prints out a list of radio input types<br> |
||||
* Input:<br> |
||||
* - name (optional) - string default "radio" |
||||
* - values (required) - array |
||||
* - options (optional) - associative array |
||||
* - checked (optional) - array default not set |
||||
* - separator (optional) - ie <br> or |
||||
* - output (optional) - the output next to each radio button |
||||
* - assign (optional) - assign the output as an array to this variable |
||||
* Examples: |
||||
* <pre> |
||||
* {html_radios values=$ids output=$names} |
||||
* {html_radios values=$ids name='box' separator='<br>' output=$names} |
||||
* {html_radios values=$ids checked=$checked separator='<br>' output=$names} |
||||
* </pre> |
||||
* @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios} |
||||
* (Smarty online manual) |
||||
* @author Christopher Kvarme <christopher.kvarme@flashjab.com> |
||||
* @author credits to Monte Ohrt <monte at ohrt dot com> |
||||
* @version 1.0 |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
* @uses smarty_function_escape_special_chars() |
||||
*/ |
||||
function smarty_function_html_radios($params, &$smarty) |
||||
{ |
||||
require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); |
||||
|
||||
$name = 'radio'; |
||||
$values = null; |
||||
$options = null; |
||||
$selected = null; |
||||
$separator = ''; |
||||
$labels = true; |
||||
$label_ids = false; |
||||
$output = null; |
||||
$extra = ''; |
||||
|
||||
foreach($params as $_key => $_val) { |
||||
switch($_key) { |
||||
case 'name': |
||||
case 'separator': |
||||
$$_key = (string)$_val; |
||||
break; |
||||
|
||||
case 'checked': |
||||
case 'selected': |
||||
if(is_array($_val)) { |
||||
$smarty->trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING); |
||||
} else { |
||||
$selected = (string)$_val; |
||||
} |
||||
break; |
||||
|
||||
case 'labels': |
||||
case 'label_ids': |
||||
$$_key = (bool)$_val; |
||||
break; |
||||
|
||||
case 'options': |
||||
$$_key = (array)$_val; |
||||
break; |
||||
|
||||
case 'values': |
||||
case 'output': |
||||
$$_key = array_values((array)$_val); |
||||
break; |
||||
|
||||
case 'radios': |
||||
$smarty->trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead', E_USER_WARNING); |
||||
$options = (array)$_val; |
||||
break; |
||||
|
||||
case 'assign': |
||||
break; |
||||
|
||||
default: |
||||
if(!is_array($_val)) { |
||||
$extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; |
||||
} else { |
||||
$smarty->trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE); |
||||
} |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if (!isset($options) && !isset($values)) |
||||
return ''; /* raise error here? */ |
||||
|
||||
$_html_result = array(); |
||||
|
||||
if (isset($options)) { |
||||
|
||||
foreach ($options as $_key=>$_val) |
||||
$_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids); |
||||
|
||||
} else { |
||||
|
||||
foreach ($values as $_i=>$_key) { |
||||
$_val = isset($output[$_i]) ? $output[$_i] : ''; |
||||
$_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids); |
||||
} |
||||
|
||||
} |
||||
|
||||
if(!empty($params['assign'])) { |
||||
$smarty->assign($params['assign'], $_html_result); |
||||
} else { |
||||
return implode("\n",$_html_result); |
||||
} |
||||
|
||||
} |
||||
|
||||
function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids) { |
||||
$_output = ''; |
||||
if ($labels) { |
||||
if($label_ids) { |
||||
$_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!', '_', $name . '_' . $value)); |
||||
$_output .= '<label for="' . $_id . '">'; |
||||
} else { |
||||
$_output .= '<label>'; |
||||
} |
||||
} |
||||
$_output .= '<input type="radio" name="' |
||||
. smarty_function_escape_special_chars($name) . '" value="' |
||||
. smarty_function_escape_special_chars($value) . '"'; |
||||
|
||||
if ($labels && $label_ids) $_output .= ' id="' . $_id . '"'; |
||||
|
||||
if ((string)$value==$selected) { |
||||
$_output .= ' checked="checked"'; |
||||
} |
||||
$_output .= $extra . ' />' . $output; |
||||
if ($labels) $_output .= '</label>'; |
||||
$_output .= $separator; |
||||
|
||||
return $_output; |
||||
} |
||||
|
||||
?> |
@ -1,331 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Smarty {html_select_date} plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: html_select_date<br> |
||||
* Purpose: Prints the dropdowns for date selection. |
||||
* |
||||
* ChangeLog:<br> |
||||
* - 1.0 initial release |
||||
* - 1.1 added support for +/- N syntax for begin |
||||
* and end year values. (Monte) |
||||
* - 1.2 added support for yyyy-mm-dd syntax for |
||||
* time value. (Jan Rosier) |
||||
* - 1.3 added support for choosing format for |
||||
* month values (Gary Loescher) |
||||
* - 1.3.1 added support for choosing format for |
||||
* day values (Marcus Bointon) |
||||
* - 1.3.2 support negative timestamps, force year |
||||
* dropdown to include given date unless explicitly set (Monte) |
||||
* - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that |
||||
* of 0000-00-00 dates (cybot, boots) |
||||
* @link http://smarty.php.net/manual/en/language.function.html.select.date.php {html_select_date} |
||||
* (Smarty online manual) |
||||
* @version 1.3.4 |
||||
* @author Andrei Zmievski |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
*/ |
||||
function smarty_function_html_select_date($params, &$smarty) |
||||
{ |
||||
require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); |
||||
require_once $smarty->_get_plugin_filepath('shared','make_timestamp'); |
||||
require_once $smarty->_get_plugin_filepath('function','html_options'); |
||||
/* Default values. */ |
||||
$prefix = "Date_"; |
||||
$start_year = strftime("%Y"); |
||||
$end_year = $start_year; |
||||
$display_days = true; |
||||
$display_months = true; |
||||
$display_years = true; |
||||
$month_format = "%B"; |
||||
/* Write months as numbers by default GL */ |
||||
$month_value_format = "%m"; |
||||
$day_format = "%02d"; |
||||
/* Write day values using this format MB */ |
||||
$day_value_format = "%d"; |
||||
$year_as_text = false; |
||||
/* Display years in reverse order? Ie. 2000,1999,.... */ |
||||
$reverse_years = false; |
||||
/* Should the select boxes be part of an array when returned from PHP? |
||||
e.g. setting it to "birthday", would create "birthday[Day]", |
||||
"birthday[Month]" & "birthday[Year]". Can be combined with prefix */ |
||||
$field_array = null; |
||||
/* <select size>'s of the different <select> tags. |
||||
If not set, uses default dropdown. */ |
||||
$day_size = null; |
||||
$month_size = null; |
||||
$year_size = null; |
||||
/* Unparsed attributes common to *ALL* the <select>/<input> tags. |
||||
An example might be in the template: all_extra ='class ="foo"'. */ |
||||
$all_extra = null; |
||||
/* Separate attributes for the tags. */ |
||||
$day_extra = null; |
||||
$month_extra = null; |
||||
$year_extra = null; |
||||
/* Order in which to display the fields. |
||||
"D" -> day, "M" -> month, "Y" -> year. */ |
||||
$field_order = 'MDY'; |
||||
/* String printed between the different fields. */ |
||||
$field_separator = "\n"; |
||||
$time = time(); |
||||
$all_empty = null; |
||||
$day_empty = null; |
||||
$month_empty = null; |
||||
$year_empty = null; |
||||
$extra_attrs = ''; |
||||
|
||||
foreach ($params as $_key=>$_value) { |
||||
switch ($_key) { |
||||
case 'prefix': |
||||
case 'time': |
||||
case 'start_year': |
||||
case 'end_year': |
||||
case 'month_format': |
||||
case 'day_format': |
||||
case 'day_value_format': |
||||
case 'field_array': |
||||
case 'day_size': |
||||
case 'month_size': |
||||
case 'year_size': |
||||
case 'all_extra': |
||||
case 'day_extra': |
||||
case 'month_extra': |
||||
case 'year_extra': |
||||
case 'field_order': |
||||
case 'field_separator': |
||||
case 'month_value_format': |
||||
case 'month_empty': |
||||
case 'day_empty': |
||||
case 'year_empty': |
||||
$$_key = (string)$_value; |
||||
break; |
||||
|
||||
case 'all_empty': |
||||
$$_key = (string)$_value; |
||||
$day_empty = $month_empty = $year_empty = $all_empty; |
||||
break; |
||||
|
||||
case 'display_days': |
||||
case 'display_months': |
||||
case 'display_years': |
||||
case 'year_as_text': |
||||
case 'reverse_years': |
||||
$$_key = (bool)$_value; |
||||
break; |
||||
|
||||
default: |
||||
if(!is_array($_value)) { |
||||
$extra_attrs .= ' '.$_key.'="'.smarty_function_escape_special_chars($_value).'"'; |
||||
} else { |
||||
$smarty->trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE); |
||||
} |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if (preg_match('!^-\d+$!', $time)) { |
||||
// negative timestamp, use date() |
||||
$time = date('Y-m-d', $time); |
||||
} |
||||
// If $time is not in format yyyy-mm-dd |
||||
if (preg_match('/^(\d{0,4}-\d{0,2}-\d{0,2})/', $time, $found)) { |
||||
$time = $found[1]; |
||||
} else { |
||||
// use smarty_make_timestamp to get an unix timestamp and |
||||
// strftime to make yyyy-mm-dd |
||||
$time = strftime('%Y-%m-%d', smarty_make_timestamp($time)); |
||||
} |
||||
// Now split this in pieces, which later can be used to set the select |
||||
$time = explode("-", $time); |
||||
|
||||
// make syntax "+N" or "-N" work with start_year and end_year |
||||
if (preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match)) { |
||||
if ($match[1] == '+') { |
||||
$end_year = strftime('%Y') + $match[2]; |
||||
} else { |
||||
$end_year = strftime('%Y') - $match[2]; |
||||
} |
||||
} |
||||
if (preg_match('!^(\+|\-)\s*(\d+)$!', $start_year, $match)) { |
||||
if ($match[1] == '+') { |
||||
$start_year = strftime('%Y') + $match[2]; |
||||
} else { |
||||
$start_year = strftime('%Y') - $match[2]; |
||||
} |
||||
} |
||||
if (strlen($time[0]) > 0) { |
||||
if ($start_year > $time[0] && !isset($params['start_year'])) { |
||||
// force start year to include given date if not explicitly set |
||||
$start_year = $time[0]; |
||||
} |
||||
if($end_year < $time[0] && !isset($params['end_year'])) { |
||||
// force end year to include given date if not explicitly set |
||||
$end_year = $time[0]; |
||||
} |
||||
} |
||||
|
||||
$field_order = strtoupper($field_order); |
||||
|
||||
$html_result = $month_result = $day_result = $year_result = ""; |
||||
|
||||
$field_separator_count = -1; |
||||
if ($display_months) { |
||||
$field_separator_count++; |
||||
$month_names = array(); |
||||
$month_values = array(); |
||||
if(isset($month_empty)) { |
||||
$month_names[''] = $month_empty; |
||||
$month_values[''] = ''; |
||||
} |
||||
for ($i = 1; $i <= 12; $i++) { |
||||
$month_names[$i] = strftime($month_format, mktime(0, 0, 0, $i, 1, 2000)); |
||||
$month_values[$i] = strftime($month_value_format, mktime(0, 0, 0, $i, 1, 2000)); |
||||
} |
||||
|
||||
$month_result .= '<select name='; |
||||
if (null !== $field_array){ |
||||
$month_result .= '"' . $field_array . '[' . $prefix . 'Month]"'; |
||||
} else { |
||||
$month_result .= '"' . $prefix . 'Month"'; |
||||
} |
||||
if (null !== $month_size){ |
||||
$month_result .= ' size="' . $month_size . '"'; |
||||
} |
||||
if (null !== $month_extra){ |
||||
$month_result .= ' ' . $month_extra; |
||||
} |
||||
if (null !== $all_extra){ |
||||
$month_result .= ' ' . $all_extra; |
||||
} |
||||
$month_result .= $extra_attrs . '>'."\n"; |
||||
|
||||
$month_result .= smarty_function_html_options(array('output' => $month_names, |
||||
'values' => $month_values, |
||||
'selected' => (int)$time[1] ? strftime($month_value_format, mktime(0, 0, 0, (int)$time[1], 1, 2000)) : '', |
||||
'print_result' => false), |
||||
$smarty); |
||||
$month_result .= '</select>'; |
||||
} |
||||
|
||||
if ($display_days) { |
||||
$field_separator_count++; |
||||
$days = array(); |
||||
if (isset($day_empty)) { |
||||
$days[''] = $day_empty; |
||||
$day_values[''] = ''; |
||||
} |
||||
for ($i = 1; $i <= 31; $i++) { |
||||
$days[] = sprintf($day_format, $i); |
||||
$day_values[] = sprintf($day_value_format, $i); |
||||
} |
||||
|
||||
$day_result .= '<select name='; |
||||
if (null !== $field_array){ |
||||
$day_result .= '"' . $field_array . '[' . $prefix . 'Day]"'; |
||||
} else { |
||||
$day_result .= '"' . $prefix . 'Day"'; |
||||
} |
||||
if (null !== $day_size){ |
||||
$day_result .= ' size="' . $day_size . '"'; |
||||
} |
||||
if (null !== $all_extra){ |
||||
$day_result .= ' ' . $all_extra; |
||||
} |
||||
if (null !== $day_extra){ |
||||
$day_result .= ' ' . $day_extra; |
||||
} |
||||
$day_result .= $extra_attrs . '>'."\n"; |
||||
$day_result .= smarty_function_html_options(array('output' => $days, |
||||
'values' => $day_values, |
||||
'selected' => $time[2], |
||||
'print_result' => false), |
||||
$smarty); |
||||
$day_result .= '</select>'; |
||||
} |
||||
|
||||
if ($display_years) { |
||||
$field_separator_count++; |
||||
if (null !== $field_array){ |
||||
$year_name = $field_array . '[' . $prefix . 'Year]'; |
||||
} else { |
||||
$year_name = $prefix . 'Year'; |
||||
} |
||||
if ($year_as_text) { |
||||
$year_result .= '<input type="text" name="' . $year_name . '" value="' . $time[0] . '" size="4" maxlength="4"'; |
||||
if (null !== $all_extra){ |
||||
$year_result .= ' ' . $all_extra; |
||||
} |
||||
if (null !== $year_extra){ |
||||
$year_result .= ' ' . $year_extra; |
||||
} |
||||
$year_result .= ' />'; |
||||
} else { |
||||
$years = range((int)$start_year, (int)$end_year); |
||||
if ($reverse_years) { |
||||
rsort($years, SORT_NUMERIC); |
||||
} else { |
||||
sort($years, SORT_NUMERIC); |
||||
} |
||||
$yearvals = $years; |
||||
if(isset($year_empty)) { |
||||
array_unshift($years, $year_empty); |
||||
array_unshift($yearvals, ''); |
||||
} |
||||
$year_result .= '<select name="' . $year_name . '"'; |
||||
if (null !== $year_size){ |
||||
$year_result .= ' size="' . $year_size . '"'; |
||||
} |
||||
if (null !== $all_extra){ |
||||
$year_result .= ' ' . $all_extra; |
||||
} |
||||
if (null !== $year_extra){ |
||||
$year_result .= ' ' . $year_extra; |
||||
} |
||||
$year_result .= $extra_attrs . '>'."\n"; |
||||
$year_result .= smarty_function_html_options(array('output' => $years, |
||||
'values' => $yearvals, |
||||
'selected' => $time[0], |
||||
'print_result' => false), |
||||
$smarty); |
||||
$year_result .= '</select>'; |
||||
} |
||||
} |
||||
|
||||
// Loop thru the field_order field |
||||
for ($i = 0; $i <= 2; $i++){ |
||||
$c = substr($field_order, $i, 1); |
||||
switch ($c){ |
||||
case 'D': |
||||
$html_result .= $day_result; |
||||
break; |
||||
|
||||
case 'M': |
||||
$html_result .= $month_result; |
||||
break; |
||||
|
||||
case 'Y': |
||||
$html_result .= $year_result; |
||||
break; |
||||
} |
||||
// Add the field seperator |
||||
if($i < $field_separator_count) { |
||||
$html_result .= $field_separator; |
||||
} |
||||
} |
||||
|
||||
return $html_result; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,194 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {html_select_time} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: html_select_time<br> |
||||
* Purpose: Prints the dropdowns for time selection |
||||
* @link http://smarty.php.net/manual/en/language.function.html.select.time.php {html_select_time} |
||||
* (Smarty online manual) |
||||
* @author Roberto Berto <roberto@berto.net> |
||||
* @credits Monte Ohrt <monte AT ohrt DOT com> |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
* @uses smarty_make_timestamp() |
||||
*/ |
||||
function smarty_function_html_select_time($params, &$smarty) |
||||
{ |
||||
require_once $smarty->_get_plugin_filepath('shared','make_timestamp'); |
||||
require_once $smarty->_get_plugin_filepath('function','html_options'); |
||||
/* Default values. */ |
||||
$prefix = "Time_"; |
||||
$time = time(); |
||||
$display_hours = true; |
||||
$display_minutes = true; |
||||
$display_seconds = true; |
||||
$display_meridian = true; |
||||
$use_24_hours = true; |
||||
$minute_interval = 1; |
||||
$second_interval = 1; |
||||
/* Should the select boxes be part of an array when returned from PHP? |
||||
e.g. setting it to "birthday", would create "birthday[Hour]", |
||||
"birthday[Minute]", "birthday[Seconds]" & "birthday[Meridian]". |
||||
Can be combined with prefix. */ |
||||
$field_array = null; |
||||
$all_extra = null; |
||||
$hour_extra = null; |
||||
$minute_extra = null; |
||||
$second_extra = null; |
||||
$meridian_extra = null; |
||||
|
||||
foreach ($params as $_key=>$_value) { |
||||
switch ($_key) { |
||||
case 'prefix': |
||||
case 'time': |
||||
case 'field_array': |
||||
case 'all_extra': |
||||
case 'hour_extra': |
||||
case 'minute_extra': |
||||
case 'second_extra': |
||||
case 'meridian_extra': |
||||
$$_key = (string)$_value; |
||||
break; |
||||
|
||||
case 'display_hours': |
||||
case 'display_minutes': |
||||
case 'display_seconds': |
||||
case 'display_meridian': |
||||
case 'use_24_hours': |
||||
$$_key = (bool)$_value; |
||||
break; |
||||
|
||||
case 'minute_interval': |
||||
case 'second_interval': |
||||
$$_key = (int)$_value; |
||||
break; |
||||
|
||||
default: |
||||
$smarty->trigger_error("[html_select_time] unknown parameter $_key", E_USER_WARNING); |
||||
} |
||||
} |
||||
|
||||
$time = smarty_make_timestamp($time); |
||||
|
||||
$html_result = ''; |
||||
|
||||
if ($display_hours) { |
||||
$hours = $use_24_hours ? range(0, 23) : range(1, 12); |
||||
$hour_fmt = $use_24_hours ? '%H' : '%I'; |
||||
for ($i = 0, $for_max = count($hours); $i < $for_max; $i++) |
||||
$hours[$i] = sprintf('%02d', $hours[$i]); |
||||
$html_result .= '<select name='; |
||||
if (null !== $field_array) { |
||||
$html_result .= '"' . $field_array . '[' . $prefix . 'Hour]"'; |
||||
} else { |
||||
$html_result .= '"' . $prefix . 'Hour"'; |
||||
} |
||||
if (null !== $hour_extra){ |
||||
$html_result .= ' ' . $hour_extra; |
||||
} |
||||
if (null !== $all_extra){ |
||||
$html_result .= ' ' . $all_extra; |
||||
} |
||||
$html_result .= '>'."\n"; |
||||
$html_result .= smarty_function_html_options(array('output' => $hours, |
||||
'values' => $hours, |
||||
'selected' => strftime($hour_fmt, $time), |
||||
'print_result' => false), |
||||
$smarty); |
||||
$html_result .= "</select>\n"; |
||||
} |
||||
|
||||
if ($display_minutes) { |
||||
$all_minutes = range(0, 59); |
||||
for ($i = 0, $for_max = count($all_minutes); $i < $for_max; $i+= $minute_interval) |
||||
$minutes[] = sprintf('%02d', $all_minutes[$i]); |
||||
$selected = intval(floor(strftime('%M', $time) / $minute_interval) * $minute_interval); |
||||
$html_result .= '<select name='; |
||||
if (null !== $field_array) { |
||||
$html_result .= '"' . $field_array . '[' . $prefix . 'Minute]"'; |
||||
} else { |
||||
$html_result .= '"' . $prefix . 'Minute"'; |
||||
} |
||||
if (null !== $minute_extra){ |
||||
$html_result .= ' ' . $minute_extra; |
||||
} |
||||
if (null !== $all_extra){ |
||||
$html_result .= ' ' . $all_extra; |
||||
} |
||||
$html_result .= '>'."\n"; |
||||
|
||||
$html_result .= smarty_function_html_options(array('output' => $minutes, |
||||
'values' => $minutes, |
||||
'selected' => $selected, |
||||
'print_result' => false), |
||||
$smarty); |
||||
$html_result .= "</select>\n"; |
||||
} |
||||
|
||||
if ($display_seconds) { |
||||
$all_seconds = range(0, 59); |
||||
for ($i = 0, $for_max = count($all_seconds); $i < $for_max; $i+= $second_interval) |
||||
$seconds[] = sprintf('%02d', $all_seconds[$i]); |
||||
$selected = intval(floor(strftime('%S', $time) / $second_interval) * $second_interval); |
||||
$html_result .= '<select name='; |
||||
if (null !== $field_array) { |
||||
$html_result .= '"' . $field_array . '[' . $prefix . 'Second]"'; |
||||
} else { |
||||
$html_result .= '"' . $prefix . 'Second"'; |
||||
} |
||||
|
||||
if (null !== $second_extra){ |
||||
$html_result .= ' ' . $second_extra; |
||||
} |
||||
if (null !== $all_extra){ |
||||
$html_result .= ' ' . $all_extra; |
||||
} |
||||
$html_result .= '>'."\n"; |
||||
|
||||
$html_result .= smarty_function_html_options(array('output' => $seconds, |
||||
'values' => $seconds, |
||||
'selected' => $selected, |
||||
'print_result' => false), |
||||
$smarty); |
||||
$html_result .= "</select>\n"; |
||||
} |
||||
|
||||
if ($display_meridian && !$use_24_hours) { |
||||
$html_result .= '<select name='; |
||||
if (null !== $field_array) { |
||||
$html_result .= '"' . $field_array . '[' . $prefix . 'Meridian]"'; |
||||
} else { |
||||
$html_result .= '"' . $prefix . 'Meridian"'; |
||||
} |
||||
|
||||
if (null !== $meridian_extra){ |
||||
$html_result .= ' ' . $meridian_extra; |
||||
} |
||||
if (null !== $all_extra){ |
||||
$html_result .= ' ' . $all_extra; |
||||
} |
||||
$html_result .= '>'."\n"; |
||||
|
||||
$html_result .= smarty_function_html_options(array('output' => array('AM', 'PM'), |
||||
'values' => array('am', 'pm'), |
||||
'selected' => strtolower(strftime('%p', $time)), |
||||
'print_result' => false), |
||||
$smarty); |
||||
$html_result .= "</select>\n"; |
||||
} |
||||
|
||||
return $html_result; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,177 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {html_table} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: html_table<br> |
||||
* Date: Feb 17, 2003<br> |
||||
* Purpose: make an html table from an array of data<br> |
||||
* Input:<br> |
||||
* - loop = array to loop through |
||||
* - cols = number of columns, comma separated list of column names |
||||
* or array of column names |
||||
* - rows = number of rows |
||||
* - table_attr = table attributes |
||||
* - th_attr = table heading attributes (arrays are cycled) |
||||
* - tr_attr = table row attributes (arrays are cycled) |
||||
* - td_attr = table cell attributes (arrays are cycled) |
||||
* - trailpad = value to pad trailing cells with |
||||
* - caption = text for caption element |
||||
* - vdir = vertical direction (default: "down", means top-to-bottom) |
||||
* - hdir = horizontal direction (default: "right", means left-to-right) |
||||
* - inner = inner loop (default "cols": print $loop line by line, |
||||
* $loop will be printed column by column otherwise) |
||||
* |
||||
* |
||||
* Examples: |
||||
* <pre> |
||||
* {table loop=$data} |
||||
* {table loop=$data cols=4 tr_attr='"bgcolor=red"'} |
||||
* {table loop=$data cols="first,second,third" tr_attr=$colors} |
||||
* </pre> |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @author credit to Messju Mohr <messju at lammfellpuschen dot de> |
||||
* @author credit to boots <boots dot smarty at yahoo dot com> |
||||
* @version 1.1 |
||||
* @link http://smarty.php.net/manual/en/language.function.html.table.php {html_table} |
||||
* (Smarty online manual) |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
*/ |
||||
function smarty_function_html_table($params, &$smarty) |
||||
{ |
||||
$table_attr = 'border="1"'; |
||||
$tr_attr = ''; |
||||
$th_attr = ''; |
||||
$td_attr = ''; |
||||
$cols = $cols_count = 3; |
||||
$rows = 3; |
||||
$trailpad = ' '; |
||||
$vdir = 'down'; |
||||
$hdir = 'right'; |
||||
$inner = 'cols'; |
||||
$caption = ''; |
||||
|
||||
if (!isset($params['loop'])) { |
||||
$smarty->trigger_error("html_table: missing 'loop' parameter"); |
||||
return; |
||||
} |
||||
|
||||
foreach ($params as $_key=>$_value) { |
||||
switch ($_key) { |
||||
case 'loop': |
||||
$$_key = (array)$_value; |
||||
break; |
||||
|
||||
case 'cols': |
||||
if (is_array($_value) && !empty($_value)) { |
||||
$cols = $_value; |
||||
$cols_count = count($_value); |
||||
} elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) { |
||||
$cols = explode(',', $_value); |
||||
$cols_count = count($cols); |
||||
} elseif (!empty($_value)) { |
||||
$cols_count = (int)$_value; |
||||
} else { |
||||
$cols_count = $cols; |
||||
} |
||||
break; |
||||
|
||||
case 'rows': |
||||
$$_key = (int)$_value; |
||||
break; |
||||
|
||||
case 'table_attr': |
||||
case 'trailpad': |
||||
case 'hdir': |
||||
case 'vdir': |
||||
case 'inner': |
||||
case 'caption': |
||||
$$_key = (string)$_value; |
||||
break; |
||||
|
||||
case 'tr_attr': |
||||
case 'td_attr': |
||||
case 'th_attr': |
||||
$$_key = $_value; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
$loop_count = count($loop); |
||||
if (empty($params['rows'])) { |
||||
/* no rows specified */ |
||||
$rows = ceil($loop_count/$cols_count); |
||||
} elseif (empty($params['cols'])) { |
||||
if (!empty($params['rows'])) { |
||||
/* no cols specified, but rows */ |
||||
$cols_count = ceil($loop_count/$rows); |
||||
} |
||||
} |
||||
|
||||
$output = "<table $table_attr>\n"; |
||||
|
||||
if (!empty($caption)) { |
||||
$output .= '<caption>' . $caption . "</caption>\n"; |
||||
} |
||||
|
||||
if (is_array($cols)) { |
||||
$cols = ($hdir == 'right') ? $cols : array_reverse($cols); |
||||
$output .= "<thead><tr>\n"; |
||||
|
||||
for ($r=0; $r<$cols_count; $r++) { |
||||
$output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>'; |
||||
$output .= $cols[$r]; |
||||
$output .= "</th>\n"; |
||||
} |
||||
$output .= "</tr></thead>\n"; |
||||
} |
||||
|
||||
$output .= "<tbody>\n"; |
||||
for ($r=0; $r<$rows; $r++) { |
||||
$output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n"; |
||||
$rx = ($vdir == 'down') ? $r*$cols_count : ($rows-1-$r)*$cols_count; |
||||
|
||||
for ($c=0; $c<$cols_count; $c++) { |
||||
$x = ($hdir == 'right') ? $rx+$c : $rx+$cols_count-1-$c; |
||||
if ($inner!='cols') { |
||||
/* shuffle x to loop over rows*/ |
||||
$x = floor($x/$cols_count) + ($x%$cols_count)*$rows; |
||||
} |
||||
|
||||
if ($x<$loop_count) { |
||||
$output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[$x] . "</td>\n"; |
||||
} else { |
||||
$output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n"; |
||||
} |
||||
} |
||||
$output .= "</tr>\n"; |
||||
} |
||||
$output .= "</tbody>\n"; |
||||
$output .= "</table>\n"; |
||||
|
||||
return $output; |
||||
} |
||||
|
||||
function smarty_function_html_table_cycle($name, $var, $no) { |
||||
if(!is_array($var)) { |
||||
$ret = $var; |
||||
} else { |
||||
$ret = $var[$no % count($var)]; |
||||
} |
||||
|
||||
return ($ret) ? ' '.$ret : ''; |
||||
} |
||||
|
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,165 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {mailto} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: mailto<br> |
||||
* Date: May 21, 2002 |
||||
* Purpose: automate mailto address link creation, and optionally |
||||
* encode them.<br> |
||||
* Input:<br> |
||||
* - address = e-mail address |
||||
* - text = (optional) text to display, default is address |
||||
* - encode = (optional) can be one of: |
||||
* * none : no encoding (default) |
||||
* * javascript : encode with javascript |
||||
* * javascript_charcode : encode with javascript charcode |
||||
* * hex : encode with hexidecimal (no javascript) |
||||
* - cc = (optional) address(es) to carbon copy |
||||
* - bcc = (optional) address(es) to blind carbon copy |
||||
* - subject = (optional) e-mail subject |
||||
* - newsgroups = (optional) newsgroup(s) to post to |
||||
* - followupto = (optional) address(es) to follow up to |
||||
* - extra = (optional) extra tags for the href link |
||||
* |
||||
* Examples: |
||||
* <pre> |
||||
* {mailto address="me@domain.com"} |
||||
* {mailto address="me@domain.com" encode="javascript"} |
||||
* {mailto address="me@domain.com" encode="hex"} |
||||
* {mailto address="me@domain.com" subject="Hello to you!"} |
||||
* {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"} |
||||
* {mailto address="me@domain.com" extra='class="mailto"'} |
||||
* </pre> |
||||
* @link http://smarty.php.net/manual/en/language.function.mailto.php {mailto} |
||||
* (Smarty online manual) |
||||
* @version 1.2 |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @author credits to Jason Sweat (added cc, bcc and subject functionality) |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
*/ |
||||
function smarty_function_mailto($params, &$smarty) |
||||
{ |
||||
$extra = ''; |
||||
|
||||
if (empty($params['address'])) { |
||||
$smarty->trigger_error("mailto: missing 'address' parameter"); |
||||
return; |
||||
} else { |
||||
$address = $params['address']; |
||||
} |
||||
|
||||
$text = $address; |
||||
|
||||
// netscape and mozilla do not decode %40 (@) in BCC field (bug?) |
||||
// so, don't encode it. |
||||
$search = array('%40', '%2C'); |
||||
$replace = array('@', ','); |
||||
$mail_parms = array(); |
||||
foreach ($params as $var=>$value) { |
||||
switch ($var) { |
||||
case 'cc': |
||||
case 'bcc': |
||||
case 'followupto': |
||||
if (!empty($value)) |
||||
$mail_parms[] = $var.'='.str_replace($search,$replace,rawurlencode($value)); |
||||
break; |
||||
|
||||
case 'subject': |
||||
case 'newsgroups': |
||||
$mail_parms[] = $var.'='.rawurlencode($value); |
||||
break; |
||||
|
||||
case 'extra': |
||||
case 'text': |
||||
$$var = $value; |
||||
|
||||
default: |
||||
} |
||||
} |
||||
|
||||
$mail_parm_vals = ''; |
||||
for ($i=0; $i<count($mail_parms); $i++) { |
||||
$mail_parm_vals .= (0==$i) ? '?' : '&'; |
||||
$mail_parm_vals .= $mail_parms[$i]; |
||||
} |
||||
$address .= $mail_parm_vals; |
||||
|
||||
$encode = (empty($params['encode'])) ? 'none' : $params['encode']; |
||||
if (!in_array($encode,array('javascript','javascript_charcode','hex','none')) ) { |
||||
$smarty->trigger_error("mailto: 'encode' parameter must be none, javascript or hex"); |
||||
return; |
||||
} |
||||
|
||||
if ($encode == 'javascript' ) { |
||||
$string = 'document.write(\'<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>\');'; |
||||
|
||||
$js_encode = ''; |
||||
for ($x=0; $x < strlen($string); $x++) { |
||||
$js_encode .= '%' . bin2hex($string[$x]); |
||||
} |
||||
|
||||
return '<script type="text/javascript">eval(unescape(\''.$js_encode.'\'))</script>'; |
||||
|
||||
} elseif ($encode == 'javascript_charcode' ) { |
||||
$string = '<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>'; |
||||
|
||||
for($x = 0, $y = strlen($string); $x < $y; $x++ ) { |
||||
$ord[] = ord($string[$x]); |
||||
} |
||||
|
||||
$_ret = "<script type=\"text/javascript\" language=\"javascript\">\n"; |
||||
$_ret .= "<!--\n"; |
||||
$_ret .= "{document.write(String.fromCharCode("; |
||||
$_ret .= implode(',',$ord); |
||||
$_ret .= "))"; |
||||
$_ret .= "}\n"; |
||||
$_ret .= "//-->\n"; |
||||
$_ret .= "</script>\n"; |
||||
|
||||
return $_ret; |
||||
|
||||
|
||||
} elseif ($encode == 'hex') { |
||||
|
||||
preg_match('!^(.*)(\?.*)$!',$address,$match); |
||||
if(!empty($match[2])) { |
||||
$smarty->trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript."); |
||||
return; |
||||
} |
||||
$address_encode = ''; |
||||
for ($x=0; $x < strlen($address); $x++) { |
||||
if(preg_match('!\w!',$address[$x])) { |
||||
$address_encode .= '%' . bin2hex($address[$x]); |
||||
} else { |
||||
$address_encode .= $address[$x]; |
||||
} |
||||
} |
||||
$text_encode = ''; |
||||
for ($x=0; $x < strlen($text); $x++) { |
||||
$text_encode .= '&#x' . bin2hex($text[$x]).';'; |
||||
} |
||||
|
||||
$mailto = "mailto:"; |
||||
return '<a href="'.$mailto.$address_encode.'" '.$extra.'>'.$text_encode.'</a>'; |
||||
|
||||
} else { |
||||
// no encoding |
||||
return '<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>'; |
||||
|
||||
} |
||||
|
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,85 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {math} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: math<br> |
||||
* Purpose: handle math computations in template<br> |
||||
* @link http://smarty.php.net/manual/en/language.function.math.php {math} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
*/ |
||||
function smarty_function_math($params, &$smarty) |
||||
{ |
||||
// be sure equation parameter is present |
||||
if (empty($params['equation'])) { |
||||
$smarty->trigger_error("math: missing equation parameter"); |
||||
return; |
||||
} |
||||
|
||||
// strip out backticks, not necessary for math |
||||
$equation = str_replace('`','',$params['equation']); |
||||
|
||||
// make sure parenthesis are balanced |
||||
if (substr_count($equation,"(") != substr_count($equation,")")) { |
||||
$smarty->trigger_error("math: unbalanced parenthesis"); |
||||
return; |
||||
} |
||||
|
||||
// match all vars in equation, make sure all are passed |
||||
preg_match_all("!(?:0x[a-fA-F0-9]+)|([a-zA-Z][a-zA-Z0-9_]+)!",$equation, $match); |
||||
$allowed_funcs = array('int','abs','ceil','cos','exp','floor','log','log10', |
||||
'max','min','pi','pow','rand','round','sin','sqrt','srand','tan'); |
||||
|
||||
foreach($match[1] as $curr_var) { |
||||
if ($curr_var && !in_array($curr_var, array_keys($params)) && !in_array($curr_var, $allowed_funcs)) { |
||||
$smarty->trigger_error("math: function call $curr_var not allowed"); |
||||
return; |
||||
} |
||||
} |
||||
|
||||
foreach($params as $key => $val) { |
||||
if ($key != "equation" && $key != "format" && $key != "assign") { |
||||
// make sure value is not empty |
||||
if (strlen($val)==0) { |
||||
$smarty->trigger_error("math: parameter $key is empty"); |
||||
return; |
||||
} |
||||
if (!is_numeric($val)) { |
||||
$smarty->trigger_error("math: parameter $key: is not numeric"); |
||||
return; |
||||
} |
||||
$equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation); |
||||
} |
||||
} |
||||
|
||||
eval("\$smarty_math_result = ".$equation.";"); |
||||
|
||||
if (empty($params['format'])) { |
||||
if (empty($params['assign'])) { |
||||
return $smarty_math_result; |
||||
} else { |
||||
$smarty->assign($params['assign'],$smarty_math_result); |
||||
} |
||||
} else { |
||||
if (empty($params['assign'])){ |
||||
printf($params['format'],$smarty_math_result); |
||||
} else { |
||||
$smarty->assign($params['assign'],sprintf($params['format'],$smarty_math_result)); |
||||
} |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,119 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {popup} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: popup<br> |
||||
* Purpose: make text pop up in windows via overlib |
||||
* @link http://smarty.php.net/manual/en/language.function.popup.php {popup} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
*/ |
||||
function smarty_function_popup($params, &$smarty) |
||||
{ |
||||
$append = ''; |
||||
foreach ($params as $_key=>$_value) { |
||||
switch ($_key) { |
||||
case 'text': |
||||
case 'trigger': |
||||
case 'function': |
||||
case 'inarray': |
||||
$$_key = (string)$_value; |
||||
if ($_key == 'function' || $_key == 'inarray') |
||||
$append .= ',' . strtoupper($_key) . ",'$_value'"; |
||||
break; |
||||
|
||||
case 'caption': |
||||
case 'closetext': |
||||
case 'status': |
||||
$append .= ',' . strtoupper($_key) . ",'" . str_replace("'","\'",$_value) . "'"; |
||||
break; |
||||
|
||||
case 'fgcolor': |
||||
case 'bgcolor': |
||||
case 'textcolor': |
||||
case 'capcolor': |
||||
case 'closecolor': |
||||
case 'textfont': |
||||
case 'captionfont': |
||||
case 'closefont': |
||||
case 'fgbackground': |
||||
case 'bgbackground': |
||||
case 'caparray': |
||||
case 'capicon': |
||||
case 'background': |
||||
case 'frame': |
||||
$append .= ',' . strtoupper($_key) . ",'$_value'"; |
||||
break; |
||||
|
||||
case 'textsize': |
||||
case 'captionsize': |
||||
case 'closesize': |
||||
case 'width': |
||||
case 'height': |
||||
case 'border': |
||||
case 'offsetx': |
||||
case 'offsety': |
||||
case 'snapx': |
||||
case 'snapy': |
||||
case 'fixx': |
||||
case 'fixy': |
||||
case 'padx': |
||||
case 'pady': |
||||
case 'timeout': |
||||
case 'delay': |
||||
$append .= ',' . strtoupper($_key) . ",$_value"; |
||||
break; |
||||
|
||||
case 'sticky': |
||||
case 'left': |
||||
case 'right': |
||||
case 'center': |
||||
case 'above': |
||||
case 'below': |
||||
case 'noclose': |
||||
case 'autostatus': |
||||
case 'autostatuscap': |
||||
case 'fullhtml': |
||||
case 'hauto': |
||||
case 'vauto': |
||||
case 'mouseoff': |
||||
case 'followmouse': |
||||
case 'closeclick': |
||||
if ($_value) $append .= ',' . strtoupper($_key); |
||||
break; |
||||
|
||||
default: |
||||
$smarty->trigger_error("[popup] unknown parameter $_key", E_USER_WARNING); |
||||
} |
||||
} |
||||
|
||||
if (empty($text) && !isset($inarray) && empty($function)) { |
||||
$smarty->trigger_error("overlib: attribute 'text' or 'inarray' or 'function' required"); |
||||
return false; |
||||
} |
||||
|
||||
if (empty($trigger)) { $trigger = "onmouseover"; } |
||||
|
||||
$retval = $trigger . '="return overlib(\''.preg_replace(array("!'!","![\r\n]!"),array("\'",'\r'),$text).'\''; |
||||
$retval .= $append . ');"'; |
||||
if ($trigger == 'onmouseover') |
||||
$retval .= ' onmouseout="nd();"'; |
||||
|
||||
|
||||
return $retval; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,40 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty {popup_init} function plugin |
||||
* |
||||
* Type: function<br> |
||||
* Name: popup_init<br> |
||||
* Purpose: initialize overlib |
||||
* @link http://smarty.php.net/manual/en/language.function.popup.init.php {popup_init} |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param array |
||||
* @param Smarty |
||||
* @return string |
||||
*/ |
||||
function smarty_function_popup_init($params, &$smarty) |
||||
{ |
||||
$zindex = 1000; |
||||
|
||||
if (!empty($params['zindex'])) { |
||||
$zindex = $params['zindex']; |
||||
} |
||||
|
||||
if (!empty($params['src'])) { |
||||
return '<div id="overDiv" style="position:absolute; visibility:hidden; z-index:'.$zindex.';"></div>' . "\n" |
||||
. '<script type="text/javascript" language="JavaScript" src="'.$params['src'].'"></script>' . "\n"; |
||||
} else { |
||||
$smarty->trigger_error("popup_init: missing src parameter"); |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,43 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty capitalize modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: capitalize<br> |
||||
* Purpose: capitalize words in the string |
||||
* @link http://smarty.php.net/manual/en/language.modifiers.php#LANGUAGE.MODIFIER.CAPITALIZE |
||||
* capitalize (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_capitalize($string, $uc_digits = false) |
||||
{ |
||||
smarty_modifier_capitalize_ucfirst(null, $uc_digits); |
||||
return preg_replace_callback('!\'?\b\w(\w|\')*\b!', 'smarty_modifier_capitalize_ucfirst', $string); |
||||
} |
||||
|
||||
function smarty_modifier_capitalize_ucfirst($string, $uc_digits = null) |
||||
{ |
||||
static $_uc_digits = false; |
||||
|
||||
if(isset($uc_digits)) { |
||||
$_uc_digits = $uc_digits; |
||||
return; |
||||
} |
||||
|
||||
if(substr($string[0],0,1) != "'" && !preg_match("!\d!",$string[0]) || $_uc_digits) |
||||
return ucfirst($string[0]); |
||||
else |
||||
return $string[0]; |
||||
} |
||||
|
||||
|
||||
?> |
@ -1,33 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty cat modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: cat<br> |
||||
* Date: Feb 24, 2003 |
||||
* Purpose: catenate a value to a variable |
||||
* Input: string to catenate |
||||
* Example: {$var|cat:"foo"} |
||||
* @link http://smarty.php.net/manual/en/language.modifier.cat.php cat |
||||
* (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @version 1.0 |
||||
* @param string |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_cat($string, $cat) |
||||
{ |
||||
return $string . $cat; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,32 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty count_characters modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: count_characteres<br> |
||||
* Purpose: count the number of characters in a text |
||||
* @link http://smarty.php.net/manual/en/language.modifier.count.characters.php |
||||
* count_characters (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param boolean include whitespace in the character count |
||||
* @return integer |
||||
*/ |
||||
function smarty_modifier_count_characters($string, $include_spaces = false) |
||||
{ |
||||
if ($include_spaces) |
||||
return(strlen($string)); |
||||
|
||||
return preg_match_all("/[^\s]/",$string, $match); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,29 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty count_paragraphs modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: count_paragraphs<br> |
||||
* Purpose: count the number of paragraphs in a text |
||||
* @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php |
||||
* count_paragraphs (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @return integer |
||||
*/ |
||||
function smarty_modifier_count_paragraphs($string) |
||||
{ |
||||
// count \r or \n characters |
||||
return count(preg_split('/[\r\n]+/', $string)); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,29 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty count_sentences modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: count_sentences |
||||
* Purpose: count the number of sentences in a text |
||||
* @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php |
||||
* count_sentences (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @return integer |
||||
*/ |
||||
function smarty_modifier_count_sentences($string) |
||||
{ |
||||
// find periods with a word before but not after. |
||||
return preg_match_all('/[^\s]\.(?!\w)/', $string, $match); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,33 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty count_words modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: count_words<br> |
||||
* Purpose: count the number of words in a text |
||||
* @link http://smarty.php.net/manual/en/language.modifier.count.words.php |
||||
* count_words (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @return integer |
||||
*/ |
||||
function smarty_modifier_count_words($string) |
||||
{ |
||||
// split text by ' ',\r,\n,\f,\t |
||||
$split_array = preg_split('/\s+/',$string); |
||||
// count matches that contain alphanumerics |
||||
$word_count = preg_grep('/[a-zA-Z0-9\\x80-\\xff]/', $split_array); |
||||
|
||||
return count($word_count); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,58 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Include the {@link shared.make_timestamp.php} plugin |
||||
*/ |
||||
require_once $smarty->_get_plugin_filepath('shared', 'make_timestamp'); |
||||
/** |
||||
* Smarty date_format modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: date_format<br> |
||||
* Purpose: format datestamps via strftime<br> |
||||
* Input:<br> |
||||
* - string: input date string |
||||
* - format: strftime format for output |
||||
* - default_date: default date if $string is empty |
||||
* @link http://smarty.php.net/manual/en/language.modifier.date.format.php |
||||
* date_format (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param string |
||||
* @param string |
||||
* @return string|void |
||||
* @uses smarty_make_timestamp() |
||||
*/ |
||||
function smarty_modifier_date_format($string, $format = '%b %e, %Y', $default_date = '') |
||||
{ |
||||
if ($string != '') { |
||||
$timestamp = smarty_make_timestamp($string); |
||||
} elseif ($default_date != '') { |
||||
$timestamp = smarty_make_timestamp($default_date); |
||||
} else { |
||||
return; |
||||
} |
||||
if (DIRECTORY_SEPARATOR == '\\') { |
||||
$_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); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,90 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty debug_print_var modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: debug_print_var<br> |
||||
* Purpose: formats variable contents for display in the console |
||||
* @link http://smarty.php.net/manual/en/language.modifier.debug.print.var.php |
||||
* debug_print_var (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param array|object |
||||
* @param integer |
||||
* @param integer |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_debug_print_var($var, $depth = 0, $length = 40) |
||||
{ |
||||
$_replace = array( |
||||
"\n" => '<i>\n</i>', |
||||
"\r" => '<i>\r</i>', |
||||
"\t" => '<i>\t</i>' |
||||
); |
||||
|
||||
switch (gettype($var)) { |
||||
case 'array' : |
||||
$results = '<b>Array (' . count($var) . ')</b>'; |
||||
foreach ($var as $curr_key => $curr_val) { |
||||
$results .= '<br>' . str_repeat(' ', $depth * 2) |
||||
. '<b>' . strtr($curr_key, $_replace) . '</b> => ' |
||||
. smarty_modifier_debug_print_var($curr_val, ++$depth, $length); |
||||
$depth--; |
||||
} |
||||
break; |
||||
case 'object' : |
||||
$object_vars = get_object_vars($var); |
||||
$results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>'; |
||||
foreach ($object_vars as $curr_key => $curr_val) { |
||||
$results .= '<br>' . str_repeat(' ', $depth * 2) |
||||
. '<b> ->' . strtr($curr_key, $_replace) . '</b> = ' |
||||
. smarty_modifier_debug_print_var($curr_val, ++$depth, $length); |
||||
$depth--; |
||||
} |
||||
break; |
||||
case 'boolean' : |
||||
case 'NULL' : |
||||
case 'resource' : |
||||
if (true === $var) { |
||||
$results = 'true'; |
||||
} elseif (false === $var) { |
||||
$results = 'false'; |
||||
} elseif (null === $var) { |
||||
$results = 'null'; |
||||
} else { |
||||
$results = htmlspecialchars((string) $var); |
||||
} |
||||
$results = '<i>' . $results . '</i>'; |
||||
break; |
||||
case 'integer' : |
||||
case 'float' : |
||||
$results = htmlspecialchars((string) $var); |
||||
break; |
||||
case 'string' : |
||||
$results = strtr($var, $_replace); |
||||
if (strlen($var) > $length ) { |
||||
$results = substr($var, 0, $length - 3) . '...'; |
||||
} |
||||
$results = htmlspecialchars('"' . $results . '"'); |
||||
break; |
||||
case 'unknown type' : |
||||
default : |
||||
$results = strtr((string) $var, $_replace); |
||||
if (strlen($results) > $length ) { |
||||
$results = substr($results, 0, $length - 3) . '...'; |
||||
} |
||||
$results = htmlspecialchars($results); |
||||
} |
||||
|
||||
return $results; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,32 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty default modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: default<br> |
||||
* Purpose: designate default value for empty variables |
||||
* @link http://smarty.php.net/manual/en/language.modifier.default.php |
||||
* default (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_default($string, $default = '') |
||||
{ |
||||
if (!isset($string) || $string === '') |
||||
return $default; |
||||
else |
||||
return $string; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,93 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty escape modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: escape<br> |
||||
* Purpose: Escape the string according to escapement type |
||||
* @link http://smarty.php.net/manual/en/language.modifier.escape.php |
||||
* escape (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param html|htmlall|url|quotes|hex|hexentity|javascript |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1') |
||||
{ |
||||
switch ($esc_type) { |
||||
case 'html': |
||||
return htmlspecialchars($string, ENT_QUOTES, $char_set); |
||||
|
||||
case 'htmlall': |
||||
return htmlentities($string, ENT_QUOTES, $char_set); |
||||
|
||||
case 'url': |
||||
return rawurlencode($string); |
||||
|
||||
case 'urlpathinfo': |
||||
return str_replace('%2F','/',rawurlencode($string)); |
||||
|
||||
case 'quotes': |
||||
// escape unescaped single quotes |
||||
return preg_replace("%(?<!\\\\)'%", "\\'", $string); |
||||
|
||||
case 'hex': |
||||
// escape every character into hex |
||||
$return = ''; |
||||
for ($x=0; $x < strlen($string); $x++) { |
||||
$return .= '%' . bin2hex($string[$x]); |
||||
} |
||||
return $return; |
||||
|
||||
case 'hexentity': |
||||
$return = ''; |
||||
for ($x=0; $x < strlen($string); $x++) { |
||||
$return .= '&#x' . bin2hex($string[$x]) . ';'; |
||||
} |
||||
return $return; |
||||
|
||||
case 'decentity': |
||||
$return = ''; |
||||
for ($x=0; $x < strlen($string); $x++) { |
||||
$return .= '&#' . ord($string[$x]) . ';'; |
||||
} |
||||
return $return; |
||||
|
||||
case 'javascript': |
||||
// escape quotes and backslashes, newlines, etc. |
||||
return strtr($string, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/')); |
||||
|
||||
case 'mail': |
||||
// safe way to display e-mail address on a web page |
||||
return str_replace(array('@', '.'),array(' [AT] ', ' [DOT] '), $string); |
||||
|
||||
case 'nonstd': |
||||
// escape non-standard chars, such as ms document quotes |
||||
$_res = ''; |
||||
for($_i = 0, $_len = strlen($string); $_i < $_len; $_i++) { |
||||
$_ord = ord(substr($string, $_i, 1)); |
||||
// non-standard char, escape it |
||||
if($_ord >= 126){ |
||||
$_res .= '&#' . $_ord . ';'; |
||||
} |
||||
else { |
||||
$_res .= substr($string, $_i, 1); |
||||
} |
||||
} |
||||
return $_res; |
||||
|
||||
default: |
||||
return $string; |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,28 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty indent modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: indent<br> |
||||
* Purpose: indent lines of text |
||||
* @link http://smarty.php.net/manual/en/language.modifier.indent.php |
||||
* indent (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param integer |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_indent($string,$chars=4,$char=" ") |
||||
{ |
||||
return preg_replace('!^!m',str_repeat($char,$chars),$string); |
||||
} |
||||
|
||||
?> |
@ -1,26 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty lower modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: lower<br> |
||||
* Purpose: convert string to lowercase |
||||
* @link http://smarty.php.net/manual/en/language.modifier.lower.php |
||||
* lower (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_lower($string) |
||||
{ |
||||
return strtolower($string); |
||||
} |
||||
|
||||
?> |
@ -1,35 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: nl2br<br> |
||||
* Date: Feb 26, 2003 |
||||
* Purpose: convert \r\n, \r or \n to <<br>> |
||||
* Input:<br> |
||||
* - contents = contents to replace |
||||
* - preceed_test = if true, includes preceeding break tags |
||||
* in replacement |
||||
* Example: {$text|nl2br} |
||||
* @link http://smarty.php.net/manual/en/language.modifier.nl2br.php |
||||
* nl2br (Smarty online manual) |
||||
* @version 1.0 |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_nl2br($string) |
||||
{ |
||||
return nl2br($string); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,48 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty regex_replace modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: regex_replace<br> |
||||
* Purpose: regular expression search/replace |
||||
* @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php |
||||
* regex_replace (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param string|array |
||||
* @param string|array |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_regex_replace($string, $search, $replace) |
||||
{ |
||||
if(is_array($search)) { |
||||
foreach($search as $idx => $s) |
||||
$search[$idx] = _smarty_regex_replace_check($s); |
||||
} else { |
||||
$search = _smarty_regex_replace_check($search); |
||||
} |
||||
|
||||
return preg_replace($search, $replace, $string); |
||||
} |
||||
|
||||
function _smarty_regex_replace_check($search) |
||||
{ |
||||
if (($pos = strpos($search,"\0")) !== false) |
||||
$search = substr($search,0,$pos); |
||||
if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) { |
||||
/* remove eval-modifier from $search */ |
||||
$search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]); |
||||
} |
||||
return $search; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,30 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty replace modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: replace<br> |
||||
* Purpose: simple search/replace |
||||
* @link http://smarty.php.net/manual/en/language.modifier.replace.php |
||||
* replace (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param string |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_replace($string, $search, $replace) |
||||
{ |
||||
return str_replace($search, $replace, $string); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,30 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty spacify modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: spacify<br> |
||||
* Purpose: add spaces between characters in a string |
||||
* @link http://smarty.php.net/manual/en/language.modifier.spacify.php |
||||
* spacify (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_spacify($string, $spacify_char = ' ') |
||||
{ |
||||
return implode($spacify_char, |
||||
preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY)); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,29 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty string_format modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: string_format<br> |
||||
* Purpose: format strings via sprintf |
||||
* @link http://smarty.php.net/manual/en/language.modifier.string.format.php |
||||
* string_format (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_string_format($string, $format) |
||||
{ |
||||
return sprintf($format, $string); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,33 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty strip modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: strip<br> |
||||
* Purpose: Replace all repeated spaces, newlines, tabs |
||||
* with a single space or supplied replacement string.<br> |
||||
* Example: {$var|strip} {$var|strip:" "} |
||||
* Date: September 25th, 2002 |
||||
* @link http://smarty.php.net/manual/en/language.modifier.strip.php |
||||
* strip (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @version 1.0 |
||||
* @param string |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_strip($text, $replace = ' ') |
||||
{ |
||||
return preg_replace('!\s+!', $replace, $text); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,32 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty strip_tags modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: strip_tags<br> |
||||
* Purpose: strip html tags from text |
||||
* @link http://smarty.php.net/manual/en/language.modifier.strip.tags.php |
||||
* strip_tags (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param boolean |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_strip_tags($string, $replace_with_space = true) |
||||
{ |
||||
if ($replace_with_space) |
||||
return preg_replace('!<[^>]*?>!', ' ', $string); |
||||
else |
||||
return strip_tags($string); |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,50 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty truncate modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: truncate<br> |
||||
* Purpose: Truncate a string to a certain length if necessary, |
||||
* optionally splitting in the middle of a word, and |
||||
* appending the $etc string or inserting $etc into the middle. |
||||
* @link http://smarty.php.net/manual/en/language.modifier.truncate.php |
||||
* truncate (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param integer |
||||
* @param string |
||||
* @param boolean |
||||
* @param boolean |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_truncate($string, $length = 80, $etc = '...', |
||||
$break_words = false, $middle = false) |
||||
{ |
||||
if ($length == 0) |
||||
return ''; |
||||
|
||||
if (strlen($string) > $length) { |
||||
$length -= min($length, strlen($etc)); |
||||
if (!$break_words && !$middle) { |
||||
$string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1)); |
||||
} |
||||
if(!$middle) { |
||||
return substr($string, 0, $length) . $etc; |
||||
} else { |
||||
return substr($string, 0, $length/2) . $etc . substr($string, -$length/2); |
||||
} |
||||
} else { |
||||
return $string; |
||||
} |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,26 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty upper modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: upper<br> |
||||
* Purpose: convert string to uppercase |
||||
* @link http://smarty.php.net/manual/en/language.modifier.upper.php |
||||
* upper (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_upper($string) |
||||
{ |
||||
return strtoupper($string); |
||||
} |
||||
|
||||
?> |
@ -1,29 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Smarty wordwrap modifier plugin |
||||
* |
||||
* Type: modifier<br> |
||||
* Name: wordwrap<br> |
||||
* Purpose: wrap a string of text at a given length |
||||
* @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php |
||||
* wordwrap (Smarty online manual) |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @param integer |
||||
* @param string |
||||
* @param boolean |
||||
* @return string |
||||
*/ |
||||
function smarty_modifier_wordwrap($string,$length=80,$break="\n",$cut=false) |
||||
{ |
||||
return wordwrap($string,$length,$break,$cut); |
||||
} |
||||
|
||||
?> |
@ -1,75 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
/** |
||||
* Smarty trimwhitespace outputfilter plugin |
||||
* |
||||
* File: outputfilter.trimwhitespace.php<br> |
||||
* Type: outputfilter<br> |
||||
* Name: trimwhitespace<br> |
||||
* Date: Jan 25, 2003<br> |
||||
* Purpose: trim leading white space and blank lines from |
||||
* template source after it gets interpreted, cleaning |
||||
* up code and saving bandwidth. Does not affect |
||||
* <<PRE>></PRE> and <SCRIPT></SCRIPT> blocks.<br> |
||||
* Install: Drop into the plugin directory, call |
||||
* <code>$smarty->load_filter('output','trimwhitespace');</code> |
||||
* from application. |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @author Contributions from Lars Noschinski <lars@usenet.noschinski.de> |
||||
* @version 1.3 |
||||
* @param string |
||||
* @param Smarty |
||||
*/ |
||||
function smarty_outputfilter_trimwhitespace($source, &$smarty) |
||||
{ |
||||
// Pull out the script blocks |
||||
preg_match_all("!<script[^>]*?>.*?</script>!is", $source, $match); |
||||
$_script_blocks = $match[0]; |
||||
$source = preg_replace("!<script[^>]*?>.*?</script>!is", |
||||
'@@@SMARTY:TRIM:SCRIPT@@@', $source); |
||||
|
||||
// Pull out the pre blocks |
||||
preg_match_all("!<pre[^>]*?>.*?</pre>!is", $source, $match); |
||||
$_pre_blocks = $match[0]; |
||||
$source = preg_replace("!<pre[^>]*?>.*?</pre>!is", |
||||
'@@@SMARTY:TRIM:PRE@@@', $source); |
||||
|
||||
// Pull out the textarea blocks |
||||
preg_match_all("!<textarea[^>]*?>.*?</textarea>!is", $source, $match); |
||||
$_textarea_blocks = $match[0]; |
||||
$source = preg_replace("!<textarea[^>]*?>.*?</textarea>!is", |
||||
'@@@SMARTY:TRIM:TEXTAREA@@@', $source); |
||||
|
||||
// remove all leading spaces, tabs and carriage returns NOT |
||||
// preceeded by a php close tag. |
||||
$source = trim(preg_replace('/((?<!\?>)\n)[\s]+/m', '\1', $source)); |
||||
|
||||
// replace textarea blocks |
||||
smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:TEXTAREA@@@",$_textarea_blocks, $source); |
||||
|
||||
// replace pre blocks |
||||
smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:PRE@@@",$_pre_blocks, $source); |
||||
|
||||
// replace script blocks |
||||
smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:SCRIPT@@@",$_script_blocks, $source); |
||||
|
||||
return $source; |
||||
} |
||||
|
||||
function smarty_outputfilter_trimwhitespace_replace($search_str, $replace, &$subject) { |
||||
$_len = strlen($search_str); |
||||
$_pos = 0; |
||||
for ($_i=0, $_count=count($replace); $_i<$_count; $_i++) |
||||
if (($_pos=strpos($subject, $search_str, $_pos))!==false) |
||||
$subject = substr_replace($subject, $replace[$_i], $_pos, $_len); |
||||
else |
||||
break; |
||||
|
||||
} |
||||
|
||||
?> |
@ -1,31 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty shared plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* escape_special_chars common function |
||||
* |
||||
* Function: smarty_function_escape_special_chars<br> |
||||
* Purpose: used by other smarty functions to escape |
||||
* special chars except for already escaped ones |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_function_escape_special_chars($string) |
||||
{ |
||||
if(!is_array($string)) { |
||||
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); |
||||
$string = htmlspecialchars($string); |
||||
$string = str_replace(array('%%%SMARTY_START%%%','%%%SMARTY_END%%%'), array('&',';'), $string); |
||||
} |
||||
return $string; |
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
@ -1,46 +0,0 @@
|
||||
<?php |
||||
/** |
||||
* Smarty shared plugin |
||||
* @package Smarty |
||||
* @subpackage plugins |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Function: smarty_make_timestamp<br> |
||||
* Purpose: used by other smarty functions to make a timestamp |
||||
* from a string. |
||||
* @author Monte Ohrt <monte at ohrt dot com> |
||||
* @param string |
||||
* @return string |
||||
*/ |
||||
function smarty_make_timestamp($string) |
||||
{ |
||||
if(empty($string)) { |
||||
// use "now": |
||||
$time = time(); |
||||
|
||||
} elseif (preg_match('/^\d{14}$/', $string)) { |
||||
// it is mysql timestamp format of YYYYMMDDHHMMSS? |
||||
$time = 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 |
||||
$time = (int)$string; |
||||
|
||||
} else { |
||||
// strtotime should handle it |
||||
$time = strtotime($string); |
||||
if ($time == -1 || $time === false) { |
||||
// strtotime() was not able to parse $string, use "now": |
||||
$time = time(); |
||||
} |
||||
} |
||||
return $time; |
||||
|
||||
} |
||||
|
||||
/* vim: set expandtab: */ |
||||
|
||||
?> |
Loading…
Reference in new issue