From a80219862cdeddb3d33c19e62ca4c7a42ceb3c33 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 2 Nov 2014 12:14:43 -0500 Subject: [PATCH] Scope TableRegistry finds to the current model alias It is otherwise possible to have overlapping translated records --- src/Model/Behavior/TranslateBehavior.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/Behavior/TranslateBehavior.php b/src/Model/Behavior/TranslateBehavior.php index 3a1aa0b5373..59bee11095c 100644 --- a/src/Model/Behavior/TranslateBehavior.php +++ b/src/Model/Behavior/TranslateBehavior.php @@ -183,10 +183,11 @@ public function beforeSave(Event $event, Entity $entity, ArrayObject $options) { $fields = array_keys($values); $primaryKey = (array)$this->_table->primaryKey(); $key = $entity->get(current($primaryKey)); + $model = $this->_table->alias(); $preexistent = TableRegistry::get($table)->find() ->select(['id', 'field']) - ->where(['field IN' => $fields, 'locale' => $locale, 'foreign_key' => $key]) + ->where(['field IN' => $fields, 'locale' => $locale, 'foreign_key' => $key, 'model' => $model]) ->bufferResults(false) ->indexBy('field'); @@ -197,7 +198,6 @@ public function beforeSave(Event $event, Entity $entity, ArrayObject $options) { } $new = array_diff_key($values, $modified); - $model = $this->_table->alias(); foreach ($new as $field => $content) { $new[$field] = new Entity(compact('locale', 'field', 'content', 'model'), [ 'useSetters' => false,