/[cvs]/nfo/php/libs/net.php.smarty/plugins/function.cycle.php
ViewVC logotype

Annotation of /nfo/php/libs/net.php.smarty/plugins/function.cycle.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (hide annotations)
Wed Jun 16 21:58:16 2004 UTC (20 years, 1 month ago) by joko
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +83 -84 lines
updated to smarty-2.6.3

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

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed