Code

1778ffb538c3d7265fd18cb564cc317549996f33
[gosa.git] / gosa-core / include / smarty / plugins / function.cycle.php
1 <?php
2 /**
3  * Smarty plugin
4  *
5  * @package Smarty
6  * @subpackage PluginsFunction
7  */
9 /**
10  * Smarty {cycle} function plugin
11  *
12  * Type:     function<br>
13  * Name:     cycle<br>
14  * Date:     May 3, 2002<br>
15  * Purpose:  cycle through given values<br>
16  * Params:
17  * <pre>
18  * - name      - name of cycle (optional)
19  * - values    - comma separated list of values to cycle, or an array of values to cycle
20  *               (this can be left out for subsequent calls)
21  * - reset     - boolean - resets given var to true
22  * - print     - boolean - print var or not. default is true
23  * - advance   - boolean - whether or not to advance the cycle
24  * - delimiter - the value delimiter, default is ","
25  * - assign    - boolean, assigns to template var instead of printed.
26  * </pre>
27  * Examples:<br>
28  * <pre>
29  * {cycle values="#eeeeee,#d0d0d0d"}
30  * {cycle name=row values="one,two,three" reset=true}
31  * {cycle name=row}
32  * </pre>
33  *
34  * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
35  *       (Smarty online manual)
36  * @author Monte Ohrt <monte at ohrt dot com>
37  * @author credit to Mark Priatel <mpriatel@rogers.com>
38  * @author credit to Gerard <gerard@interfold.com>
39  * @author credit to Jason Sweat <jsweat_php@yahoo.com>
40  * @version  1.3
41  * @param array                    $params   parameters
42  * @param Smarty_Internal_Template $template template object
43  * @return string|null
44  */
46 function smarty_function_cycle($params, $template)
47 {
48     static $cycle_vars;
50     $name = (empty($params['name'])) ? 'default' : $params['name'];
51     $print = (isset($params['print'])) ? (bool)$params['print'] : true;
52     $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true;
53     $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false;
55     if (!isset($params['values'])) {
56         if(!isset($cycle_vars[$name]['values'])) {
57             trigger_error("cycle: missing 'values' parameter");
58             return;
59         }
60     } else {
61         if(isset($cycle_vars[$name]['values'])
62             && $cycle_vars[$name]['values'] != $params['values'] ) {
63             $cycle_vars[$name]['index'] = 0;
64         }
65         $cycle_vars[$name]['values'] = $params['values'];
66     }
68     if (isset($params['delimiter'])) {
69         $cycle_vars[$name]['delimiter'] = $params['delimiter'];
70     } elseif (!isset($cycle_vars[$name]['delimiter'])) {
71         $cycle_vars[$name]['delimiter'] = ',';
72     }
74     if(is_array($cycle_vars[$name]['values'])) {
75         $cycle_array = $cycle_vars[$name]['values'];
76     } else {
77         $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
78     }
80     if(!isset($cycle_vars[$name]['index']) || $reset ) {
81         $cycle_vars[$name]['index'] = 0;
82     }
84     if (isset($params['assign'])) {
85         $print = false;
86         $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
87     }
89     if($print) {
90         $retval = $cycle_array[$cycle_vars[$name]['index']];
91     } else {
92         $retval = null;
93     }
95     if($advance) {
96         if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {
97             $cycle_vars[$name]['index'] = 0;
98         } else {
99             $cycle_vars[$name]['index']++;
100         }
101     }
103     return $retval;
106 ?>