developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Ticket #149: function.cycle.php

File function.cycle.php, 1.8 KB (added by dubphil, 13 years ago)

cycle

Line 
1<?php
2/**
3 * @package     jelix
4 * @subpackage  jtpl_plugin
5 * @author      Philippe SCHELTE < dubphil >
6 * @copyright   2008 Philippe SCHELTE
7 * @link        http://jelix.org/
8 * @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
9 */
10
11/**
12 * Type:     function<br>
13 * Name:     cycle<br>
14 * Date:     Feb, 2008<br>
15 * Purpose:  cycle through an array, a given cycle name or the default one<br>
16 * Input:
17 *         - param = array of values or name of cycle to cycle (optional)
18 *
19 * Examples:<br>
20 * <pre>
21 * {cycle array('aa','bb','cc')}
22 * {cycle 'name'}
23 * {cycle}
24 * </pre>
25 * @paramm $tpl
26 * @param string or array
27 * @return string
28 */
29function jtpl_function_common_cycle($tpl, $param=''){
30    if(is_array($param)){
31        static $cycle_vars;
32        if(!isset($cycle_vars['values'])){
33            $cycle_vars['values'] = $param;
34            $cycle_vars['index'] = 0;
35        }   
36        $retval = $cycle_vars['values'][$cycle_vars['index']];
37        if($cycle_vars['index'] >= count($cycle_vars['values']) -1){
38            $cycle_vars['index'] = 0;
39        } else {
40            $cycle_vars['index']++;
41        } 
42    } else {
43        $cycle_name = $param ? $param : 'default';
44        if(isset($tpl->_privateVars['cycle'][$cycle_name]['values'])){
45            $cycle_array = $tpl->_privateVars['cycle'][$cycle_name]['values'];
46        } else {
47            throw new jException("jelix~errors.tplplugin.function.argument.unknow", array($cycle_name,'cycle',''));
48            return;
49        }
50        $index = & $tpl->_privateVars['cycle'][$cycle_name]['index'];
51        $retval = $cycle_array[$index];
52        if($index >= count($cycle_array) -1){
53            $index = 0;
54        } else {
55            $index++;
56        }
57    }
58    echo $retval;
59    return;
60}
61?>