From 3422685d30f50d2cda1325d4ad2b4e41db648f90 Mon Sep 17 00:00:00 2001
From: Mathias Schreiber <mathias.schreiber@wmdb.de>
Date: Thu, 29 Oct 2015 13:37:43 +0100
Subject: [PATCH] [FOLLOWUP][TASK] FormEngine: Move SelectTree processing into
 a data provider

Extracted the target check into a dedicated method

Resolves: #69728
Releases: master
Change-Id: I24826cd8896444406066b93ffae330c22f933645
Reviewed-on: https://review.typo3.org/44352
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Tested-by: Andreas Fernandez <typo3@scripting-base.de>
---
 .../Form/FormDataProvider/TcaSelectItems.php  | 20 ++++++++++++++++++-
 .../FormDataProvider/TcaSelectTreeItems.php   | 16 ++++++++++++++-
 2 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaSelectItems.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaSelectItems.php
index 1a29d46ca478..70522a4d26b3 100644
--- a/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaSelectItems.php
+++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaSelectItems.php
@@ -38,7 +38,7 @@ class TcaSelectItems extends AbstractItemProvider implements FormDataProviderInt
             }
 
             // Make sure we are only processing supported renderTypes
-            if (!in_array($fieldConfig['config']['renderType'], ['selectSingle', 'selectSingleBox', 'selectCheckBox', 'selectMultipleSideBySide'])) {
+            if ($this->isTargetRenderType($fieldConfig)) {
                 continue;
             }
 
@@ -80,4 +80,22 @@ class TcaSelectItems extends AbstractItemProvider implements FormDataProviderInt
 
         return $result;
     }
+
+    /**
+     * Determines whether the current field is a valid target for this DataProvider
+     *
+     * @param array $fieldConfig
+     * @return bool
+     */
+    protected function isTargetRenderType(array $fieldConfig)
+    {
+        if (!in_array(
+            $fieldConfig['config']['renderType'],
+            ['selectSingle', 'selectSingleBox', 'selectCheckBox', 'selectMultipleSideBySide'],
+            true
+        )) {
+            return true;
+        }
+        return false;
+    }
 }
diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaSelectTreeItems.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaSelectTreeItems.php
index ca1af2ee793f..13c76afaba21 100644
--- a/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaSelectTreeItems.php
+++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaSelectTreeItems.php
@@ -42,7 +42,7 @@ class TcaSelectTreeItems extends AbstractItemProvider implements FormDataProvide
             }
 
             // Make sure we are only processing supported renderTypes
-            if ($fieldConfig['config']['renderType'] !== 'selectTree') {
+            if ($this->isTargetRenderType($fieldConfig)) {
                 continue;
             }
 
@@ -186,4 +186,18 @@ class TcaSelectTreeItems extends AbstractItemProvider implements FormDataProvide
 
         return $selectedNodes;
     }
+
+    /**
+     * Determines whether the current field is a valid target for this DataProvider
+     *
+     * @param array $fieldConfig
+     * @return bool
+     */
+    protected function isTargetRenderType(array $fieldConfig)
+    {
+        if ($fieldConfig['config']['renderType'] !== 'selectTree') {
+            return true;
+        }
+        return false;
+    }
 }
-- 
GitLab