* @author credit to Mark Priatel * @author credit to Gerard * @author credit to Jason Sweat * @version 1.3 * * @param array $params parameters * @param Template $template template object * * @return string|null */ class Cycle extends Base { public function handle($params, Template $template) { static $cycle_vars; $name = (empty($params['name'])) ? 'default' : $params['name']; $print = !(isset($params['print'])) || (bool)$params['print']; $advance = !(isset($params['advance'])) || (bool)$params['advance']; $reset = isset($params['reset']) && (bool)$params['reset']; if (!isset($params['values'])) { if (!isset($cycle_vars[$name]['values'])) { trigger_error('cycle: missing \'values\' parameter'); return; } } else { if (isset($cycle_vars[$name]['values']) && $cycle_vars[$name]['values'] !== $params['values']) { $cycle_vars[$name]['index'] = 0; } $cycle_vars[$name]['values'] = $params['values']; } if (isset($params['delimiter'])) { $cycle_vars[$name]['delimiter'] = $params['delimiter']; } elseif (!isset($cycle_vars[$name]['delimiter'])) { $cycle_vars[$name]['delimiter'] = ','; } if (is_array($cycle_vars[$name]['values'])) { $cycle_array = $cycle_vars[$name]['values']; } else { $cycle_array = explode($cycle_vars[$name]['delimiter'], $cycle_vars[$name]['values']); } if (!isset($cycle_vars[$name]['index']) || $reset) { $cycle_vars[$name]['index'] = 0; } if (isset($params['assign'])) { $print = false; $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]); } if ($print) { $retval = $cycle_array[$cycle_vars[$name]['index']]; } else { $retval = null; } if ($advance) { if ($cycle_vars[$name]['index'] >= count($cycle_array) - 1) { $cycle_vars[$name]['index'] = 0; } else { $cycle_vars[$name]['index']++; } } return $retval; } }