From 277c7a40333d19bb6ade396c9be7c30cf58aa6fd Mon Sep 17 00:00:00 2001 From: jerome mouneyrac Date: Mon, 5 Jul 2010 02:56:04 +0000 Subject: [PATCH] file MDL-23075 fix format_postdata_for_curlcall when the params is an array of array of array --- lib/filelib.php | 7 ++++--- lib/simpletest/testfilelib.php | 13 ++++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/filelib.php b/lib/filelib.php index fb501a6d5d1..8d7c7a7546c 100644 --- a/lib/filelib.php +++ b/lib/filelib.php @@ -926,11 +926,12 @@ function file_get_upload_error($errorcode) { */ function format_array_postdata_for_curlcall($arraydata, $currentdata, &$data) { foreach ($arraydata as $k=>$v) { + $newcurrentdata = $currentdata; if (is_array($v)) { //the value is an array, call the function recursively - $currentdata = $currentdata.'['.urlencode($k).']'; - format_array_postdata_for_curlcall($v, $currentdata, $data); + $newcurrentdata = $newcurrentdata.'['.urlencode($k).']'; + format_array_postdata_for_curlcall($v, $newcurrentdata, $data); } else { //add the POST parameter to the $data array - $data[] = $currentdata.'['.urlencode($k).']='.urlencode($v); + $data[] = $newcurrentdata.'['.urlencode($k).']='.urlencode($v); } } } diff --git a/lib/simpletest/testfilelib.php b/lib/simpletest/testfilelib.php index 529dc2ce547..6674106193e 100644 --- a/lib/simpletest/testfilelib.php +++ b/lib/simpletest/testfilelib.php @@ -68,8 +68,15 @@ class filelib_test extends UnitTestCase { $postdata = format_postdata_for_curlcall($postdatatoconvert); $this->assertEqual($postdata, $expectedresult); - - - + //POST params with other complex types + $postdatatoconvert = array ('members' => + array( + array('groupid' => 1, 'userid' => 1) + , array('groupid' => 1, 'userid' => 2) + ) + ); + $expectedresult = "members[0][groupid]=1&members[0][userid]=1&members[1][groupid]=1&members[1][userid]=2"; + $postdata = format_postdata_for_curlcall($postdatatoconvert); + $this->assertEqual($postdata, $expectedresult); } } -- 2.17.1