1: <?php
 2:  3:  4:  5:  6: 
 7: 
 8: 
 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 
22: function smarty_function_counter($params, &$smarty)
23: {
24:     static $counters = array();
25: 
26:     $name = (isset($params['name'])) ? $params['name'] : 'default';
27:     if (!isset($counters[$name])) {
28:         $counters[$name] = array(
29:             'start'=>1,
30:             'skip'=>1,
31:             'direction'=>'up',
32:             'count'=>1
33:             );
34:     }
35:     $counter =& $counters[$name];
36: 
37:     if (isset($params['start'])) {
38:         $counter['start'] = $counter['count'] = (int)$params['start'];
39:     }
40: 
41:     if (!empty($params['assign'])) {
42:         $counter['assign'] = $params['assign'];
43:     }
44: 
45:     if (isset($counter['assign'])) {
46:         $smarty->assign($counter['assign'], $counter['count']);
47:     }
48:     
49:     if (isset($params['print'])) {
50:         $print = (bool)$params['print'];
51:     } else {
52:         $print = empty($counter['assign']);
53:     }
54: 
55:     if ($print) {
56:         $retval = $counter['count'];
57:     } else {
58:         $retval = null;
59:     }
60: 
61:     if (isset($params['skip'])) {
62:         $counter['skip'] = $params['skip'];
63:     }
64:     
65:     if (isset($params['direction'])) {
66:         $counter['direction'] = $params['direction'];
67:     }
68: 
69:     if ($counter['direction'] == "down")
70:         $counter['count'] -= $counter['skip'];
71:     else
72:         $counter['count'] += $counter['skip'];
73:     
74:     return $retval;
75:     
76: }
77: 
78: 
79: 
80: ?>
81: