From 1b95bb2a85d02ffddb2b1527c4f47926e8c756af Mon Sep 17 00:00:00 2001
From: Florian Rival <florian.typo3@oktopuce.fr>
Date: Fri, 10 Dec 2021 12:23:09 +0100
Subject: [PATCH] [BUGFIX] Fix undefined key warning in EXT:backend/history
 with PHP8

This fix a warning when you click on a Rollback (preview) button in history for pages or content elements.

Resolves: #96325
Releases: main, 11.5
Change-Id: Iec42cd04289a4c567840651686808b9ef43e1656
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/72615
Tested-by: core-ci <typo3@b13.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Oliver Bartsch <bo@cedev.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
---
 .../Controller/ContentElement/ElementHistoryController.php  | 6 +++---
 typo3/sysext/backend/Classes/History/RecordHistory.php      | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/typo3/sysext/backend/Classes/Controller/ContentElement/ElementHistoryController.php b/typo3/sysext/backend/Classes/Controller/ContentElement/ElementHistoryController.php
index 35757960f72f..a7fd1f4e38c4 100644
--- a/typo3/sysext/backend/Classes/Controller/ContentElement/ElementHistoryController.php
+++ b/typo3/sysext/backend/Classes/Controller/ContentElement/ElementHistoryController.php
@@ -266,7 +266,7 @@ class ElementHistoryController
                 }
                 // Build up temporary diff array
                 // turn around diff because it should be a "rollback preview"
-                if ($diff['newData'][$key]) {
+                if ($diff['newData'][$key] ?? false) {
                     $tmpArr = [
                         'newRecord' => $diff['oldData'][$key],
                         'oldRecord' => $diff['newData'][$key],
@@ -373,8 +373,8 @@ class ElementHistoryController
                 if (is_array($GLOBALS['TCA'][$table]['columns'][$fN] ?? null) && ($GLOBALS['TCA'][$table]['columns'][$fN]['config']['type'] ?? '') !== 'passthrough') {
                     // Create diff-result:
                     $diffres = $diffUtility->makeDiffDisplay(
-                        BackendUtility::getProcessedValue($table, $fN, $entry['oldRecord'][$fN], 0, true),
-                        BackendUtility::getProcessedValue($table, $fN, $entry['newRecord'][$fN], 0, true)
+                        BackendUtility::getProcessedValue($table, $fN, ($entry['oldRecord'][$fN] ?? ''), 0, true),
+                        BackendUtility::getProcessedValue($table, $fN, ($entry['newRecord'][$fN] ?? ''), 0, true)
                     );
                     $rollbackUrl = '';
                     if ($rollbackUid) {
diff --git a/typo3/sysext/backend/Classes/History/RecordHistory.php b/typo3/sysext/backend/Classes/History/RecordHistory.php
index cd8abae4a5ef..bba9f61f3497 100644
--- a/typo3/sysext/backend/Classes/History/RecordHistory.php
+++ b/typo3/sysext/backend/Classes/History/RecordHistory.php
@@ -173,7 +173,7 @@ class RecordHistory
                 if (!isset($insertsDeletes[$field])) {
                     $insertsDeletes[$field] = 0;
                 }
-                $value['action'] === 'insert' ? $insertsDeletes[$field]++ : $insertsDeletes[$field]--;
+                ($value['action'] ?? '') === 'insert' ? $insertsDeletes[$field]++ : $insertsDeletes[$field]--;
                 // unset not needed fields
                 if ($insertsDeletes[$field] === 0) {
                     unset($insertsDeletes[$field]);
-- 
GitLab