Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

API: add $includeGetVars flag for SS_HTTPRequest() to return the URL …

…with the attached GET parameters.
  • Loading branch information...
commit 16cb504d8e66a16ce6a734dbc77fc567f9284d96 1 parent 1686636
@wilr wilr authored
Showing with 34 additions and 2 deletions.
  1. +22 −2 control/HTTPRequest.php
  2. +12 −0 tests/control/HTTPRequestTest.php
View
24 control/HTTPRequest.php
@@ -228,10 +228,30 @@ function removeHeader($header) {
}
/**
+ * Returns the URL used to generate the page
+ *
+ * @param bool $includeGetVars whether or not to include the get parameters\
+ *
* @return string
*/
- function getURL() {
- return ($this->getExtension()) ? $this->url . '.' . $this->getExtension() : $this->url;
+ function getURL($includeGetVars = false) {
+ $url = ($this->getExtension()) ? $this->url . '.' . $this->getExtension() : $this->url;
+
+ if ($includeGetVars) {
+ // if we don't unset $vars['url'] we end up with /my/url?url=my/url&foo=bar etc
+
+ $vars = $this->getVars();
+ unset($vars['url']);
+
+ if (count($vars)) {
+ $url .= '?' . http_build_query($vars);
+ }
+ }
+ else if(strpos($url, "?") !== false) {
+ $url = substr($url, 0, strpos($url, "?"));
+ }
+
+ return $url;
}
/**
View
12 tests/control/HTTPRequestTest.php
@@ -242,4 +242,16 @@ function testIsAjax() {
$req->addHeader('X-Requested-With', 'XMLHttpRequest');
$this->assertTrue($req->isAjax());
}
+
+ public function testGetURL() {
+ $req = new SS_HTTPRequest('GET', '/');
+ $this->assertEquals('', $req->getURL());
+
+ $req = new SS_HTTPRequest('GET', '/assets/somefile.gif');
+ $this->assertEquals('assets/somefile.gif', $req->getURL());
+
+ $req = new SS_HTTPRequest('GET', '/home?test=1');
+ $this->assertEquals('home?test=1', $req->getURL(true));
+ $this->assertEquals('home', $req->getURL());
+ }
}
Please sign in to comment.
Something went wrong with that request. Please try again.