From c7c6b79d315aa8ffa32070ebd4ffb95b5f9aafcf Mon Sep 17 00:00:00 2001
From: catch <catch@35733.no-reply.drupal.org>
Date: Sat, 28 Apr 2012 10:09:31 +0900
Subject: [PATCH] Issue #1490150 by duellj, catch: Fixed
 EntityFieldQuery::pager(0) generates PHP error 'divide by zero'.

---
 core/modules/entity/entity.query.inc        |  7 +++----
 core/modules/entity/tests/entity_query.test | 22 +++++++++++++++++++++
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/core/modules/entity/entity.query.inc b/core/modules/entity/entity.query.inc
index 6d312eacf2d9..840108ad0940 100644
--- a/core/modules/entity/entity.query.inc
+++ b/core/modules/entity/entity.query.inc
@@ -873,12 +873,11 @@ protected function propertyQuery() {
   /**
    * Gets the total number of results and initialize a pager for the query.
    *
-   * This query can be detected by checking for ($this->pager && $this->count),
-   * which allows a driver to return 0 from the count query and disable
-   * the pager.
+   * The pager can be disabled by either setting the pager limit to 0, or by
+   * setting this query to be a count query.
    */
   function initializePager() {
-    if ($this->pager && !$this->count) {
+    if ($this->pager && !empty($this->pager['limit']) && !$this->count) {
       $page = pager_find_page($this->pager['element']);
       $count_query = clone $this;
       $this->pager['total'] = $count_query->count()->execute();
diff --git a/core/modules/entity/tests/entity_query.test b/core/modules/entity/tests/entity_query.test
index fb5dc1402671..625e61d15f48 100644
--- a/core/modules/entity/tests/entity_query.test
+++ b/core/modules/entity/tests/entity_query.test
@@ -10,6 +10,7 @@
  */
 class EntityFieldQueryTestCase extends DrupalWebTestCase {
 
+
   public static function getInfo() {
     return array(
       'name' => 'Entity query',
@@ -1322,6 +1323,27 @@ class EntityFieldQueryTestCase extends DrupalWebTestCase {
     unset($_GET['page']);
   }
 
+  /**
+   * Tests the disabling the pager in EntityFieldQuery.
+   */
+  function testEntityFieldQueryDisablePager() {
+    // Test enabling a pager and then disabling it.
+    $query = new EntityFieldQuery();
+    $query
+      ->entityCondition('entity_type', 'test_entity_bundle_key')
+      ->propertyOrderBy('ftid', 'ASC')
+      ->pager(1)
+      ->pager(0);
+    $this->assertEntityFieldQuery($query, array(
+      array('test_entity_bundle_key', 1),
+      array('test_entity_bundle_key', 2),
+      array('test_entity_bundle_key', 3),
+      array('test_entity_bundle_key', 4),
+      array('test_entity_bundle_key', 5),
+      array('test_entity_bundle_key', 6),
+    ), t('Test disabling pager in propertyQuery.'), TRUE);
+  }
+
   /**
    * Tests the TableSort integration of EntityFieldQuery.
    */
-- 
GitLab