From 8eafcaa090a05b7499cce90d8a9614151060c35c Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Sat, 15 Oct 2016 10:10:11 +1100 Subject: [PATCH] Encode extra config to isolate the logic Fixes #2417 --- .../backend/behaviors/RelationController.php | 21 +++++++++++++------ .../partials/_container.htm | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/modules/backend/behaviors/RelationController.php b/modules/backend/behaviors/RelationController.php index 41328f664..1e38156b5 100644 --- a/modules/backend/behaviors/RelationController.php +++ b/modules/backend/behaviors/RelationController.php @@ -1509,15 +1509,24 @@ class RelationController extends ControllerBehavior $field = $this->field; } + if (!$config || !isset($this->originalConfig->{$field})) { + return; + } + + if ( + !is_array($config) && + (!$config = @json_decode(@base64_decode($config), true)) + ) { + return; + } + $parsedConfig = array_only($config, ['readOnly']); $parsedConfig['view'] = array_only($config, ['recordUrl']); - if (is_array($config) && isset($this->originalConfig->{$field})) { - $this->originalConfig->{$field} = array_merge_recursive( - $this->originalConfig->{$field}, - $parsedConfig - ); - } + $this->originalConfig->{$field} = array_replace_recursive( + $this->originalConfig->{$field}, + $parsedConfig + ); } /** diff --git a/modules/backend/behaviors/relationcontroller/partials/_container.htm b/modules/backend/behaviors/relationcontroller/partials/_container.htm index 85a2cce30..eb66e963a 100644 --- a/modules/backend/behaviors/relationcontroller/partials/_container.htm +++ b/modules/backend/behaviors/relationcontroller/partials/_container.htm @@ -1,6 +1,6 @@
relationRenderToolbar()): ?>