[TASK] Clean up RelationHandler variable assignments 30/62830/3
authorBenni Mack <benni@typo3.org>
Wed, 8 Jan 2020 08:01:27 +0000 (09:01 +0100)
committerAnja Leichsenring <aleichsenring@ab-softlab.de>
Fri, 10 Jan 2020 09:31:14 +0000 (10:31 +0100)
This change cleans up some RelationHandler code:
- Working with true boolean inside RelationHandler for getValueArray()
- RelationHandler->MM_oppositeFieldConf is an array, but declared wrongly
as string (since forever!)
- detecting the MM_oppositeTable property should not need a $tmp variable,
  but using a direct assignment - and unset() is not needed due to PHP7s memory management
- internal $isSet flags should be boolean, instead of a number

Resolves: #90066
Releases: master
Change-Id: Ifff2a016a7be945ba6a1dd265e06b1e52bee5de7
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/62830
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
typo3/sysext/backend/Classes/Controller/Wizard/EditController.php
typo3/sysext/core/Classes/Database/RelationHandler.php

index ca08a8a..78484ee 100644 (file)
@@ -149,11 +149,10 @@ class EditController extends AbstractWizardController
             // MULTIPLE VALUES:
             // Init settings:
             $allowedTables = $config['type'] === 'group' ? $config['allowed'] : $config['foreign_table'];
-            $prependName = 1;
             // Selecting selected values into an array:
             $relationHandler = GeneralUtility::makeInstance(RelationHandler::class);
             $relationHandler->start($this->P['currentSelectedValues'], $allowedTables);
-            $value = $relationHandler->getValueArray($prependName);
+            $value = $relationHandler->getValueArray(true);
             // Traverse that array and make parameters for FormEngine
             foreach ($value as $rec) {
                 $recTableUidParts = GeneralUtility::revExplode('_', $rec, 2);
index f28c432..1e54b70 100644 (file)
@@ -118,9 +118,9 @@ class RelationHandler
     /**
      * Only set if MM_is_foreign is set
      *
-     * @var string
+     * @var array
      */
-    public $MM_oppositeFieldConf = '';
+    public $MM_oppositeFieldConf = [];
 
     /**
      * Is empty by default; if MM_is_foreign is set and there is more than one table
@@ -270,13 +270,11 @@ class RelationHandler
             $this->MM_oppositeUsage = $conf['MM_oppositeUsage'];
         }
         if ($this->MM_is_foreign) {
-            $tmp = $conf['type'] === 'group' ? $conf['allowed'] : $conf['foreign_table'];
+            $allowedTableList = $conf['type'] === 'group' ? $conf['allowed'] : $conf['foreign_table'];
             // Normally, $conf['allowed'] can contain a list of tables,
             // but as we are looking at a MM relation from the foreign side,
             // it only makes sense to allow one one table in $conf['allowed']
-            $tmp = GeneralUtility::trimExplode(',', $tmp);
-            $this->MM_oppositeTable = $tmp[0];
-            unset($tmp);
+            [$this->MM_oppositeTable] = GeneralUtility::trimExplode(',', $allowedTableList);
             // Only add the current table name if there is more than one allowed field
             // We must be sure this has been done at least once before accessing the "columns" part of TCA for a table.
             $this->MM_oppositeFieldConf = $GLOBALS['TCA'][$this->MM_oppositeTable]['columns'][$this->MM_oppositeField]['config'];
@@ -389,8 +387,8 @@ class RelationHandler
             // Changed to trimExplode 31/3 04; HMENU special type "list" didn't work
             // if there were spaces in the list... I suppose this is better overall...
             foreach ($tempItemArray as $key => $val) {
-                // Will be set to "1" if the entry was a real table/id:
-                $isSet = 0;
+                // Will be set to "true" if the entry was a real table/id
+                $isSet = false;
                 // Extract table name and id. This is un the formular [tablename]_[id]
                 // where table name MIGHT contain "_", hence the reversion of the string!
                 $val = strrev($val);
@@ -416,8 +414,8 @@ class RelationHandler
                         $this->itemArray[$key]['id'] = $theID;
                         $this->itemArray[$key]['table'] = $theTable;
                         $this->tableArray[$theTable][] = $theID;
-                        // Set update-flag:
-                        $isSet = 1;
+                        // Set update-flag
+                        $isSet = true;
                     }
                 }
                 // If it turns out that the value from the list was NOT a valid reference to a table-record,
@@ -1321,14 +1319,13 @@ class RelationHandler
      */
     public function convertItemArray()
     {
-        $hasBeenConverted = false;
-
         // conversion is only required in a workspace context
         // (the case that version ids are submitted in a live context are rare)
         if ($this->getWorkspaceId() === 0) {
-            return $hasBeenConverted;
+            return false;
         }
 
+        $hasBeenConverted = false;
         foreach ($this->tableArray as $tableName => $ids) {
             if (empty($ids) || !BackendUtility::isTableWorkspaceEnabled($tableName)) {
                 continue;