A different search pagination fix (see ticket #1333) that doesn't require fixing the upstream code, thus undoing the change made in d64be5108d

This commit is contained in:
CiaranG 2009-03-25 15:39:58 +00:00
parent 66a2f4c64b
commit 2c8f67f6a9
2 changed files with 13 additions and 8 deletions

View File

@ -241,12 +241,7 @@ class Net_URL_Mapper_Path
} }
$path = '/'.trim(Net_URL::resolvePath($path), '/'); $path = '/'.trim(Net_URL::resolvePath($path), '/');
if (!empty($qstring)) { if (!empty($qstring)) {
if (!strpos($path, '?')) { $path .= '?'.http_build_query($qstring);
$path .= '?';
} else {
$path .= '&';
}
$path .= http_build_query($qstring);
} }
if (!empty($anchor)) { if (!empty($anchor)) {
$path .= '#'.ltrim($anchor, '#'); $path .= '#'.ltrim($anchor, '#');

View File

@ -437,6 +437,16 @@ class Router
if($params!=null) if($params!=null)
common_log(LOG_DEBUG,"generate args:".print_r($args,true)); common_log(LOG_DEBUG,"generate args:".print_r($args,true));
return $this->m->generate($args, $params, $fragment); $url=$this->m->generate($args, $params, $fragment);
// Due to a bug in the Net_URL_Mapper code, the returned URL may
// contain a malformed query of the form ?p1=v1?p2=v2?p3=v3. We
// repair that here rather than modifying the upstream code...
$qpos = strpos($url,'?');
if ($qpos !== false) {
$url = substr($url, 0, $qpos+1) .
str_replace('?', '&', substr($url, $qpos+1));
}
return $url;
} }
} }