mirror of https://github.com/avecms/AVE.cms.git
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.
80 lines
1.7 KiB
80 lines
1.7 KiB
<?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: */ |
|
|
|
?>
|
|
|