From 63a192ea39416b7b86c78401cf1c5d5c27c4a24b Mon Sep 17 00:00:00 2001 From: Ber Clausen Date: Wed, 27 Nov 2013 21:00:52 -0300 Subject: [PATCH] Update DboSource::group(): * Update documentation. * Add Model type hint. * Bail early when fields are empty. --- lib/Cake/Model/Datasource/DboSource.php | 36 ++++++++++++++----------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/lib/Cake/Model/Datasource/DboSource.php b/lib/Cake/Model/Datasource/DboSource.php index 0826518f95e..21521f250e9 100644 --- a/lib/Cake/Model/Datasource/DboSource.php +++ b/lib/Cake/Model/Datasource/DboSource.php @@ -2870,26 +2870,32 @@ public function order($keys, $direction = 'ASC', $model = null) { } /** - * Create a GROUP BY SQL clause + * Create a GROUP BY SQL clause. * - * @param string $group Group By Condition - * @param Model $model - * @return string string condition or null + * @param string|array $fields Group By fields + * @param Model $Model + * @return string Group By clause or null. */ - public function group($group, $model = null) { - if ($group) { - if (!is_array($group)) { - $group = array($group); - } - foreach ($group as $index => $key) { - if (is_object($model) && $model->isVirtualField($key)) { - $group[$index] = '(' . $model->getVirtualField($key) . ')'; + public function group($fields, Model $Model = null) { + if (empty($fields)) { + return null; + } + + if (!is_array($fields)) { + $fields = array($fields); + } + + if (!empty($Model)) { + foreach ($fields as $index => $key) { + if ($Model->isVirtualField($key)) { + $fields[$index] = '(' . $Model->getVirtualField($key) . ')'; } } - $group = implode(', ', $group); - return ' GROUP BY ' . $this->_quoteFields($group); } - return null; + + $fields = implode(', ', $fields); + + return ' GROUP BY ' . $this->_quoteFields($fields); } /**