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.

Reply via email to