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