‪TYPO3CMS  ‪main
TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager Class Reference
Inheritance diagram for TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager:
TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManagerInterface

Public Member Functions

 __construct (YamlSource $yamlSource, StorageRepository $storageRepository, FilePersistenceSlot $filePersistenceSlot, ResourceFactory $resourceFactory, ConfigurationManagerInterface $configurationManager, CacheManager $cacheManager, EventDispatcherInterface $eventDispatcher,)
 
 load (string $persistenceIdentifier)
 
 save (string $persistenceIdentifier, array $formDefinition)
 
 delete (string $persistenceIdentifier)
 
bool exists (string $persistenceIdentifier)
 
array listForms ()
 
 hasForms ()
 
File[] retrieveYamlFilesFromStorageFolders ()
 
string[] retrieveYamlFilesFromExtensionFolders ()
 
Folder[] getAccessibleFormStorageFolders ()
 
 getAccessibleExtensionFolders ()
 
string getUniquePersistenceIdentifier (string $formIdentifier, string $savePath)
 
string getUniqueIdentifier (string $identifier)
 
 checkForDuplicateIdentifier (string $identifier)
 
 isAllowedPersistencePath (string $persistencePath)
 
 hasValidFileExtension (string $fileName)
 

Public Attributes

const FORM_DEFINITION_FILE_EXTENSION = '.form.yaml'
 
if(empty($this->typoScriptSettings['formDefinitionOverrides'][$formDefinition['identifier']] ?? null)) $formDefinitionOverrides
 
return $formDefinition
 

Protected Member Functions

