/** * Builds crawler friendly URL if URL rewriting is enabled * This function will attempt to build a crawler friendly URL. If this feature is * disabled because of platform issue it just returns original $url value * * @param string $url URL to try and convert * @return string rewritten if $this->urlRewrite is true otherwise original url */ public function buildURL($url) { if (!$this->urlRewrite) { return $url; } if ($this->urlRouting === Router::ROUTING_WITH_INDEX_PHP || $this->urlRouting === Router::ROUTING_WITHOUT_INDEX_PHP) { $newUrl = Router::convertUrl($url); if ($newUrl !== $url) { return $newUrl; } } $pos = strpos($url, '?'); $query_string = substr($url, $pos + 1); $finalList = array(); $paramList = explode('&', $query_string); for ($i = 1; $i <= count($paramList); $i++) { $keyValuePairs = explode('=', current($paramList)); if (is_array($keyValuePairs)) { $argName = current($keyValuePairs); next($keyValuePairs); $finalList[$argName] = current($keyValuePairs); } next($paramList); } $newArgs = '/'; for ($i = 1; $i <= count($finalList); $i++) { $newArgs .= current($finalList); if ($i !== count($finalList)) { $newArgs .= '/'; } next($finalList); } return str_replace('?' . $query_string, $newArgs, $url); }