diff options
| -rw-r--r-- | framework/Web/Services/TPageService.php | 5 | ||||
| -rw-r--r-- | framework/Web/THttpRequest.php | 15 | 
2 files changed, 15 insertions, 5 deletions
diff --git a/framework/Web/Services/TPageService.php b/framework/Web/Services/TPageService.php index 8d3ccca3..022c1286 100644 --- a/framework/Web/Services/TPageService.php +++ b/framework/Web/Services/TPageService.php @@ -452,11 +452,12 @@ class TPageService extends TService  	 * @param string page path
  	 * @param array list of GET parameters, null if no GET parameters required
  	 * @param boolean whether to encode the ampersand in URL, defaults to false.
 +	 * @param boolean whether to encode the GET parameters (their names and values), defaults to true.
  	 * @return string URL for the page and GET parameters
  	 */
 -	public function constructUrl($pagePath,$getParams=null,$encodeAmpersand=false)
 +	public function constructUrl($pagePath,$getParams=null,$encodeAmpersand=false,$encodeGetItems=true)
  	{
 -		return $this->getRequest()->constructUrl($this->_id,$pagePath,$getParams,$encodeAmpersand);
 +		return $this->getRequest()->constructUrl($this->_id,$pagePath,$getParams,$encodeAmpersand,$encodeGetItems);
  	}
  }
 diff --git a/framework/Web/THttpRequest.php b/framework/Web/THttpRequest.php index d3a8480a..2fd02d1d 100644 --- a/framework/Web/THttpRequest.php +++ b/framework/Web/THttpRequest.php @@ -436,16 +436,25 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar  	 * @param string service parameter
  	 * @param array GET parameters, null if not needed
  	 * @param boolean whether to encode the ampersand in URL, defaults to false.
 +	 * @param boolean whether to encode the GET parameters (their names and values), defaults to true.
  	 * @return string URL
  	 */
 -	public function constructUrl($serviceID,$serviceParam,$getItems=null,$encodeAmpersand=false)
 +	public function constructUrl($serviceID,$serviceParam,$getItems=null,$encodeAmpersand=false,$encodeGetItems=true)
  	{
  		$url=$serviceID.'='.$serviceParam;
  		$amp=$encodeAmpersand?'&':'&';
  		if(is_array($getItems) || $getItems instanceof Traversable)
  		{
 -			foreach($getItems as $name=>$value)
 -				$url.=$amp.urlencode($name).'='.urlencode($value);
 +			if($encodeGetItems)
 +			{
 +				foreach($getItems as $name=>$value)
 +					$url.=$amp.urlencode($name).'='.urlencode($value);
 +			}
 +			else
 +			{
 +				foreach($getItems as $name=>$value)
 +					$url.=$amp.$name.'='.$value;
 +			}
  		}
  		if($this->getUrlFormat()==='Path')
  		{
  | 
