From 8c478504630d921cc4168e57135e1743b145b27a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20E=C3=9Fl?= <indy.essl@gmail.com>
Date: Sat, 29 Feb 2020 13:02:11 +0100
Subject: [PATCH] [BUGFIX] Evaluate invertStateDisplay in flexforms

The option "invertStateDisplay" for checkboxes was not working with
flexforms, because the received true/false values from a flexform are
of type "string" and not of type "bool".
To correctly evaluate these values, the "invertStateDisplay" options
in the TcaCheckboxItems class are now cast to bool.

Resolves: #90542
Releases: master, 9.5
Change-Id: I52027703a103db858db40095b039837c43ebe5d0
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/63506
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Susanne Moog <look@susi.dev>
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Tested-by: Susanne Moog <look@susi.dev>
---
 .../Classes/Form/FormDataProvider/TcaCheckboxItems.php      | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaCheckboxItems.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaCheckboxItems.php
index 76519bb24905..3b2a93c4546f 100644
--- a/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaCheckboxItems.php
+++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaCheckboxItems.php
@@ -128,7 +128,7 @@ class TcaCheckboxItems extends AbstractItemProvider implements FormDataProviderI
     private function sanitizeToggleCheckbox(array $item, int $itemKey, array $newItems)
     {
         if (array_key_exists('invertStateDisplay', $item)) {
-            $newItems[$itemKey]['invertStateDisplay'] = $item['invertStateDisplay'];
+            $newItems[$itemKey]['invertStateDisplay'] = (bool)$item['invertStateDisplay'];
         } else {
             $newItems[$itemKey]['invertStateDisplay'] = false;
         }
@@ -150,7 +150,7 @@ class TcaCheckboxItems extends AbstractItemProvider implements FormDataProviderI
             $newItems[$itemKey]['labelUnchecked'] = $this->getLanguageService()->sL($item['labelUnchecked']);
         }
         if (array_key_exists('invertStateDisplay', $item)) {
-            $newItems[$itemKey]['invertStateDisplay'] = $item['invertStateDisplay'];
+            $newItems[$itemKey]['invertStateDisplay'] = (bool)$item['invertStateDisplay'];
         } else {
             $newItems[$itemKey]['invertStateDisplay'] = false;
         }
@@ -172,7 +172,7 @@ class TcaCheckboxItems extends AbstractItemProvider implements FormDataProviderI
             $newItems[$itemKey]['iconIdentifierUnchecked'] = $item['iconIdentifierUnchecked'];
         }
         if (array_key_exists('invertStateDisplay', $item)) {
-            $newItems[$itemKey]['invertStateDisplay'] = $item['invertStateDisplay'];
+            $newItems[$itemKey]['invertStateDisplay'] = (bool)$item['invertStateDisplay'];
         } else {
             $newItems[$itemKey]['invertStateDisplay'] = false;
         }
-- 
GitLab