From 4d559269bb3b22b7540a61ddb8eb394ff54c5395 Mon Sep 17 00:00:00 2001
From: Ralf Zimmermann <ralf.zimmermann@tritum.de>
Date: Thu, 31 May 2018 22:05:27 +0200
Subject: [PATCH] [BUGFIX] Only list valid forms

Only list valid forms within the form manger and the form plugin.

Valid forms have an "identifier" and a "type" and the type must be "Form".

Resolves: #85132
Releases: master, 8.7
Change-Id: I2f473925b3edf839d5f965136b6b02030671350a
Reviewed-on: https://review.typo3.org/57108
Reviewed-by: Jan Helke <typo3@helke.de>
Tested-by: Jan Helke <typo3@helke.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Mona Muzaffar <mona.muzaffar@gmx.de>
Tested-by: Mona Muzaffar <mona.muzaffar@gmx.de>
Tested-by: TYPO3com <no-reply@typo3.com>
---
 .../Persistence/FormPersistenceManager.php    | 52 ++++++++++---------
 1 file changed, 28 insertions(+), 24 deletions(-)

diff --git a/typo3/sysext/form/Classes/Mvc/Persistence/FormPersistenceManager.php b/typo3/sysext/form/Classes/Mvc/Persistence/FormPersistenceManager.php
index f0eb1500cdb7..869de1dee4db 100644
--- a/typo3/sysext/form/Classes/Mvc/Persistence/FormPersistenceManager.php
+++ b/typo3/sysext/form/Classes/Mvc/Persistence/FormPersistenceManager.php
@@ -259,18 +259,20 @@ class FormPersistenceManager implements FormPersistenceManagerInterface
                 $persistenceIdentifier = $storage->getUid() . ':' . $file->getIdentifier();
 
                 $form = $this->load($persistenceIdentifier);
-                $forms[] = [
-                    'identifier' => $form['identifier'],
-                    'name' => $form['label'] ?? $form['identifier'],
-                    'persistenceIdentifier' => $persistenceIdentifier,
-                    'readOnly' => $formReadOnly,
-                    'removable' => true,
-                    'location' => 'storage',
-                    'duplicateIdentifier' => false,
-                    'invalid' => $form['invalid'],
-                    'error' => $form['error'],
-                ];
-                $identifiers[$form['identifier']]++;
+                if (isset($form['identifier'], $form['type']) && $form['type'] === 'Form') {
+                    $forms[] = [
+                        'identifier' => $form['identifier'],
+                        'name' => $form['label'] ?? $form['identifier'],
+                        'persistenceIdentifier' => $persistenceIdentifier,
+                        'readOnly' => $formReadOnly,
+                        'removable' => true,
+                        'location' => 'storage',
+                        'duplicateIdentifier' => false,
+                        'invalid' => $form['invalid'],
+                        'error' => $form['error'],
+                    ];
+                    $identifiers[$form['identifier']]++;
+                }
             }
             $storage->resetFileAndFolderNameFiltersToDefault();
         }
@@ -282,18 +284,20 @@ class FormPersistenceManager implements FormPersistenceManagerInterface
                     continue;
                 }
                 $form = $this->load($relativePath . $fileInfo->getFilename());
-                $forms[] = [
-                    'identifier' => $form['identifier'],
-                    'name' => $form['label'] ?? $form['identifier'],
-                    'persistenceIdentifier' => $relativePath . $fileInfo->getFilename(),
-                    'readOnly' => $this->formSettings['persistenceManager']['allowSaveToExtensionPaths'] ? false: true,
-                    'removable' => $this->formSettings['persistenceManager']['allowDeleteFromExtensionPaths'] ? true: false,
-                    'location' => 'extension',
-                    'duplicateIdentifier' => false,
-                    'invalid' => $form['invalid'],
-                    'error' => $form['error'],
-                ];
-                $identifiers[$form['identifier']]++;
+                if (isset($form['identifier'], $form['type']) && $form['type'] === 'Form') {
+                    $forms[] = [
+                        'identifier' => $form['identifier'],
+                        'name' => $form['label'] ?? $form['identifier'],
+                        'persistenceIdentifier' => $relativePath . $fileInfo->getFilename(),
+                        'readOnly' => $this->formSettings['persistenceManager']['allowSaveToExtensionPaths'] ? false: true,
+                        'removable' => $this->formSettings['persistenceManager']['allowDeleteFromExtensionPaths'] ? true: false,
+                        'location' => 'extension',
+                        'duplicateIdentifier' => false,
+                        'invalid' => $form['invalid'],
+                        'error' => $form['error'],
+                    ];
+                    $identifiers[$form['identifier']]++;
+                }
             }
         }
 
-- 
GitLab