From 0b3e0b56baccb319ceeaefcb49b1efb885bf01bf Mon Sep 17 00:00:00 2001
From: Daniel Hettler <daniel.koether@outlook.de>
Date: Wed, 8 Mar 2023 17:32:06 +0100
Subject: [PATCH] [BUGFIX] Avoid multiple undefined array keys in
 FileContentParser
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When indexing files the FileContentParser collects some metadata e.g. title, description and keywords. For some files these information are not given and the parser breaks in an PHP 8 environment.

Resolves: #100122
Releases: main, 11.5
Change-Id: I54b5512c7e30c9719654591d520943733fbfe920
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/78076
Reviewed-by: Albrecht Köhnlein <ak@koehnlein.eu>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Thomas Hohn <tho@gyldendal.dk>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Albrecht Köhnlein <ak@koehnlein.eu>
---
 typo3/sysext/indexed_search/Classes/FileContentParser.php | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/typo3/sysext/indexed_search/Classes/FileContentParser.php b/typo3/sysext/indexed_search/Classes/FileContentParser.php
index 25c0fc96a8b7..4162f14c5c49 100644
--- a/typo3/sysext/indexed_search/Classes/FileContentParser.php
+++ b/typo3/sysext/indexed_search/Classes/FileContentParser.php
@@ -585,10 +585,10 @@ class FileContentParser
                     unset($res);
                     $metaContent = GeneralUtility::xml2tree($meta_xml);
                     if (is_array($metaContent)) {
-                        $contentArr['title'] .= ' ' . $metaContent['cp:coreProperties'][0]['ch']['dc:title'][0]['values'][0];
-                        $contentArr['description'] = $metaContent['cp:coreProperties'][0]['ch']['dc:subject'][0]['values'][0];
-                        $contentArr['description'] .= ' ' . $metaContent['cp:coreProperties'][0]['ch']['dc:description'][0]['values'][0];
-                        $contentArr['keywords'] = $metaContent['cp:coreProperties'][0]['ch']['cp:keywords'][0]['values'][0];
+                        $contentArr['title'] .= ' ' . ($metaContent['cp:coreProperties'][0]['ch']['dc:title'][0]['values'][0] ?? '');
+                        $contentArr['description'] = ($metaContent['cp:coreProperties'][0]['ch']['dc:subject'][0]['values'][0] ?? '');
+                        $contentArr['description'] .= ' ' . ($metaContent['cp:coreProperties'][0]['ch']['dc:description'][0]['values'][0] ?? '');
+                        $contentArr['keywords'] = ($metaContent['cp:coreProperties'][0]['ch']['cp:keywords'][0]['values'][0] ?? '');
                     }
                     $this->setLocaleForServerFileSystem(true);
                 }
-- 
GitLab