Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

MDL-29161 weblib: moodle_ulr::out does not cope with array params.

Conflicts:

	lib/simpletest/testweblib.php
  • Loading branch information...
commit 0f751368e569c80a3f813332707b487391c18568 1 parent 62b0af5
@timhunt timhunt authored
Showing with 26 additions and 1 deletion.
  1. +19 −0 lib/simpletest/testweblib.php
  2. +7 −1 lib/weblib.php
View
19 lib/simpletest/testweblib.php
@@ -105,6 +105,25 @@ function test_fix_non_standard_entities() {
$this->assertEqual(fix_non_standard_entities('£ä'), '£ä');
}
+ function test_moodle_url_round_trip() {
+ $strurl = 'http://moodle.org/course/view.php?id=5';
+ $url = new moodle_url($strurl);
+ $this->assertEqual($strurl, $url->out(false));
+
+ $strurl = 'http://moodle.org/user/index.php?contextid=53&sifirst=M&silast=D';
+ $url = new moodle_url($strurl);
+ $this->assertEqual($strurl, $url->out(false));
+ }
+
+ function test_moodle_url_round_trip_array_params() {
+ $strurl = 'http://example.com/?a%5B1%5D=1&a%5B2%5D=2';
+ $url = new moodle_url($strurl);
+ $this->assertEqual($strurl, $url->out(false));
+
+ $url = new moodle_url('http://example.com/?a[1]=1&a[2]=2');
+ $this->assertEqual($strurl, $url->out(false));
+ }
+
function test_compare_url() {
$url1 = new moodle_url('index.php', array('var1' => 1, 'var2' => 2));
$url2 = new moodle_url('index2.php', array('var1' => 1, 'var2' => 2, 'var3' => 3));
View
8 lib/weblib.php
@@ -494,7 +494,13 @@ public function get_query_string($escaped = true, array $overrideparams = null)
$params = $this->params;
}
foreach ($params as $key => $val) {
- $arr[] = rawurlencode($key)."=".rawurlencode($val);
+ if (is_array($val)) {
+ foreach ($val as $index => $value) {
+ $arr[] = rawurlencode($key.'['.$index.']')."=".rawurlencode($value);
+ }
+ } else {
+ $arr[] = rawurlencode($key)."=".rawurlencode($val);
+ }
}
if ($escaped) {
return implode('&', $arr);
Please sign in to comment.
Something went wrong with that request. Please try again.