From ff2c6b9ddacfaea8acdc8f1d47a01099c2323ae5 Mon Sep 17 00:00:00 2001 From: Alexey Gorbylev Date: Tue, 15 Jan 2013 11:37:44 +0400 Subject: [PATCH] UnifiedContainer clone fix + test --- main/UnifiedContainer/UnifiedContainer.class.php | 6 +++++- test/db/CountAndUnifiedDBTest.class.php | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/main/UnifiedContainer/UnifiedContainer.class.php b/main/UnifiedContainer/UnifiedContainer.class.php index c8483b972b..7126c7c25f 100644 --- a/main/UnifiedContainer/UnifiedContainer.class.php +++ b/main/UnifiedContainer/UnifiedContainer.class.php @@ -106,7 +106,11 @@ public function __wakeup() $this->dao = Singleton::getInstance($this->daoClass); $this->worker = new $this->workerClass($this); } - + + public function __clone() { + $this->worker = clone $this->worker; + } + public function getParentObject() { return $this->parent; diff --git a/test/db/CountAndUnifiedDBTest.class.php b/test/db/CountAndUnifiedDBTest.class.php index 31c0b8dab4..2ca293c8fb 100644 --- a/test/db/CountAndUnifiedDBTest.class.php +++ b/test/db/CountAndUnifiedDBTest.class.php @@ -126,6 +126,16 @@ public function unified() return null; $this->assertEquals($user->getEncapsulants()->getCount(), 10); + + // unified container __clone + $dao = $user->getEncapsulants(); + $dao->setCriteria(Criteria::create()); // empty criteria + $cloneDao = clone $dao; + $cloneDao->setCriteria( // criteria with 1 expression + Criteria::create() + ->add( Expression::gt('id',0) ) + ); + $this->assertNotEquals($dao, $cloneDao); // they should be different } } ?> \ No newline at end of file