Author: Kris.Wallsmith
Date: 2010-04-06 13:30:44 +0200 (Tue, 06 Apr 2010)
New Revision: 28992
Modified:
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
Log:
[1.3, 1.4] updated doctrine form filter to check for NULL or an empty string on
text and number fields for parity with the propel form filter (closes #7635)
Modified:
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
===================================================================
---
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
2010-04-06 06:29:54 UTC (rev 28991)
+++
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
2010-04-06 11:30:44 UTC (rev 28992)
@@ -227,7 +227,7 @@
if (is_array($values) && isset($values['is_empty']) && $values['is_empty'])
{
- $query->addWhere(sprintf('%s.%s IS NULL', $query->getRootAlias(),
$fieldName));
+ $query->addWhere(sprintf('(%s.%s IS NULL OR %1$s.%2$s = ?)',
$query->getRootAlias(), $fieldName), array(''));
}
else if (is_array($values) && isset($values['text']) && '' !=
$values['text'])
{
@@ -241,7 +241,7 @@
if (is_array($values) && isset($values['is_empty']) && $values['is_empty'])
{
- $query->addWhere(sprintf('%s.%s IS NULL', $query->getRootAlias(),
$fieldName));
+ $query->addWhere(sprintf('(%s.%s IS NULL OR %1$s.%2$s = ?)',
$query->getRootAlias(), $fieldName), array(''));
}
else if (is_array($values) && isset($values['text']) && '' !==
$values['text'])
{
Modified: branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
===================================================================
--- branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
2010-04-06 06:29:54 UTC (rev 28991)
+++ branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
2010-04-06 11:30:44 UTC (rev 28992)
@@ -94,6 +94,7 @@
),
'id' => null,
'type' => null,
+ 'views' => null,
'created_at' => $data['created_at'],
'updated_at' => $data['updated_at'],
);
@@ -107,6 +108,7 @@
'author_id' => $article->Author->id,
'is_on_homepage' => true,
'type' => null,
+ 'views' => null,
'created_at' => $article->created_at,
'updated_at' => $article->updated_at,
'Translation' =>
@@ -147,6 +149,7 @@
'author_id' => $article->author_id,
'is_on_homepage' => true,
'type' => null,
+ 'views' => null,
'created_at' => $article->created_at,
'updated_at' => $article->updated_at,
'en' =>
Modified:
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
===================================================================
---
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
2010-04-06 06:29:54 UTC (rev 28991)
+++
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
2010-04-06 11:30:44 UTC (rev 28992)
@@ -16,6 +16,7 @@
unique: true
body: string(255)
test_column: string(255)
+ views: integer
relations:
Author:
foreignAlias: Articles
Modified:
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
===================================================================
---
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
2010-04-06 06:29:54 UTC (rev 28991)
+++
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
2010-04-06 11:30:44 UTC (rev 28992)
@@ -1,4 +1,4 @@
-CREATE TABLE article (id INTEGER PRIMARY KEY AUTOINCREMENT, author_id INTEGER,
is_on_homepage INTEGER, type VARCHAR(255), created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL);
+CREATE TABLE article (id INTEGER PRIMARY KEY AUTOINCREMENT, author_id INTEGER,
is_on_homepage INTEGER, views INTEGER, type VARCHAR(255), created_at DATETIME
NOT NULL, updated_at DATETIME NOT NULL);
CREATE TABLE attachment (id INTEGER PRIMARY KEY AUTOINCREMENT, file_path
VARCHAR(255));
CREATE TABLE author (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255),
type VARCHAR(255));
CREATE TABLE author_inheritance_concrete (id INTEGER PRIMARY KEY
AUTOINCREMENT, name VARCHAR(255), type VARCHAR(255), additional VARCHAR(255));
Modified:
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
===================================================================
---
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
2010-04-06 06:29:54 UTC (rev 28991)
+++
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
2010-04-06 11:30:44 UTC (rev 28992)
@@ -3,7 +3,7 @@
$app = 'frontend';
include dirname(__FILE__).'/../../bootstrap/functional.php';
-$t = new lime_test(12);
+$t = new lime_test(16);
class TestFormFilter extends ArticleFormFilter
{
@@ -106,6 +106,18 @@
$t->is(trim($query->getDql()), 'FROM Article r WHERE r.author_id = ?',
'->getQuery() filters by a 0 number');
$t->is($query->getFlattenedParams(), array(0), '->getQuery() filters by a 0
number');
+$filter = new ArticleFormFilter();
+$filter->bind(array('type' => array('is_empty' => '1', 'text' => '')));
+$query = $filter->getQuery();
+$t->is(trim($query->getDql()), 'FROM Article r WHERE (r.type IS NULL OR r.type
= ?)', '->getQuery() tests for null or empty text fields');
+$t->is($query->getFlattenedParams(), array(''), '->getQuery() tests for null
or empty text fields');
+
+$filter = new ArticleFormFilter();
+$filter->bind(array('views' => array('is_empty' => '1', 'text' => '')));
+$query = $filter->getQuery();
+$t->is(trim($query->getDql()), 'FROM Article r WHERE (r.views IS NULL OR
r.views = ?)', '->getQuery() tests for null or empty number fields');
+$t->is($query->getFlattenedParams(), array(''), '->getQuery() tests for null
or empty number fields');
+
$t->diag('->setTableMethod()');
$filter = new ArticleFormFilter();
Modified:
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
===================================================================
---
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
2010-04-06 06:29:54 UTC (rev 28991)
+++
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/form/sfFormFilterDoctrine.class.php
2010-04-06 11:30:44 UTC (rev 28992)
@@ -227,7 +227,7 @@
if (is_array($values) && isset($values['is_empty']) && $values['is_empty'])
{
- $query->addWhere(sprintf('%s.%s IS NULL', $query->getRootAlias(),
$fieldName));
+ $query->addWhere(sprintf('(%s.%s IS NULL OR %1$s.%2$s = ?)',
$query->getRootAlias(), $fieldName), array(''));
}
else if (is_array($values) && isset($values['text']) && '' !=
$values['text'])
{
@@ -241,7 +241,7 @@
if (is_array($values) && isset($values['is_empty']) && $values['is_empty'])
{
- $query->addWhere(sprintf('%s.%s IS NULL', $query->getRootAlias(),
$fieldName));
+ $query->addWhere(sprintf('(%s.%s IS NULL OR %1$s.%2$s = ?)',
$query->getRootAlias(), $fieldName), array(''));
}
else if (is_array($values) && isset($values['text']) && '' !==
$values['text'])
{
Modified: branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
===================================================================
--- branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
2010-04-06 06:29:54 UTC (rev 28991)
+++ branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/I18nTest.php
2010-04-06 11:30:44 UTC (rev 28992)
@@ -94,6 +94,7 @@
),
'id' => null,
'type' => null,
+ 'views' => null,
'created_at' => $data['created_at'],
'updated_at' => $data['updated_at'],
);
@@ -107,6 +108,7 @@
'author_id' => $article->Author->id,
'is_on_homepage' => true,
'type' => null,
+ 'views' => null,
'created_at' => $article->created_at,
'updated_at' => $article->updated_at,
'Translation' =>
@@ -147,6 +149,7 @@
'author_id' => $article->author_id,
'is_on_homepage' => true,
'type' => null,
+ 'views' => null,
'created_at' => $article->created_at,
'updated_at' => $article->updated_at,
'en' =>
Modified:
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
===================================================================
---
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
2010-04-06 06:29:54 UTC (rev 28991)
+++
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/config/doctrine/schema.yml
2010-04-06 11:30:44 UTC (rev 28992)
@@ -16,6 +16,7 @@
unique: true
body: string(255)
test_column: string(255)
+ views: integer
relations:
Author:
foreignAlias: Articles
Modified:
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
===================================================================
---
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
2010-04-06 06:29:54 UTC (rev 28991)
+++
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/sql/schema.sql
2010-04-06 11:30:44 UTC (rev 28992)
@@ -1,4 +1,4 @@
-CREATE TABLE article (id INTEGER PRIMARY KEY AUTOINCREMENT, author_id INTEGER,
is_on_homepage INTEGER, type VARCHAR(255), created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL);
+CREATE TABLE article (id INTEGER PRIMARY KEY AUTOINCREMENT, author_id INTEGER,
is_on_homepage INTEGER, views INTEGER, type VARCHAR(255), created_at DATETIME
NOT NULL, updated_at DATETIME NOT NULL);
CREATE TABLE attachment (id INTEGER PRIMARY KEY AUTOINCREMENT, file_path
VARCHAR(255));
CREATE TABLE author (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255),
type VARCHAR(255));
CREATE TABLE author_inheritance_concrete (id INTEGER PRIMARY KEY
AUTOINCREMENT, name VARCHAR(255), type VARCHAR(255), additional VARCHAR(255));
Modified:
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
===================================================================
---
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
2010-04-06 06:29:54 UTC (rev 28991)
+++
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/form/sfFormFilterDoctrineTest.php
2010-04-06 11:30:44 UTC (rev 28992)
@@ -3,7 +3,7 @@
$app = 'frontend';
include dirname(__FILE__).'/../../bootstrap/functional.php';
-$t = new lime_test(12);
+$t = new lime_test(16);
class TestFormFilter extends ArticleFormFilter
{
@@ -106,6 +106,18 @@
$t->is(trim($query->getDql()), 'FROM Article r WHERE r.author_id = ?',
'->getQuery() filters by a 0 number');
$t->is($query->getFlattenedParams(), array(0), '->getQuery() filters by a 0
number');
+$filter = new ArticleFormFilter();
+$filter->bind(array('type' => array('is_empty' => '1', 'text' => '')));
+$query = $filter->getQuery();
+$t->is(trim($query->getDql()), 'FROM Article r WHERE (r.type IS NULL OR r.type
= ?)', '->getQuery() tests for null or empty text fields');
+$t->is($query->getFlattenedParams(), array(''), '->getQuery() tests for null
or empty text fields');
+
+$filter = new ArticleFormFilter();
+$filter->bind(array('views' => array('is_empty' => '1', 'text' => '')));
+$query = $filter->getQuery();
+$t->is(trim($query->getDql()), 'FROM Article r WHERE (r.views IS NULL OR
r.views = ?)', '->getQuery() tests for null or empty number fields');
+$t->is($query->getFlattenedParams(), array(''), '->getQuery() tests for null
or empty number fields');
+
$t->diag('->setTableMethod()');
$filter = new ArticleFormFilter();
--
You received this message because you are subscribed to the Google Groups
"symfony SVN" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/symfony-svn?hl=en.