00001 <?php
00044 function smarty_function_cycle($params, &$smarty)
00045 {
00046 static $cycle_vars;
00047
00048 $name = (empty($params['name'])) ? 'default' : $params['name'];
00049 $print = (isset($params['print'])) ? (bool)$params['print'] : true;
00050 $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true;
00051 $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false;
00052
00053 if (!in_array('values', array_keys($params))) {
00054 if(!isset($cycle_vars[$name]['values'])) {
00055 $smarty->trigger_error("cycle: missing 'values' parameter");
00056 return;
00057 }
00058 } else {
00059 if(isset($cycle_vars[$name]['values'])
00060 && $cycle_vars[$name]['values'] != $params['values'] ) {
00061 $cycle_vars[$name]['index'] = 0;
00062 }
00063 $cycle_vars[$name]['values'] = $params['values'];
00064 }
00065
00066 $cycle_vars[$name]['delimiter'] = (isset($params['delimiter'])) ? $params['delimiter'] : ',';
00067
00068 if(is_array($cycle_vars[$name]['values'])) {
00069 $cycle_array = $cycle_vars[$name]['values'];
00070 } else {
00071 $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
00072 }
00073
00074 if(!isset($cycle_vars[$name]['index']) || $reset ) {
00075 $cycle_vars[$name]['index'] = 0;
00076 }
00077
00078 if (isset($params['assign'])) {
00079 $print = false;
00080 $smarty->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
00081 }
00082
00083 if($print) {
00084 $retval = $cycle_array[$cycle_vars[$name]['index']];
00085 } else {
00086 $retval = null;
00087 }
00088
00089 if($advance) {
00090 if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {
00091 $cycle_vars[$name]['index'] = 0;
00092 } else {
00093 $cycle_vars[$name]['index']++;
00094 }
00095 }
00096
00097 return $retval;
00098 }
00099
00100
00101
00102 ?>