PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » HTML » Pager » Bug #1383

Duplicate vars in QUERY_STRING (_getLinksUrl() function)

Details

Submitted2004-05-11 12:50 UTC
Frompauluz at gazeta dot pl
Assignedquipo
StatusClosed
PackagePager
PHP VersionIrrelevant
Roadmaps(Not assigned)

Comments

[2004-05-11 12:50 UTC] pauluz at gazeta dot pl

Description:
------------
compare to: Common.php,v 1.12 from CVS - lines 630 to 640

When you use 'extraVars' option in $params for Pager constructor
you get a duplicate vars in QUERY_STRING generated for URL
(this happend when you click "page link" at least)

Solution/patch:

--- Common.php 2004-01-16 12:29:20.000000000 +0100
+++ Common2.php 2004-05-11 14:12:58.000000000 +0200
@@ -623,15 +623,19 @@ class Pager_Common
unset($qs[$i]);
}
}
+ // $qs contains a variables from QUERY_STRING
+ // and now passing 'extraVars' to it ...

- foreach ($qs as $name => $value) {
- $querystring[] = $name . '=' . $value;
- }
if (is_array($this->_extraVars)) {
foreach ($this->_extraVars as $name => $value) {
- $querystring[] = $name . '=' . $value;
+ $qs[$name] = $value;
}
}
+ // this overwrite duplicated vars
+
+ foreach ($qs as $name => $value) {
+ $querystring[] = $name . '=' . $value;
+ }

return '?' . implode('&', $querystring) . (!empty($querystring) ? '&' : '') . $this->_urlVar .'=';
}

Reproduce code:
---------------
require_once 'Pager/Pager.php';

$itemData = array('a','b','c','d','e','f','g','h');
$params = array('mode' => 'Jumping', 'perPage' => 3, 'delta' => 5,
'itemData' => $itemData, 'extraVars' => array('special' => 'marked'));

$pager = & new Pager($params);
$data = $pager->getPageData();
$links = $pager->getLinks();

echo '<PRE>PAGES : ' . $links['all'] . "\n\n";
echo 'PAGED DATA: ';
print_r($data);

Expected result:
----------------
simple links like:
script.php?special=marked&pageID=2

Actual result:
--------------
when display second time there is
duplicate var 'special' in QUERY_STRING
script.php?special=marked&special=marked&pageID=2

[2004-05-11 12:57 UTC] pauluz at gazeta dot pl

internal function _getLinksUrl() has been changed