1: | <?php
|
2: | |
3: | |
4: | |
5: | |
6: | |
7: |
|
8: | |
9: | |
10: | |
11: | |
12: | |
13: | |
14: | |
15: | |
16: | |
17: | |
18: | |
19: | |
20: | |
21: | |
22: | |
23: | |
24: | |
25: | |
26: | |
27: | |
28: | |
29: | |
30: | |
31: | |
32: | |
33: | |
34: | |
35: | |
36: | |
37: | |
38: | |
39: | |
40: | |
41: | |
42: | |
43: |
|
44: | function smarty_function_cycle($params, $template)
|
45: | {
|
46: | static $cycle_vars;
|
47: | $name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ];
|
48: | $print = (isset($params[ 'print' ])) ? (bool)$params[ 'print' ] : true;
|
49: | $advance = (isset($params[ 'advance' ])) ? (bool)$params[ 'advance' ] : true;
|
50: | $reset = (isset($params[ 'reset' ])) ? (bool)$params[ 'reset' ] : false;
|
51: | if (!isset($params[ 'values' ])) {
|
52: | if (!isset($cycle_vars[ $name ][ 'values' ])) {
|
53: | trigger_error('cycle: missing \'values\' parameter');
|
54: | return;
|
55: | }
|
56: | } else {
|
57: | if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] !== $params[ 'values' ]) {
|
58: | $cycle_vars[ $name ][ 'index' ] = 0;
|
59: | }
|
60: | $cycle_vars[ $name ][ 'values' ] = $params[ 'values' ];
|
61: | }
|
62: | if (isset($params[ 'delimiter' ])) {
|
63: | $cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ];
|
64: | } elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) {
|
65: | $cycle_vars[ $name ][ 'delimiter' ] = ',';
|
66: | }
|
67: | if (is_array($cycle_vars[ $name ][ 'values' ])) {
|
68: | $cycle_array = $cycle_vars[ $name ][ 'values' ];
|
69: | } else {
|
70: | $cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]);
|
71: | }
|
72: | if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) {
|
73: | $cycle_vars[ $name ][ 'index' ] = 0;
|
74: | }
|
75: | if (isset($params[ 'assign' ])) {
|
76: | $print = false;
|
77: | $template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]);
|
78: | }
|
79: | if ($print) {
|
80: | $retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ];
|
81: | } else {
|
82: | $retval = null;
|
83: | }
|
84: | if ($advance) {
|
85: | if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) {
|
86: | $cycle_vars[ $name ][ 'index' ] = 0;
|
87: | } else {
|
88: | $cycle_vars[ $name ][ 'index' ]++;
|
89: | }
|
90: | }
|
91: | return $retval;
|
92: | }
|
93: | |