Author: Jonathan.Wage
Date: 2010-03-30 22:30:24 +0200 (Tue, 30 Mar 2010)
New Revision: 28897
Modified:
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/pager.yml
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ArticleTable.class.php
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/pager/sfDoctrinePagerTest.php
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/pager.yml
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ArticleTable.class.php
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/pager/sfDoctrinePagerTest.php
Log:
[1.3, 1.4] Fixing serialization issue with pager (fixes #7987)
Modified:
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php
===================================================================
---
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php
2010-03-30 19:50:26 UTC (rev 28896)
+++
branches/1.3/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php
2010-03-30 20:30:24 UTC (rev 28897)
@@ -70,6 +70,8 @@
{
$this->$name = $values;
}
+
+ $this->tableMethodCalled = false;
}
/**
Modified:
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/pager.yml
===================================================================
---
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/pager.yml
2010-03-30 19:50:26 UTC (rev 28896)
+++
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/pager.yml
2010-03-30 20:30:24 UTC (rev 28897)
@@ -2,4 +2,5 @@
# <?php for ($i = 0; $i < 50; $i++): ?> #
article<?php echo $i ?>:
title: "Article <?php echo $i ?>"
+ is_on_homepage: <?php echo sprintf("%d\n", $i % 2); ?>
# <?php endfor; ?> #
Modified:
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ArticleTable.class.php
===================================================================
---
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ArticleTable.class.php
2010-03-30 19:50:26 UTC (rev 28896)
+++
branches/1.3/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ArticleTable.class.php
2010-03-30 20:30:24 UTC (rev 28897)
@@ -52,6 +52,16 @@
return $this->createQuery()->select('title, body');
}
+ public function addOnHomepage(Doctrine_Query $q = null)
+ {
+ if (is_null($q))
+ {
+ $q = $this->createQuery('a');
+ }
+ $alias = $q->getRootAlias();
+ return $q->addWhere($alias.'.is_on_homepage = 1');
+ }
+
public function filterSuppliedQuery($query)
{
$query->select('title, body');
Modified:
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/pager/sfDoctrinePagerTest.php
===================================================================
---
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/pager/sfDoctrinePagerTest.php
2010-03-30 19:50:26 UTC (rev 28896)
+++
branches/1.3/lib/plugins/sfDoctrinePlugin/test/unit/pager/sfDoctrinePagerTest.php
2010-03-30 20:30:24 UTC (rev 28897)
@@ -4,7 +4,7 @@
$fixtures = 'fixtures/pager.yml';
include dirname(__FILE__).'/../../bootstrap/functional.php';
-$t = new lime_test(4);
+$t = new lime_test(6);
// ->getResults()
$t->diag('->getResults()');
@@ -47,3 +47,16 @@
$iterated++;
}
$t->is($iterated, $normal, '"Iterator" interface loops over objects in the
current pager');
+
+// ->setTableMethod()
+$t->diag('->setTableMethod()');
+$pager = new sfDoctrinePager('Article', 10);
+$pager->setTableMethod('addOnHomepage');
+$pager->init();
+$t->is($pager->getNbResults(),
count(Doctrine::getTable('Article')->findByIsOnHomepage('1')),
'->setTableMethod() update the query');
+
+// Serialization test for defect #7987
+$t->diag('Serialization');
+$pager = unserialize(serialize($pager));
+$pager->init();
+$t->is($pager->getNbResults(),
count(Doctrine::getTable('Article')->findByIsOnHomepage('1')), 'serialization
preserves TableMethod functionality');
Modified:
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php
===================================================================
---
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php
2010-03-30 19:50:26 UTC (rev 28896)
+++
branches/1.4/lib/plugins/sfDoctrinePlugin/lib/pager/sfDoctrinePager.class.php
2010-03-30 20:30:24 UTC (rev 28897)
@@ -70,6 +70,8 @@
{
$this->$name = $values;
}
+
+ $this->tableMethodCalled = false;
}
/**
Modified:
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/pager.yml
===================================================================
---
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/pager.yml
2010-03-30 19:50:26 UTC (rev 28896)
+++
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/data/fixtures/pager.yml
2010-03-30 20:30:24 UTC (rev 28897)
@@ -2,4 +2,5 @@
# <?php for ($i = 0; $i < 50; $i++): ?> #
article<?php echo $i ?>:
title: "Article <?php echo $i ?>"
+ is_on_homepage: <?php echo sprintf("%d\n", $i % 2); ?>
# <?php endfor; ?> #
Modified:
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ArticleTable.class.php
===================================================================
---
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ArticleTable.class.php
2010-03-30 19:50:26 UTC (rev 28896)
+++
branches/1.4/lib/plugins/sfDoctrinePlugin/test/functional/fixtures/lib/model/doctrine/ArticleTable.class.php
2010-03-30 20:30:24 UTC (rev 28897)
@@ -52,6 +52,16 @@
return $this->createQuery()->select('title, body');
}
+ public function addOnHomepage(Doctrine_Query $q = null)
+ {
+ if (is_null($q))
+ {
+ $q = $this->createQuery('a');
+ }
+ $alias = $q->getRootAlias();
+ return $q->addWhere($alias.'.is_on_homepage = 1');
+ }
+
public function filterSuppliedQuery($query)
{
$query->select('title, body');
Modified:
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/pager/sfDoctrinePagerTest.php
===================================================================
---
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/pager/sfDoctrinePagerTest.php
2010-03-30 19:50:26 UTC (rev 28896)
+++
branches/1.4/lib/plugins/sfDoctrinePlugin/test/unit/pager/sfDoctrinePagerTest.php
2010-03-30 20:30:24 UTC (rev 28897)
@@ -4,7 +4,7 @@
$fixtures = 'fixtures/pager.yml';
include dirname(__FILE__).'/../../bootstrap/functional.php';
-$t = new lime_test(4);
+$t = new lime_test(6);
// ->getResults()
$t->diag('->getResults()');
@@ -47,3 +47,16 @@
$iterated++;
}
$t->is($iterated, $normal, '"Iterator" interface loops over objects in the
current pager');
+
+// ->setTableMethod()
+$t->diag('->setTableMethod()');
+$pager = new sfDoctrinePager('Article', 10);
+$pager->setTableMethod('addOnHomepage');
+$pager->init();
+$t->is($pager->getNbResults(),
count(Doctrine::getTable('Article')->findByIsOnHomepage('1')),
'->setTableMethod() update the query');
+
+// Serialization test for defect #7987
+$t->diag('Serialization');
+$pager = unserialize(serialize($pager));
+$pager->init();
+$t->is($pager->getNbResults(),
count(Doctrine::getTable('Article')->findByIsOnHomepage('1')), 'serialization
preserves TableMethod functionality');
--
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.