From 669eaa291eae53b669dba9aa02635f170a64fa8d Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Sat, 3 Nov 2012 19:40:52 +0000 Subject: [PATCH] Issue #1829942 by amateescu: Fixed Cloning an entity query doesn't clone its conditions. --- core/lib/Drupal/Core/Entity/Query/QueryBase.php | 6 ++++++ .../Drupal/system/Tests/Entity/EntityQueryTest.php | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/core/lib/Drupal/Core/Entity/Query/QueryBase.php b/core/lib/Drupal/Core/Entity/Query/QueryBase.php index 586af6907cea..9ad26e1e6e4c 100644 --- a/core/lib/Drupal/Core/Entity/Query/QueryBase.php +++ b/core/lib/Drupal/Core/Entity/Query/QueryBase.php @@ -233,4 +233,10 @@ public function tableSort(&$headers) { return $this; } + /** + * Makes sure that the Condition object is cloned as well. + */ + function __clone() { + $this->condition = clone $this->condition; + } } diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityQueryTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityQueryTest.php index a7afcc60b085..8c04faac2277 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityQueryTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityQueryTest.php @@ -156,6 +156,20 @@ function testEntityQuery() { // 15) needs to be set. $this->assertResult(1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15); + // Test cloning of query conditions. + $query = $this->factory->get('test_entity') + ->condition("$figures.color", 'red') + ->sort('ftid'); + $cloned_query = clone $query; + $cloned_query + ->condition("$figures.shape", 'circle'); + // Bit 0 (1, 3, 5, 7, 9, 11, 13, 15) needs to be set. + $this->queryResults = $query->execute(); + $this->assertResult(1, 3, 5, 7, 9, 11, 13, 15); + // No red color has a circle shape. + $this->queryResults = $cloned_query->execute(); + $this->assertResult(); + $query = $this->factory->get('test_entity'); $group = $query->orConditionGroup() ->exists($greetings, 'tr') -- GitLab