From 8b7f46acaa499075dd28fa863cb8946ea35bb0e7 Mon Sep 17 00:00:00 2001 From: nate Date: Wed, 28 Mar 2007 00:53:37 +0000 Subject: [PATCH] Adding field quoting fix in DboSource::name() (Ticket #2300) git-svn-id: https://svn.cakephp.org/repo/branches/1.2.x.x@4697 3807eeeb-6ff5-0310-8944-8be069107fe0 --- cake/libs/model/datasources/dbo_source.php | 4 ++-- cake/tests/cases/libs/model/datasources/dbo_source.test.php | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cake/libs/model/datasources/dbo_source.php b/cake/libs/model/datasources/dbo_source.php index 2730e6cf0..f7fd157bc 100644 --- a/cake/libs/model/datasources/dbo_source.php +++ b/cake/libs/model/datasources/dbo_source.php @@ -382,10 +382,10 @@ class DboSource extends DataSource { * @return string SQL field */ function name($data) { - if (preg_match_all('/(.*)\((.*)\)/', $data, $fields)) { + if (preg_match_all('/(.*)\((.*)\)(.*)/', $data, $fields)) { $fields = Set::extract($fields, '{n}.0'); if (isset($fields[1]) && isset($fields[2])) { - return $fields[1] . '(' . $this->name($fields[2]) . ')'; + return $fields[1] . '(' . $this->name($fields[2]) . ')' . $fields[3]; } } if ($data == '*') { diff --git a/cake/tests/cases/libs/model/datasources/dbo_source.test.php b/cake/tests/cases/libs/model/datasources/dbo_source.test.php index 005ffb37d..7fbf036e4 100644 --- a/cake/tests/cases/libs/model/datasources/dbo_source.test.php +++ b/cake/tests/cases/libs/model/datasources/dbo_source.test.php @@ -940,6 +940,9 @@ class DboSourceTest extends UnitTestCase { $result = $this->db->conditions(array(array('Project.removed' => null))); $this->assertPattern('/^\s*WHERE\s+`Project`.`removed`\s+IS\s+NULL\s*$/', $result); + + $result = $this->db->conditions(array('(Usergroup.permissions) & 4' => 4)); + $this->assertPattern('/^\s*WHERE\s+\(`Usergroup`\.`permissions`\)\s+& 4\s+=\s+4\s*$/', $result); } function testFieldParsing() {