From 5f987a4996ac83b0db58d308493af36f8e145fe9 Mon Sep 17 00:00:00 2001 From: ADmad Date: Thu, 31 Dec 2009 17:36:58 +0530 Subject: [PATCH] Controller data is now set to an array instead of Xml object if request content type is 'application/xml' --- cake/libs/controller/components/request_handler.php | 6 +++--- .../libs/controller/components/request_handler.test.php | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cake/libs/controller/components/request_handler.php b/cake/libs/controller/components/request_handler.php index 70ef9b20c85..fbbf01afa24 100644 --- a/cake/libs/controller/components/request_handler.php +++ b/cake/libs/controller/components/request_handler.php @@ -219,10 +219,10 @@ function startup(&$controller) { } $xml = new Xml(trim(file_get_contents('php://input'))); - if (is_object($xml->child('data')) && count($xml->children) == 1) { - $controller->data = $xml->child('data'); + if (count($xml->children) == 1 && is_object($dataNode = $xml->child('data'))) { + $controller->data = $dataNode->toArray(); } else { - $controller->data = $xml; + $controller->data = $xml->toArray(); } } } diff --git a/cake/tests/cases/libs/controller/components/request_handler.test.php b/cake/tests/cases/libs/controller/components/request_handler.test.php index 9f979c3231d..a05bd21778b 100644 --- a/cake/tests/cases/libs/controller/components/request_handler.test.php +++ b/cake/tests/cases/libs/controller/components/request_handler.test.php @@ -241,8 +241,8 @@ function testStartupCallback() { $_SERVER['REQUEST_METHOD'] = 'PUT'; $_SERVER['CONTENT_TYPE'] = 'application/xml'; $this->RequestHandler->startup($this->Controller); - $this->assertTrue(is_object($this->Controller->data)); - $this->assertEqual(strtolower(get_class($this->Controller->data)), 'xml'); + $this->assertTrue(is_array($this->Controller->data)); + $this->assertFalse(is_object($this->Controller->data)); } /** @@ -254,8 +254,8 @@ function testStartupCallbackCharset() { $_SERVER['REQUEST_METHOD'] = 'PUT'; $_SERVER['CONTENT_TYPE'] = 'application/xml; charset=UTF-8'; $this->RequestHandler->startup($this->Controller); - $this->assertTrue(is_object($this->Controller->data)); - $this->assertEqual(strtolower(get_class($this->Controller->data)), 'xml'); + $this->assertTrue(is_array($this->Controller->data)); + $this->assertFalse(is_object($this->Controller->data)); } /**