Re: [SMARTY-DEV] {counter} bug and patch

From: Date: Mon, 02 Jun 2003 15:26:53 +0000
Subject: Re: [SMARTY-DEV] {counter} bug and patch
References: 1  Groups: php.smarty.dev 
Request: Send a blank email to php-smarty-dev+get-1529@lists.php.net to get a copy of this message
this should be fixed in cvs now. please test. On Fri, May 30, 2003 at 10:31:48PM -0700, Bharat Mediratta wrote: > > Hi, all. I just updated from 2.5.0 to HEAD today to see how > the latest stuff is working and noticed something odd with > {counter}. > > I have the following code: > > /* PHP */ > for ($i = 1; $i < 10; $i++) { > $children[] = 'child' . $i; > } > $smarty->assign('children', $children); > $smarty->display('test.tpl'); > > {* Smarty *} > {counter assign=index start=0 print=false} > {$children[$index]}: {counter} <br> > {$children[$index]}: {counter} <br> > {$children[$index]}: {counter} <br> > > Now, on Smarty 2.5.0 the above generates this output: > > child1: > child2: > child3: > > So far so good. But in the latest code I see: > > child2: 1 > child3: 2 > child4: 3 > > Two things are happening. First, {counter} appears to be > printing the incremented value. This is new after Smarty 2.5.0, > but it also jibes with the documentation for counter so I > guess this was broken in 2.5.0 and is fixed now. > > However, it looks like counter is no longer starting at the > "start" number, but is instead starting at "start+skip" which > means that the index into the array that I'm using is now off > by one. I looked in function.counter.php and found that it > increments the count every time, including the first time you > call {counter}. I created a patch such that if you specify the > start attribute, it won't increment the count for that invocation. > > -Bharat > > Index: function.counter.php > =================================================================== > RCS file: /repository/smarty/libs/plugins/function.counter.php,v > retrieving revision 1.8 > diff -u -w -u -w -r1.8 function.counter.php > --- function.counter.php 2 May 2003 22:33:15 -0000 1.8 > +++ function.counter.php 31 May 2003 05:07:52 -0000 > @@ -36,9 +36,11 @@ > } > } > > - if (isset($start)) > + $dontIncrement = false; > + if (isset($start)) { > $count[$name] = $start; > - else if (!isset($count[$name])) > + $dontIncrement = true; > + } else if (!isset($count[$name])) > $count[$name]=1; > > if (!isset($print)) > @@ -67,10 +69,12 @@ > else if (!isset($dir[$name])) > $dir[$name] = "up"; > > + if (!$dontIncrement) { > if ($dir[$name] == "down") > $count[$name] -= $skipval[$name]; > else > $count[$name] += $skipval[$name]; > + } > > return $retval; > > > > > > -- > Smarty Development Mailing List (http://smarty.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php

« previous php.smarty.dev (#1529) next »