‪TYPO3CMS  10.4
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

 injectYamlSource (YamlSource $yamlSource)
 
 injectStorageRepository (StorageRepository $storageRepository)
 
 injectFilePersistenceSlot (FilePersistenceSlot $filePersistenceSlot)
 
 injectResourceFactory (ResourceFactory $resourceFactory)
 
 initializeObject ()
 
array load (string $persistenceIdentifier)
 
 save (string $persistenceIdentifier, array $formDefinition)
 
 delete (string $persistenceIdentifier)
 
bool exists (string $persistenceIdentifier)
 
array listForms ()
 
File[] retrieveYamlFilesFromStorageFolders ()
 
array< string, retrieveYamlFilesFromExtensionFolders():array { $filesFromExtensionFolders=[];foreach( $this->getAccessibleExtensionFolders() as $relativePath=> $fullPath) { foreach(new \DirectoryIterator( $fullPath) as $fileInfo) { if( $fileInfo->getExtension() !=='yaml') { continue;} $filesFromExtensionFolders[ $relativePath . $fileInfo-> getFilename ()]
 
Folder[] getAccessibleFormStorageFolders ()
 
array getAccessibleExtensionFolders ()
 
string getUniquePersistenceIdentifier (string $formIdentifier, string $savePath)
 
string getUniqueIdentifier (string $identifier)
 
bool checkForDuplicateIdentifier (string $identifier)
 
bool isAllowedPersistencePath (string $persistencePath)
 

Public Attributes

const FORM_DEFINITION_FILE_EXTENSION = '.form.yaml'
 
return $filesFromExtensionFolders
 

Protected Member Functions

bool pathIsIntendedAsExtensionPath (string $path)
 
bool pathIsIntendedAsFileMountPath (string $path)
 
File getOrCreateFile (string $persistenceIdentifier)
 
ResourceStorage getStorageByUid (int $storageUid)
 
array loadMetaData ($persistenceIdentifier)
 
array extractMetaDataFromCouldBeFormDefinition (string $maybeRawFormDefinition)
 
 generateErrorsIfFormDefinitionIsValidButHasInvalidFileExtension (array $formDefinition, string $persistenceIdentifier)
 
File retrieveFileByPersistenceIdentifier (string $persistenceIdentifier)
 
bool hasValidFileExtension (string $fileName)
 
bool isFileWithinAccessibleExtensionFolders (string $fileName)
 
bool isFileWithinAccessibleFormStorageFolders (string $fileName)
 
bool isAccessibleExtensionFolder (string $folderName)
 
bool isAccessibleFormStorageFolder (string $folderName)
 
bool looksLikeAFormDefinition (array $data)
 
array sortForms (array $forms)
 

Protected Attributes

TYPO3 CMS Form Mvc Configuration YamlSource $yamlSource
 
TYPO3 CMS Core Resource StorageRepository $storageRepository
 
array $formSettings
 
FilePersistenceSlot $filePersistenceSlot
 
FrontendInterface $runtimeCache
 
ResourceFactory $resourceFactory
 

Detailed Description

Concrete implementation of the FormPersistenceManagerInterface

Scope: frontend / backend

Definition at line 53 of file FormPersistenceManager.php.

Member Function Documentation

◆ checkForDuplicateIdentifier()

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

Check if an identifier is already used by a formDefinition.

Parameters
string$identifier
Returns
‪bool

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

Definition at line 585 of file FormPersistenceManager.php.

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

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

◆ delete()

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

◆ exists()

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

◆ extractMetaDataFromCouldBeFormDefinition()

array TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::extractMetaDataFromCouldBeFormDefinition ( string  $maybeRawFormDefinition)
protected
Parameters
string$maybeRawFormDefinition
Returns
‪array

Definition at line 774 of file FormPersistenceManager.php.

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

◆ generateErrorsIfFormDefinitionIsValidButHasInvalidFileExtension()

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

◆ getAccessibleExtensionFolders()

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

Return a list of all accessible extension folders

Only registered mountpoints from TYPO3.CMS.Form.persistenceManager.allowedExtensionPaths are listed.

Returns
‪array

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

Definition at line 477 of file FormPersistenceManager.php.

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

Referenced by TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\isAccessibleExtensionFolder(), and TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\isFileWithinAccessibleExtensionFolders().

◆ getAccessibleFormStorageFolders()

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

◆ getFilename()

array<string, retrieveYamlFilesFromExtensionFolders(): array { $filesFromExtensionFolders = []; foreach ($this->getAccessibleExtensionFolders() as $relativePath => $fullPath) { foreach (new \DirectoryIterator($fullPath) as $fileInfo) { if ($fileInfo->getExtension() !== 'yaml') { continue; } $filesFromExtensionFolders[$relativePath . $fileInfo-> TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::getFilename ( )

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

Returns
‪array<string, string>

◆ getOrCreateFile()

File 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.

Parameters
string$persistenceIdentifier
Returns
‪File
Exceptions
PersistenceManagerException

Definition at line 683 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()

ResourceStorage 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.

Parameters
string$identifier
Returns
‪string unique form identifier
Exceptions
NoUniqueIdentifierException

Definition at line 557 of file FormPersistenceManager.php.

References 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
string$savePath
Returns
‪string unique form persistence identifier
Exceptions
NoUniquePersistenceIdentifierException

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

Definition at line 523 of file FormPersistenceManager.php.

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

◆ hasValidFileExtension()

◆ initializeObject()

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

◆ injectFilePersistenceSlot()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::injectFilePersistenceSlot ( FilePersistenceSlot  $filePersistenceSlot)
Parameters
\TYPO3\CMS\Form\Slot\FilePersistenceSlot$filePersistenceSlot

Definition at line 102 of file FormPersistenceManager.php.

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

◆ injectResourceFactory()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::injectResourceFactory ( ResourceFactory  $resourceFactory)
Parameters
\TYPO3\CMS\Core\Resource\ResourceFactory$resourceFactory

Definition at line 110 of file FormPersistenceManager.php.

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

◆ injectStorageRepository()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::injectStorageRepository ( StorageRepository  $storageRepository)
Parameters
\TYPO3\CMS\Core\Resource\StorageRepository$storageRepository

Definition at line 94 of file FormPersistenceManager.php.

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

◆ injectYamlSource()

TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::injectYamlSource ( YamlSource  $yamlSource)
Parameters
\TYPO3\CMS\Form\Mvc\Configuration\YamlSource$yamlSource

Definition at line 85 of file FormPersistenceManager.php.

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

◆ isAccessibleExtensionFolder()

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

◆ isAccessibleFormStorageFolder()

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

◆ isAllowedPersistencePath()

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

◆ isFileWithinAccessibleExtensionFolders()

◆ isFileWithinAccessibleFormStorageFolders()

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

◆ listForms()

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

List all form definitions which can be loaded through this form persistence manager.

Returns an associative array with each item containing the keys 'name' (the human-readable name of the form) and 'persistenceIdentifier' (the unique identifier for the Form Persistence Manager e.g. the path to the saved form definition).

Returns
‪array in the format [['name' => 'Form 01', 'persistenceIdentifier' => 'path1'], [ .... ]]

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

Definition at line 275 of file FormPersistenceManager.php.

References TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\hasValidFileExtension(), TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\loadMetaData(), TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\looksLikeAFormDefinition(), TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\retrieveYamlFilesFromStorageFolders(), and TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\sortForms().

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

◆ load()

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

Load the array formDefinition identified by $persistenceIdentifier, and return it. Only files with the extension .yaml or .form.yaml are loaded.

Parameters
string$persistenceIdentifier
Returns
‪array

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

Definition at line 134 of file FormPersistenceManager.php.

References TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\generateErrorsIfFormDefinitionIsValidButHasInvalidFileExtension(), and TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager\retrieveFileByPersistenceIdentifier().

◆ loadMetaData()

array TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::loadMetaData (   $persistenceIdentifier)
protected

◆ looksLikeAFormDefinition()

bool TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::looksLikeAFormDefinition ( array  $data)
protected

◆ pathIsIntendedAsExtensionPath()

◆ pathIsIntendedAsFileMountPath()

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

◆ retrieveFileByPersistenceIdentifier()

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

◆ 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 345 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\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 TYPO3.CMS.Form.persistenceManager.allowSaveToExtensionPaths is set to true.

Parameters
string$persistenceIdentifier
array$formDefinition
Exceptions
PersistenceManagerException

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

Definition at line 174 of file FormPersistenceManager.php.

References 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()

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

Definition at line 918 of file FormPersistenceManager.php.

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

Member Data Documentation

◆ $filePersistenceSlot

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

◆ $filesFromExtensionFolders

return TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager::$filesFromExtensionFolders

Definition at line 391 of file FormPersistenceManager.php.

◆ $formSettings

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

Definition at line 67 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 75 of file FormPersistenceManager.php.

◆ $storageRepository

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

◆ $yamlSource

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

◆ FORM_DEFINITION_FILE_EXTENSION