From 07cdfd533d5ff9c710600d552f0bb5b2f48c8ee3 Mon Sep 17 00:00:00 2001 From: Maxime STEINHAUSSER Date: Wed, 30 Nov 2016 15:40:17 +0100 Subject: [PATCH] [WebProfiler][Translator] Fix TranslationDataCollector should use cloneVar --- .../Resources/views/Collector/translation.html.twig | 3 +-- .../DataCollector/TranslationDataCollector.php | 4 ++-- .../Tests/DataCollector/TranslationDataCollectorTest.php | 9 ++++++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/translation.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/translation.html.twig index 0be04e76117d8..f5ff17680a236 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/translation.html.twig +++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/translation.html.twig @@ -183,8 +183,7 @@ {% endif %} diff --git a/src/Symfony/Component/Translation/DataCollector/TranslationDataCollector.php b/src/Symfony/Component/Translation/DataCollector/TranslationDataCollector.php index cb59d0a7e70e4..6b5e165aad9a7 100644 --- a/src/Symfony/Component/Translation/DataCollector/TranslationDataCollector.php +++ b/src/Symfony/Component/Translation/DataCollector/TranslationDataCollector.php @@ -101,12 +101,12 @@ private function sanitizeCollectedMessages($messages) if (!isset($result[$messageId])) { $message['count'] = 1; - $message['parameters'] = !empty($message['parameters']) ? array($message['parameters']) : array(); + $message['parameters'] = !empty($message['parameters']) ? array($this->cloneVar($message['parameters'])) : array(); $messages[$key]['translation'] = $this->sanitizeString($message['translation']); $result[$messageId] = $message; } else { if (!empty($message['parameters'])) { - $result[$messageId]['parameters'][] = $message['parameters']; + $result[$messageId]['parameters'][] = $this->cloneVar($message['parameters']); } ++$result[$messageId]['count']; diff --git a/src/Symfony/Component/Translation/Tests/DataCollector/TranslationDataCollectorTest.php b/src/Symfony/Component/Translation/Tests/DataCollector/TranslationDataCollectorTest.php index 3d1e86e22cbed..ba9df0751b389 100644 --- a/src/Symfony/Component/Translation/Tests/DataCollector/TranslationDataCollectorTest.php +++ b/src/Symfony/Component/Translation/Tests/DataCollector/TranslationDataCollectorTest.php @@ -13,6 +13,7 @@ use Symfony\Component\Translation\DataCollectorTranslator; use Symfony\Component\Translation\DataCollector\TranslationDataCollector; +use Symfony\Component\VarDumper\Cloner\VarCloner; class TranslationDataCollectorTest extends \PHPUnit_Framework_TestCase { @@ -39,6 +40,8 @@ public function testCollectEmptyMessages() public function testCollect() { + $cloner = new VarCloner(); + $collectedMessages = array( array( 'id' => 'foo', @@ -115,9 +118,9 @@ public function testCollect() 'state' => DataCollectorTranslator::MESSAGE_MISSING, 'count' => 3, 'parameters' => array( - array('%count%' => 3), - array('%count%' => 3), - array('%count%' => 4, '%foo%' => 'bar'), + $cloner->cloneVar(array('%count%' => 3)), + $cloner->cloneVar(array('%count%' => 3)), + $cloner->cloneVar(array('%count%' => 4, '%foo%' => 'bar')), ), 'transChoiceNumber' => 3, ),