Re: [SMARTY-DEV] {counter} bug and patch
| From: | messju mohr | 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