- * @link http://smarty.php.net/manual/en/language.function.counter.php {counter}
+ * @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
* (Smarty online manual)
- * @param array parameters
- * @param Smarty
- * @param object $template template object
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
* @return string|null
*/
function smarty_function_counter($params, $template)
diff --git a/lib/classes/Smarty-3.0.8/libs/plugins/function.cycle.php b/lib/classes/Smarty-3.1.14/libs/plugins/function.cycle.php
similarity index 74%
rename from lib/classes/Smarty-3.0.8/libs/plugins/function.cycle.php
rename to lib/classes/Smarty-3.1.14/libs/plugins/function.cycle.php
index 98e3e287..1778ffb5 100644
--- a/lib/classes/Smarty-3.0.8/libs/plugins/function.cycle.php
+++ b/lib/classes/Smarty-3.1.14/libs/plugins/function.cycle.php
@@ -13,46 +13,46 @@
* Name: cycle
* Date: May 3, 2002
* Purpose: cycle through given values
- * 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.
- *
+ * Params:
+ *
+ * - name - name of cycle (optional)
+ * - values - comma separated list of values to cycle, or an array of values to cycle
+ * (this can be left out for subsequent calls)
+ * - reset - boolean - resets given var to true
+ * - print - boolean - print var or not. default is true
+ * - advance - boolean - whether or not to advance the cycle
+ * - delimiter - the value delimiter, default is ","
+ * - assign - boolean, assigns to template var instead of printed.
+ *
* Examples:
*
* {cycle values="#eeeeee,#d0d0d0d"}
* {cycle name=row values="one,two,three" reset=true}
* {cycle name=row}
*
- * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle}
+ *
+ * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
* (Smarty online manual)
* @author Monte Ohrt
* @author credit to Mark Priatel
* @author credit to Gerard
* @author credit to Jason Sweat
* @version 1.3
- * @param array
- * @param object $template template object
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
* @return string|null
*/
function smarty_function_cycle($params, $template)
{
static $cycle_vars;
-
+
$name = (empty($params['name'])) ? 'default' : $params['name'];
$print = (isset($params['print'])) ? (bool)$params['print'] : true;
$advance = (isset($params['advance'])) ? (bool)$params['advance'] : true;
$reset = (isset($params['reset'])) ? (bool)$params['reset'] : false;
-
- if (!in_array('values', array_keys($params))) {
+
+ if (!isset($params['values'])) {
if(!isset($cycle_vars[$name]['values'])) {
trigger_error("cycle: missing 'values' parameter");
return;
@@ -68,24 +68,24 @@ function smarty_function_cycle($params, $template)
if (isset($params['delimiter'])) {
$cycle_vars[$name]['delimiter'] = $params['delimiter'];
} elseif (!isset($cycle_vars[$name]['delimiter'])) {
- $cycle_vars[$name]['delimiter'] = ',';
+ $cycle_vars[$name]['delimiter'] = ',';
}
-
+
if(is_array($cycle_vars[$name]['values'])) {
$cycle_array = $cycle_vars[$name]['values'];
} else {
$cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
}
-
+
if(!isset($cycle_vars[$name]['index']) || $reset ) {
$cycle_vars[$name]['index'] = 0;
}
-
+
if (isset($params['assign'])) {
$print = false;
$template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
}
-
+
if($print) {
$retval = $cycle_array[$cycle_vars[$name]['index']];
} else {
@@ -99,7 +99,7 @@ function smarty_function_cycle($params, $template)
$cycle_vars[$name]['index']++;
}
}
-
+
return $retval;
}
diff --git a/lib/classes/Smarty-3.1.14/libs/plugins/function.fetch.php b/lib/classes/Smarty-3.1.14/libs/plugins/function.fetch.php
new file mode 100644
index 00000000..eca1182d
--- /dev/null
+++ b/lib/classes/Smarty-3.1.14/libs/plugins/function.fetch.php
@@ -0,0 +1,214 @@
+
+ * Name: fetch
+ * Purpose: fetch file, web or ftp data and display results
+ *
+ * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch}
+ * (Smarty online manual)
+ * @author Monte Ohrt
+ * @param array $params parameters
+ * @param Smarty_Internal_Template $template template object
+ * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
+ */
+function smarty_function_fetch($params, $template)
+{
+ if (empty($params['file'])) {
+ trigger_error("[plugin] fetch parameter 'file' cannot be empty",E_USER_NOTICE);
+ return;
+ }
+
+ // strip file protocol
+ if (stripos($params['file'], 'file://') === 0) {
+ $params['file'] = substr($params['file'], 7);
+ }
+
+ $protocol = strpos($params['file'], '://');
+ if ($protocol !== false) {
+ $protocol = strtolower(substr($params['file'], 0, $protocol));
+ }
+
+ if (isset($template->smarty->security_policy)) {
+ if ($protocol) {
+ // remote resource (or php stream, …)
+ if(!$template->smarty->security_policy->isTrustedUri($params['file'])) {
+ return;
+ }
+ } else {
+ // local file
+ if(!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) {
+ return;
+ }
+ }
+ }
+
+ $content = '';
+ if ($protocol == 'http') {
+ // http fetch
+ if($uri_parts = parse_url($params['file'])) {
+ // set defaults
+ $host = $server_name = $uri_parts['host'];
+ $timeout = 30;
+ $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
+ $agent = "Smarty Template Engine ". Smarty::SMARTY_VERSION;
+ $referer = "";
+ $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
+ $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
+ $_is_proxy = false;
+ if(empty($uri_parts['port'])) {
+ $port = 80;
+ } else {
+ $port = $uri_parts['port'];
+ }
+ if(!empty($uri_parts['user'])) {
+ $user = $uri_parts['user'];
+ }
+ if(!empty($uri_parts['pass'])) {
+ $pass = $uri_parts['pass'];
+ }
+ // loop through parameters, setup headers
+ foreach($params as $param_key => $param_value) {
+ switch($param_key) {
+ case "file":
+ case "assign":
+ case "assign_headers":
+ break;
+ case "user":
+ if(!empty($param_value)) {
+ $user = $param_value;
+ }
+ break;
+ case "pass":
+ if(!empty($param_value)) {
+ $pass = $param_value;
+ }
+ break;
+ case "accept":
+ if(!empty($param_value)) {
+ $accept = $param_value;
+ }
+ break;
+ case "header":
+ if(!empty($param_value)) {
+ if(!preg_match('![\w\d-]+: .+!',$param_value)) {
+ trigger_error("[plugin] invalid header format '".$param_value."'",E_USER_NOTICE);
+ return;
+ } else {
+ $extra_headers[] = $param_value;
+ }
+ }
+ break;
+ case "proxy_host":
+ if(!empty($param_value)) {
+ $proxy_host = $param_value;
+ }
+ break;
+ case "proxy_port":
+ if(!preg_match('!\D!', $param_value)) {
+ $proxy_port = (int) $param_value;
+ } else {
+ trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE);
+ return;
+ }
+ break;
+ case "agent":
+ if(!empty($param_value)) {
+ $agent = $param_value;
+ }
+ break;
+ case "referer":
+ if(!empty($param_value)) {
+ $referer = $param_value;
+ }
+ break;
+ case "timeout":
+ if(!preg_match('!\D!', $param_value)) {
+ $timeout = (int) $param_value;
+ } else {
+ trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE);
+ return;
+ }
+ break;
+ default:
+ trigger_error("[plugin] unrecognized attribute '".$param_key."'",E_USER_NOTICE);
+ return;
+ }
+ }
+ if(!empty($proxy_host) && !empty($proxy_port)) {
+ $_is_proxy = true;
+ $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout);
+ } else {
+ $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout);
+ }
+
+ if(!$fp) {
+ trigger_error("[plugin] unable to fetch: $errstr ($errno)",E_USER_NOTICE);
+ return;
+ } else {
+ if($_is_proxy) {
+ fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
+ } else {
+ fputs($fp, "GET $uri HTTP/1.0\r\n");
+ }
+ if(!empty($host)) {
+ fputs($fp, "Host: $host\r\n");
+ }
+ if(!empty($accept)) {
+ fputs($fp, "Accept: $accept\r\n");
+ }
+ if(!empty($agent)) {
+ fputs($fp, "User-Agent: $agent\r\n");
+ }
+ if(!empty($referer)) {
+ fputs($fp, "Referer: $referer\r\n");
+ }
+ if(isset($extra_headers) && is_array($extra_headers)) {
+ foreach($extra_headers as $curr_header) {
+ fputs($fp, $curr_header."\r\n");
+ }
+ }
+ if(!empty($user) && !empty($pass)) {
+ fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n");
+ }
+
+ fputs($fp, "\r\n");
+ while(!feof($fp)) {
+ $content .= fgets($fp,4096);
+ }
+ fclose($fp);
+ $csplit = preg_split("!\r\n\r\n!",$content,2);
+
+ $content = $csplit[1];
+
+ if(!empty($params['assign_headers'])) {
+ $template->assign($params['assign_headers'],preg_split("!\r\n!",$csplit[0]));
+ }
+ }
+ } else {
+ trigger_error("[plugin fetch] unable to parse URL, check syntax",E_USER_NOTICE);
+ return;
+ }
+ } else {
+ $content = @file_get_contents($params['file']);
+ if ($content === false) {
+ throw new SmartyException("{fetch} cannot read resource '" . $params['file'] ."'");
+ }
+ }
+
+ if (!empty($params['assign'])) {
+ $template->assign($params['assign'], $content);
+ } else {
+ return $content;
+ }
+}
+
+?>
\ No newline at end of file
diff --git a/lib/classes/Smarty-3.1.14/libs/plugins/function.html_checkboxes.php b/lib/classes/Smarty-3.1.14/libs/plugins/function.html_checkboxes.php
new file mode 100644
index 00000000..1866bc2f
--- /dev/null
+++ b/lib/classes/Smarty-3.1.14/libs/plugins/function.html_checkboxes.php
@@ -0,0 +1,233 @@
+
+ * Type: function
+ * Name: html_checkboxes
+ * Date: 24.Feb.2003
+ * Purpose: Prints out a list of checkbox input types
+ * Examples:
+ *
+ * {html_checkboxes values=$ids output=$names}
+ * {html_checkboxes values=$ids name='box' separator='
' output=$names}
+ * {html_checkboxes values=$ids checked=$checked separator='
' output=$names}
+ *
+ * Params:
+ *
+ * - name (optional) - string default "checkbox"
+ * - values (required) - array
+ * - options (optional) - associative array
+ * - checked (optional) - array default not set
+ * - separator (optional) - ie
or
+ * - output (optional) - the output next to each checkbox
+ * - assign (optional) - assign the output as an array to this variable
+ * - escape (optional) - escape the content (not value), defaults to true
+ *
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
+ * (Smarty online manual)
+ * @author Christopher Kvarme
+ * @author credits to Monte Ohrt
+ * @version 1.0
+ * @param array $params parameters
+ * @param object $template template object
+ * @return string
+ * @uses smarty_function_escape_special_chars()
+ */
+function smarty_function_html_checkboxes($params, $template)
+{
+ require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
+
+ $name = 'checkbox';
+ $values = null;
+ $options = null;
+ $selected = array();
+ $separator = '';
+ $escape = true;
+ $labels = true;
+ $label_ids = false;
+ $output = null;
+
+ $extra = '';
+
+ foreach($params as $_key => $_val) {
+ switch($_key) {
+ case 'name':
+ case 'separator':
+ $$_key = (string) $_val;
+ break;
+
+ case 'escape':
+ case 'labels':
+ case 'label_ids':
+ $$_key = (bool) $_val;
+ break;
+
+ case 'options':
+ $$_key = (array) $_val;
+ break;
+
+ case 'values':
+ case 'output':
+ $$_key = array_values((array) $_val);
+ break;
+
+ case 'checked':
+ case 'selected':
+ if (is_array($_val)) {
+ $selected = array();
+ foreach ($_val as $_sel) {
+ if (is_object($_sel)) {
+ if (method_exists($_sel, "__toString")) {
+ $_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
+ } else {
+ trigger_error("html_checkboxes: selected attribute contains an object of class '". get_class($_sel) ."' without __toString() method", E_USER_NOTICE);
+ continue;
+ }
+ } else {
+ $_sel = smarty_function_escape_special_chars((string) $_sel);
+ }
+ $selected[$_sel] = true;
+ }
+ } elseif (is_object($_val)) {
+ if (method_exists($_val, "__toString")) {
+ $selected = smarty_function_escape_special_chars((string) $_val->__toString());
+ } else {
+ trigger_error("html_checkboxes: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
+ }
+ } else {
+ $selected = smarty_function_escape_special_chars((string) $_val);
+ }
+ break;
+
+ case 'checkboxes':
+ trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING);
+ $options = (array) $_val;
+ break;
+
+ case 'assign':
+ break;
+
+ case 'strict': break;
+
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params['strict'])) {
+ if (!is_scalar($_val)) {
+ trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
+ }
+
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+
+ break;
+ }
+ // omit break; to fall through!
+
+ default:
+ if(!is_array($_val)) {
+ $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
+ } else {
+ trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
+ }
+ break;
+ }
+ }
+
+ if (!isset($options) && !isset($values))
+ return ''; /* raise error here? */
+
+ $_html_result = array();
+
+ if (isset($options)) {
+ foreach ($options as $_key=>$_val) {
+ $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
+ }
+ } else {
+ foreach ($values as $_i=>$_key) {
+ $_val = isset($output[$_i]) ? $output[$_i] : '';
+ $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
+ }
+ }
+
+ if(!empty($params['assign'])) {
+ $template->assign($params['assign'], $_html_result);
+ } else {
+ return implode("\n", $_html_result);
+ }
+
+}
+
+function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape=true) {
+ $_output = '';
+
+ if (is_object($value)) {
+ if (method_exists($value, "__toString")) {
+ $value = (string) $value->__toString();
+ } else {
+ trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
+ return '';
+ }
+ } else {
+ $value = (string) $value;
+ }
+
+ if (is_object($output)) {
+ if (method_exists($output, "__toString")) {
+ $output = (string) $output->__toString();
+ } else {
+ trigger_error("html_options: output is an object of class '". get_class($output) ."' without __toString() method", E_USER_NOTICE);
+ return '';
+ }
+ } else {
+ $output = (string) $output;
+ }
+
+ if ($labels) {
+ if ($label_ids) {
+ $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
+ $_output .= '