From 4f4d3f9ffe186ed5fde8c1b800903630e66b6113 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Wed, 24 Mar 2010 23:25:02 -0400 Subject: [PATCH] Fixing extraction of non-zero arrays with only one element and attribute selectors. Fixes #475 --- cake/libs/set.php | 3 ++- cake/tests/cases/libs/set.test.php | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cake/libs/set.php b/cake/libs/set.php index ed8e19c91..b6179de1c 100644 --- a/cake/libs/set.php +++ b/cake/libs/set.php @@ -438,7 +438,8 @@ class Set extends Object { $items = array($items); } elseif (!isset($items[0])) { $current = current($items); - if ((is_array($current) && count($items) <= 1) || !is_array($current)) { + $currentKey = key($items); + if (!is_array($current) || (is_array($current) && count($items) <= 1 && !is_numeric($currentKey))) { $items = array($items); } } diff --git a/cake/tests/cases/libs/set.test.php b/cake/tests/cases/libs/set.test.php index 46c2dd597..349522ece 100644 --- a/cake/tests/cases/libs/set.test.php +++ b/cake/tests/cases/libs/set.test.php @@ -1035,10 +1035,10 @@ class SetTest extends CakeTestCase { $result = Set::extract('/User/id', $nonZero); $this->assertEqual($result, $expected, 'Failed non zero array key extract'); - + $startingAtOne = array( 'Article' => array( - 1=> array( + 1 => array( 'id' => 1, 'approved' => 1, ),