In Zen Cart 1.5.5, someone noticed that when trying to reset a query (using $the_query->Move (0)) didn't work, so they "fixed" the behavior.
Unfortunately, that fix now breaks existing plugins (a couple of mine, that I'll need to hunt up, and others) which have "known" that to reset a query you had to:
to accomplish that feat. Now, any plugin that requires a query-reset is going to have to check the Zen Cart version to see whether that MoveNext () call is required.Code:$the_query->Move (0); $the_query->MoveNext ();
I put together a teeny script to illustrate the issue:
and then ran that script on a "fresh" Zen Cart 1.5.4 installation, yielding:Code:<?php include ('includes/application_top.php'); $list = $db->Execute ("SELECT * FROM " . TABLE_ORDERS_STATUS . " ORDER BY orders_status_id ASC"); echo "First pass iteration:<br />"; while (!$list->EOF) { echo sprintf ("Orders status id = %u, name = %s<br />", $list->fields['orders_status_id'], $list->fields['orders_status_name']); $list->MoveNext (); } echo "<br />Second pass iteration:<br />"; $list->Move (0); $list->MoveNext (); while (!$list->EOF) { echo sprintf ("Orders status id = %u, name = %s<br />", $list->fields['orders_status_id'], $list->fields['orders_status_name']); $list->MoveNext (); }
That same script, run on a "fresh" Zen Cart 1.5.5 (3-29) installation yields:Code:First pass iteration: Orders status id = 1, name = Pending Orders status id = 2, name = Processing Orders status id = 3, name = Shipped Orders status id = 4, name = Update Second pass iteration: Orders status id = 1, name = Pending Orders status id = 2, name = Processing Orders status id = 3, name = Shipped Orders status id = 4, name = Update
See how the 2nd-pass output is missing the first orders-status record? That's what's going to happen to all those plugins that were just "doing the right thing" when they're run without change on Zen Cart 1.5.5.Code:First pass iteration: Orders status id = 1, name = Pending Orders status id = 2, name = Processing Orders status id = 3, name = Delivered Orders status id = 4, name = Update Second pass iteration: Orders status id = 2, name = Processing Orders status id = 3, name = Delivered Orders status id = 4, name = Update
Please note that I'm not asking for the behavior to be modified, since there are now Zen Cart 1.5.5 installations with this functionality and it will just further compound the issue if the 1.5.5 behavior is changed mid-stream. I'm posting to let other plugin authors know that they're going to need to check their plugins, too.


Reply With Quote


