c2e899d0d121e5a6b5a71642d724c5313744a589
[atutor.git] / mods / phpdoc2 / PhpDocumentor / phpDocumentor / Smarty-2.6.0 / libs / plugins / function.cycle.php
1 <?php\r
2 /**\r
3  * Smarty plugin\r
4  * @package Smarty\r
5  * @subpackage plugins\r
6  */\r
7 \r
8 /**\r
9  * Smarty {cycle} function plugin\r
10  *\r
11  * Type:     function<br>\r
12  * Name:     cycle<br>\r
13  * Date:     May 3, 2002<br>\r
14  * Purpose:  cycle through given values<br>\r
15  * Input:\r
16  *         - name = name of cycle (optional)\r
17  *         - values = comma separated list of values to cycle,\r
18  *                    or an array of values to cycle\r
19  *                    (this can be left out for subsequent calls)\r
20  *         - reset = boolean - resets given var to true\r
21  *         - print = boolean - print var or not. default is true\r
22  *         - advance = boolean - whether or not to advance the cycle\r
23  *         - delimiter = the value delimiter, default is ","\r
24  *         - assign = boolean, assigns to template var instead of\r
25  *                    printed.\r
26  * \r
27  * Examples:<br>\r
28  * <pre>\r
29  * {cycle values="#eeeeee,#d0d0d0d"}\r
30  * {cycle name=row values="one,two,three" reset=true}\r
31  * {cycle name=row}\r
32  * </pre>\r
33  * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle}\r
34  *       (Smarty online manual)\r
35  * @author Monte Ohrt <monte@ispi.net>\r
36  * @author credit to Mark Priatel <mpriatel@rogers.com>\r
37  * @author credit to Gerard <gerard@interfold.com>\r
38  * @author credit to Jason Sweat <jsweat_php@yahoo.com>\r
39  * @version  1.3\r
40  * @param array\r
41  * @param Smarty\r
42  * @return string|null\r
43  */\r
44 function smarty_function_cycle($params, &$smarty)\r
45 {\r
46     static $cycle_vars;\r
47     \r
48     extract($params);\r
49 \r
50     if (empty($name)) {\r
51         $name = 'default';\r
52     }\r
53 \r
54     if (!isset($print)) {\r
55         $print = true;\r
56     }\r
57 \r
58     if (!isset($advance)) {\r
59         $advance = true;        \r
60     }    \r
61 \r
62     if (!isset($reset)) {\r
63         $reset = false;        \r
64     }        \r
65             \r
66     if (!in_array('values', array_keys($params))) {\r
67         if(!isset($cycle_vars[$name]['values'])) {\r
68             $smarty->trigger_error("cycle: missing 'values' parameter");\r
69             return;\r
70         }\r
71     } else {\r
72         if(isset($cycle_vars[$name]['values'])\r
73             && $cycle_vars[$name]['values'] != $values ) {\r
74             $cycle_vars[$name]['index'] = 0;\r
75         }\r
76         $cycle_vars[$name]['values'] = $values;\r
77     }\r
78 \r
79     if (isset($delimiter)) {\r
80         $cycle_vars[$name]['delimiter'] = $delimiter;\r
81     } elseif (!isset($cycle_vars[$name]['delimiter'])) {\r
82         $cycle_vars[$name]['delimiter'] = ',';        \r
83     }\r
84     \r
85     if(!is_array($cycle_vars[$name]['values'])) {\r
86         $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);\r
87     } else {\r
88         $cycle_array = $cycle_vars[$name]['values'];    \r
89     }\r
90     \r
91     if(!isset($cycle_vars[$name]['index']) || $reset ) {\r
92         $cycle_vars[$name]['index'] = 0;\r
93     }\r
94     \r
95     if (isset($assign)) {\r
96         $print = false;\r
97         $smarty->assign($assign, $cycle_array[$cycle_vars[$name]['index']]);\r
98     }\r
99         \r
100     if($print) {\r
101         $retval = $cycle_array[$cycle_vars[$name]['index']];\r
102     } else {\r
103         $retval = null;\r
104     }\r
105 \r
106     if($advance) {\r
107         if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {\r
108             $cycle_vars[$name]['index'] = 0;            \r
109         } else {\r
110             $cycle_vars[$name]['index']++;\r
111         }\r
112     }\r
113     \r
114     return $retval;\r
115 }\r
116 \r
117 /* vim: set expandtab: */\r
118 \r
119 ?>\r