array< string, overrideFormDefinition(array $formDefinition, string $persistenceIdentifier, string $cacheKey):array { $formDefinition=$this-> eventDispatcher dispatch (new AfterFormDefinitionLoadedEvent(formDefinition:$formDefinition, persistenceIdentifier:$persistenceIdentifier, cacheKey:$cacheKey)) -> getFormDefinition()
 
 pathIsIntendedAsExtensionPath (string $path)
 
 pathIsIntendedAsFileMountPath (string $path)
 
 getOrCreateFile (string $persistenceIdentifier)
 
 getStorageByUid (int $storageUid)
 
 loadMetaData ($persistenceIdentifier)
 
 extractMetaDataFromCouldBeFormDefinition (string $maybeRawFormDefinition)
 
 generateErrorsIfFormDefinitionIsValidButHasInvalidFileExtension (array $formDefinition, string $persistenceIdentifier)
 
 retrieveFileByPersistenceIdentifier (string $persistenceIdentifier)
 
 ensureValidPersistenceIdentifier (string $persistenceIdentifier)
 
 isFileWithinAccessibleExtensionFolders (string $fileName)
 
 isFileWithinAccessibleFormStorageFolders (string $fileName)
 
 isAccessibleExtensionFolder (string $folderName)
 
 isAccessibleFormStorageFolder (string $folderName)
 
 looksLikeAFormDefinition (array $data)
 
 sortForms (array $forms)
 

Protected Attributes

YamlSource $yamlSource
 
StorageRepository $storageRepository
 
FilePersistenceSlot $filePersistenceSlot
 
ResourceFactory $resourceFactory
 
array $formSettings
 
array $typoScriptSettings
 
FrontendInterface $runtimeCache
 
EventDispatcherInterface $eventDispatcher
 

Detailed Description

Concrete implementation of the FormPersistenceManagerInterface

Scope: frontend / backend

Definition at line 61 of file FormPersistenceManager.php.

Constructor & Destructor Documentation

◆ __construct()

Member Function Documentation

◆ checkForDuplicateIdentifier()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::checkForDuplicateIdentifier ( string  $identifier)

◆ delete()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::delete ( string  $persistenceIdentifier)

◆ dispatch()

array<string, overrideFormDefinition(array $formDefinition, string $persistenceIdentifier, string $cacheKey): array { $formDefinition = $this-> eventDispatcher TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::dispatch ( new   AfterFormDefinitionLoadedEventformDefinition:$formDefinition, persistenceIdentifier:$persistenceIdentifier, cacheKey:$cacheKey) -> getFormDefinition()
protected

Allows to modify and override the formDefinition. Therefore, a PSR-14 Event is dispatched and if the TypoScript configuration path plugin.tx_form.settings.formDefinitionOverrides.<identifier> exists, these settings are merged into the formDefinition.

Parameters
array<string,mixed>‪$formDefinition
Returns
‪array<string, mixed>

References TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\$formDefinition.

◆ ensureValidPersistenceIdentifier()

◆ exists()

◆ extractMetaDataFromCouldBeFormDefinition()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::extractMetaDataFromCouldBeFormDefinition ( string  $maybeRawFormDefinition)
protected

◆ generateErrorsIfFormDefinitionIsValidButHasInvalidFileExtension()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::generateErrorsIfFormDefinitionIsValidButHasInvalidFileExtension ( array  $formDefinition,
string  $persistenceIdentifier 
)
protected

◆ getAccessibleExtensionFolders()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::getAccessibleExtensionFolders ( )

◆ getAccessibleFormStorageFolders()

Folder [] TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::getAccessibleFormStorageFolders ( )

◆ getOrCreateFile()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::getOrCreateFile ( string  $persistenceIdentifier)
protected

Returns a File object for a given $persistenceIdentifier. If no file for this identifier exists a new object will be created.

Exceptions
PersistenceManagerException

Definition at line 710 of file FormPersistenceManager.php.

References TYPO3\CMS\Form\Slot\FilePersistenceSlot\COMMAND_FILE_CREATE, TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\getStorageByUid(), and TYPO3\CMS\Core\Utility\PathUtility\pathinfo().

Referenced by TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\save().

◆ getStorageByUid()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::getStorageByUid ( int  $storageUid)
protected

◆ getUniqueIdentifier()

string TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::getUniqueIdentifier ( string  $identifier)

This takes a form identifier and returns a unique identifier for it. If a formDefinition with the same identifier already exists a suffix is appended until the identifier is unique.

Returns
‪string unique form identifier
Exceptions
NoUniqueIdentifierException

Definition at line 564 of file FormPersistenceManager.php.

References TYPO3\CMS\Webhooks\Message\$identifier, and TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\checkForDuplicateIdentifier().

◆ getUniquePersistenceIdentifier()

string TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::getUniquePersistenceIdentifier ( string  $formIdentifier,
string  $savePath 
)

This takes a form identifier and returns a unique persistence identifier for it. By default this is just similar to the identifier. But if a form with the same persistence identifier already exists a suffix is appended until the persistence identifier is unique.

Parameters
string$formIdentifier‪lowerCamelCased form identifier
Returns
‪string unique form persistence identifier
Exceptions
NoUniquePersistenceIdentifierException

Implements TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManagerInterface.

Definition at line 531 of file FormPersistenceManager.php.

References TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\exists(), and TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\FORM_DEFINITION_FILE_EXTENSION.

◆ hasForms()

◆ hasValidFileExtension()

◆ isAccessibleExtensionFolder()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::isAccessibleExtensionFolder ( string  $folderName)
protected

◆ isAccessibleFormStorageFolder()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::isAccessibleFormStorageFolder ( string  $folderName)
protected

◆ isAllowedPersistencePath()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::isAllowedPersistencePath ( string  $persistencePath)

◆ isFileWithinAccessibleExtensionFolders()

◆ isFileWithinAccessibleFormStorageFolders()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::isFileWithinAccessibleFormStorageFolders ( string  $fileName)
protected

◆ listForms()

array TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::listForms ( )

◆ load()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::load ( string  $persistenceIdentifier)

◆ loadMetaData()

◆ looksLikeAFormDefinition()

◆ pathIsIntendedAsExtensionPath()

◆ pathIsIntendedAsFileMountPath()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::pathIsIntendedAsFileMountPath ( string  $path)
protected

◆ retrieveFileByPersistenceIdentifier()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::retrieveFileByPersistenceIdentifier ( string  $persistenceIdentifier)
protected

◆ retrieveYamlFilesFromExtensionFolders()

string [] TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::retrieveYamlFilesFromExtensionFolders ( )

Retrieves yaml files from extension folders for further processing. At this time it's not determined yet, whether these files contain form data.

Returns
‪string[]

Definition at line 388 of file FormPersistenceManager.php.

References TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\getAccessibleExtensionFolders().

Referenced by TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\hasForms(), and TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\listForms().

◆ retrieveYamlFilesFromStorageFolders()

File [] TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::retrieveYamlFilesFromStorageFolders ( )

Retrieves yaml files from storage folders for further processing. At this time it's not determined yet, whether these files contain form data.

Returns
‪File[]

Definition at line 355 of file FormPersistenceManager.php.

References TYPO3\CMS\Core\Resource\Folder\FILTER_MODE_USE_OWN_AND_STORAGE_FILTERS, and TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\getAccessibleFormStorageFolders().

Referenced by TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\hasForms(), and TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\listForms().

◆ save()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::save ( string  $persistenceIdentifier,
array  $formDefinition 
)

Save the array form representation identified by $persistenceIdentifier. Only files with the extension .form.yaml are saved. If the formDefinition is located within an EXT: resource, save is only allowed if the configuration path persistenceManager.allowSaveToExtensionPaths is set to true.

Exceptions
PersistenceManagerException

Implements TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManagerInterface.

Definition at line 156 of file FormPersistenceManager.php.

References TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\$formDefinition, TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\getOrCreateFile(), TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\hasValidFileExtension(), TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\isFileWithinAccessibleExtensionFolders(), and TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\pathIsIntendedAsExtensionPath().

◆ sortForms()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::sortForms ( array  $forms)
protected

Member Data Documentation

◆ $eventDispatcher

EventDispatcherInterface TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::$eventDispatcher
protected

◆ $filePersistenceSlot

FilePersistenceSlot TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::$filePersistenceSlot
protected

◆ $formDefinition

◆ $formDefinitionOverrides

if (empty( $this->typoScriptSettings[ 'formDefinitionOverrides'][ $formDefinition[ 'identifier']] ?? null)) TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::$formDefinitionOverrides
Initial value:
= GeneralUtility::makeInstance(TypoScriptService::class)
->resolvePossibleTypoScriptConfiguration($this->typoScriptSettings['formDefinitionOverrides'][‪$formDefinition['identifier']])

Definition at line 673 of file FormPersistenceManager.php.

◆ $formSettings

array TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::$formSettings
protected

Definition at line 69 of file FormPersistenceManager.php.

◆ $resourceFactory

ResourceFactory TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::$resourceFactory
protected

◆ $runtimeCache

FrontendInterface TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::$runtimeCache
protected

Definition at line 71 of file FormPersistenceManager.php.

◆ $storageRepository

StorageRepository TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::$storageRepository
protected

◆ $typoScriptSettings

array TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::$typoScriptSettings
protected

Definition at line 70 of file FormPersistenceManager.php.

◆ $yamlSource

YamlSource TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::$yamlSource
protected

◆ FORM_DEFINITION_FILE_EXTENSION

‪TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\$formDefinition
‪return $formDefinition
Definition: FormPersistenceManager.php:681