forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.2 KiB
92 lines
3.2 KiB
<?php |
|
/** |
|
* Smarty plugin |
|
* |
|
* @package Smarty |
|
* @subpackage PluginsFunction |
|
*/ |
|
/** |
|
* Smarty {cycle} function plugin |
|
* Type: function |
|
* Name: cycle |
|
* Date: May 3, 2002 |
|
* Purpose: cycle through given values |
|
* Params: |
|
* |
|
* - name - name of cycle (optional) |
|
* - values - comma separated list of values to cycle, or an array of values to cycle |
|
* (this can be left out for subsequent calls) |
|
* - reset - boolean - resets given var to true |
|
* - print - boolean - print var or not. default is true |
|
* - advance - boolean - whether or not to advance the cycle |
|
* - delimiter - the value delimiter, default is "," |
|
* - assign - boolean, assigns to template var instead of printed. |
|
* |
|
* Examples: |
|
* |
|
* {cycle values="#eeeeee,#d0d0d0d"} |
|
* {cycle name=row values="one,two,three" reset=true} |
|
* {cycle name=row} |
|
* |
|
* @link https://www.smarty.net/manual/en/language.function.cycle.php {cycle} |
|
* (Smarty online manual) |
|
* @author Monte Ohrt <monte at ohrt dot com> |
|
* @author credit to Mark Priatel <mpriatel@rogers.com> |
|
* @author credit to Gerard <gerard@interfold.com> |
|
* @author credit to Jason Sweat <jsweat_php@yahoo.com> |
|
* @version 1.3 |
|
* |
|
* @param array $params parameters |
|
* @param Smarty_Internal_Template $template template object |
|
* |
|
* @return string|null |
|
*/ |
|
function smarty_function_cycle($params, $template) |
|
{ |
|
static $cycle_vars; |
|
$name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ]; |
|
$print = (isset($params[ 'print' ])) ? (bool)$params[ 'print' ] : true; |
|
$advance = (isset($params[ 'advance' ])) ? (bool)$params[ 'advance' ] : true; |
|
$reset = (isset($params[ 'reset' ])) ? (bool)$params[ 'reset' ] : false; |
|
if (!isset($params[ 'values' ])) { |
|
if (!isset($cycle_vars[ $name ][ 'values' ])) { |
|
trigger_error('cycle: missing \'values\' parameter'); |
|
return; |
|
} |
|
} else { |
|
if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] !== $params[ 'values' ]) { |
|
$cycle_vars[ $name ][ 'index' ] = 0; |
|
} |
|
$cycle_vars[ $name ][ 'values' ] = $params[ 'values' ]; |
|
} |
|
if (isset($params[ 'delimiter' ])) { |
|
$cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ]; |
|
} elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) { |
|
$cycle_vars[ $name ][ 'delimiter' ] = ','; |
|
} |
|
if (is_array($cycle_vars[ $name ][ 'values' ])) { |
|
$cycle_array = $cycle_vars[ $name ][ 'values' ]; |
|
} else { |
|
$cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]); |
|
} |
|
if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) { |
|
$cycle_vars[ $name ][ 'index' ] = 0; |
|
} |
|
if (isset($params[ 'assign' ])) { |
|
$print = false; |
|
$template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]); |
|
} |
|
if ($print) { |
|
$retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]; |
|
} else { |
|
$retval = null; |
|
} |
|
if ($advance) { |
|
if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) { |
|
$cycle_vars[ $name ][ 'index' ] = 0; |
|
} else { |
|
$cycle_vars[ $name ][ 'index' ]++; |
|
} |
|
} |
|
return $retval; |
|
}
|
|
|