From a87443699ef37a1815d39a69cf528c7da8a75658 Mon Sep 17 00:00:00 2001 From: xue <> Date: Sun, 30 Jul 2006 21:14:42 +0000 Subject: Fixed #309. --- framework/Web/THttpRequest.php | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'framework') diff --git a/framework/Web/THttpRequest.php b/framework/Web/THttpRequest.php index 01827f33..d251f6ab 100644 --- a/framework/Web/THttpRequest.php +++ b/framework/Web/THttpRequest.php @@ -62,8 +62,7 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar /** * Separator used to separate GET variable name and value when URL format is Path. */ - const URL_PARAM_SEPARATOR=','; - + private $_separator=','; /** * @var boolean whether the module is initialized */ @@ -226,6 +225,26 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar $this->_urlFormat=TPropertyValue::ensureEnum($value,'Path','Get'); } + /** + * @return string separator used to separate GET variable name and value when URL format is Path. Defaults to comma ','. + */ + public function getUrlParamSeparator() + { + return $this->_separator; + } + + /** + * @param string separator used to separate GET variable name and value when URL format is Path. + * @throws TInvalidDataValueException if the separator is not a single character + */ + public function setUrlParamSeparator($value) + { + if(strlen($value)===1) + $this->_separator=$value; + else + throw new TInvalidDataValueException('httprequest_separator_invalid'); + } + /** * @return string request type, can be GET, POST, HEAD, or PUT */ @@ -460,10 +479,7 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar */ public function constructUrl($serviceID,$serviceParam,$getItems=null,$encodeAmpersand=false,$encodeGetItems=true) { - if($this->getUrlFormat()==='Path') - $url=$serviceID.'/'.$serviceParam; - else - $url=$serviceID.'='.$serviceParam; + $url=$serviceID.'='.$serviceParam; $amp=$encodeAmpersand?'&':'&'; if(is_array($getItems) || $getItems instanceof Traversable) { @@ -497,7 +513,7 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar } if($this->getUrlFormat()==='Path') { - $url=strtr($url,array($amp=>'/','?'=>'/','='=>self::URL_PARAM_SEPARATOR)); + $url=strtr($url,array($amp=>'/','?'=>'/','='=>$this->_separator)); if(defined('SID') && SID != '' && !((int)ini_get('session.use_cookies')===1 && ((int)ini_get('session.use_only_cookies')===1))) $url.='?'.SID; return $this->getApplicationUrl().'/'.$url; @@ -523,13 +539,12 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar { $paths=explode('/',$this->_pathInfo); $getVariables=$_GET; - $index=0; $serviceID=null; foreach($paths as $path) { if(($path=trim($path))!=='') { - if(($pos=strpos($path,','))!==false) + if(($pos=strpos($path,$this->_separator))!==false) { $name=substr($path,0,$pos); $value=substr($path,$pos+1); @@ -538,16 +553,8 @@ class THttpRequest extends TApplicationComponent implements IteratorAggregate,Ar else $getVariables[$name]=$value; } - else if($index===0) - { - $serviceID=$path; - $getVariables[$serviceID]=''; - } - else if($index===1 && $serviceID!==null) - $getVariables[$serviceID]=$path; else $getVariables[$path]=''; - $index++; } } return $getVariables; -- cgit v1.2.3