DriverInterface
An interface Drivers have to implement to fulfil the needs of the FAL API.
Table of Contents
Methods
- addFile() : non-empty-string
- Adds a file from the local server hard disk to a given path in TYPO3s virtual file system. This assumes that the local file exists, so no further check is done here! After a successful operation the original file must not exist anymore.
- copyFileWithinStorage() : non-empty-string
- Copies a file *within* the current storage.
- copyFolderWithinStorage() : bool
- Folder equivalent to copyFileWithinStorage().
- countFilesInFolder() : int<0, max>
- Returns the number of files inside the specified path
- countFoldersInFolder() : int<0, max>
- Returns the number of folders inside the specified path
- createFile() : non-empty-string
- Creates a new (empty) file and returns the identifier.
- createFolder() : non-empty-string
- Creates a folder, within a parent folder.
- deleteFile() : bool
- Removes a file from the filesystem. This does not check if the file is still used or if it is a bad idea to delete it for some other reason this has to be taken care of in the upper layers (e.g. the Storage)!
- deleteFolder() : bool
- Removes a folder in filesystem.
- dumpFileContents() : void
- Directly output the contents of the file to the output buffer. Should not take care of header files or flushing buffer before. Will be taken care of by the Storage.
- fileExists() : bool
- Checks if a file exists.
- fileExistsInFolder() : bool
- Checks if a file inside a folder exists
- folderExists() : bool
- Checks if a folder exists.
- folderExistsInFolder() : bool
- Checks if a folder inside a folder exists.
- getCapabilities() : Capabilities
- Returns the capabilities of this driver.
- getDefaultFolder() : non-empty-string
- Returns the identifier of the default folder new files should be put into.
- getFileContents() : string
- Returns the contents of a file. Beware that this requires to load the complete file into memory and also may require fetching the file from an external location. So this might be an expensive operation (both in terms of processing resources and money) for large files.
- getFileForLocalProcessing() : non-empty-string
- Returns a path to a local copy of a file for processing it. When changing the file, you have to take care of replacing the current version yourself!
- getFileInfoByIdentifier() : array<string, mixed>
- Returns information about a file.
- getFileInFolder() : non-empty-string
- Returns the identifier of a file inside the folder
- getFilesInFolder() : array<int, string>
- Returns a list of files inside the specified path
- getFolderInfoByIdentifier() : array{identifier: non-empty-string, name: string, mtime: int, ctime: int, storage: int}
- Returns information about a folder.
- getFolderInFolder() : non-empty-string
- Returns the identifier of a folder inside the folder
- getFoldersInFolder() : array<string|int, string>
- Returns a list of folders inside the specified path
- getParentFolderIdentifierOfIdentifier() : non-empty-string
- Returns the identifier of the folder the file resides in
- getPermissions() : array{r: bool, w: bool}
- Returns the permissions of a file/folder as an array (keys r, w) of boolean flags
- getPublicUrl() : non-empty-string|null
- Returns the public URL to a file.
- getRootLevelFolder() : non-empty-string
- Returns the identifier of the root level folder of the storage.
- hasCapability() : bool
- Returns TRUE if this driver has the given capability.
- hash() : string
- Creates a hash for a file.
- hashIdentifier() : non-empty-string
- Hashes a file identifier, taking the case sensitivity of the file system into account. This helps mitigating problems with case-insensitive databases.
- initialize() : void
- Initializes this object. This is called by the storage after the driver has been attached.
- isCaseSensitiveFileSystem() : bool
- Returns TRUE if this driver uses case-sensitive identifiers. NOTE: This is a configurable setting, but the setting does not change the way the underlying file system treats the identifiers; the setting should therefore always reflect the file system and not try to change its behaviour
- isFolderEmpty() : bool
- Checks if a folder contains files and (if supported) other folders.
- isWithin() : bool
- Checks if a given identifier is within a container, e.g. if a file or folder is within another folder.
- mergeConfigurationCapabilities() : Capabilities
- Merges the capabilities merged by the user at the storage configuration into the actual capabilities of the driver and returns the result.
- moveFileWithinStorage() : non-empty-string
- Moves a file *within* the current storage.
- moveFolderWithinStorage() : array<non-empty-string, non-empty-string>
- Folder equivalent to moveFileWithinStorage().
- processConfiguration() : void
- Processes the configuration for this driver.
- renameFile() : non-empty-string
- Renames a file in this storage.
- renameFolder() : array<string, string>
- Renames a folder in this storage.
- replaceFile() : bool
- Replaces a file with file in local file system.
- sanitizeFileName() : non-empty-string
- Cleans a fileName from not allowed characters
- setFileContents() : int<0, max>
- Sets the contents of a file to the specified value.
- setStorageUid() : void
- Sets the storage uid the driver belongs to
Methods
addFile()
Adds a file from the local server hard disk to a given path in TYPO3s virtual file system. This assumes that the local file exists, so no further check is done here! After a successful operation the original file must not exist anymore.
public
addFile(non-empty-string $localFilePath, non-empty-string $targetFolderIdentifier[, string $newFileName = '' ][, bool $removeOriginal = true ]) : non-empty-string
Parameters
- $localFilePath : non-empty-string
-
within public web path
- $targetFolderIdentifier : non-empty-string
- $newFileName : string = ''
-
optional, if not given original name is used
- $removeOriginal : bool = true
-
if set the original file will be removed after successful operation
Return values
non-empty-string —the identifier of the new file
copyFileWithinStorage()
Copies a file *within* the current storage.
public
copyFileWithinStorage(non-empty-string $fileIdentifier, non-empty-string $targetFolderIdentifier, non-empty-string $fileName) : non-empty-string
Note that this is only about an inner storage copy action, where a file is just copied to another folder in the same storage.
Parameters
- $fileIdentifier : non-empty-string
- $targetFolderIdentifier : non-empty-string
- $fileName : non-empty-string
Return values
non-empty-string —the Identifier of the new file
copyFolderWithinStorage()
Folder equivalent to copyFileWithinStorage().
public
copyFolderWithinStorage(non-empty-string $sourceFolderIdentifier, non-empty-string $targetFolderIdentifier, non-empty-string $newFolderName) : bool
Parameters
- $sourceFolderIdentifier : non-empty-string
- $targetFolderIdentifier : non-empty-string
- $newFolderName : non-empty-string
Return values
boolcountFilesInFolder()
Returns the number of files inside the specified path
public
countFilesInFolder(non-empty-string $folderIdentifier[, bool $recursive = false ][, array<int, callable> $filenameFilterCallbacks = [] ]) : int<0, max>
Parameters
- $folderIdentifier : non-empty-string
- $recursive : bool = false
- $filenameFilterCallbacks : array<int, callable> = []
-
callbacks for filtering the items
Return values
int<0, max> —Number of files in folder
countFoldersInFolder()
Returns the number of folders inside the specified path
public
countFoldersInFolder(non-empty-string $folderIdentifier[, bool $recursive = false ][, array<int, callable> $folderNameFilterCallbacks = [] ]) : int<0, max>
Parameters
- $folderIdentifier : non-empty-string
- $recursive : bool = false
- $folderNameFilterCallbacks : array<int, callable> = []
-
callbacks for filtering the items
Return values
int<0, max> —Number of folders in folder
createFile()
Creates a new (empty) file and returns the identifier.
public
createFile(non-empty-string $fileName, non-empty-string $parentFolderIdentifier) : non-empty-string
Parameters
- $fileName : non-empty-string
- $parentFolderIdentifier : non-empty-string
Return values
non-empty-stringcreateFolder()
Creates a folder, within a parent folder.
public
createFolder(non-empty-string $newFolderName[, string $parentFolderIdentifier = '' ][, bool $recursive = false ]) : non-empty-string
If no parent folder is given, a root level folder will be created
Parameters
- $newFolderName : non-empty-string
- $parentFolderIdentifier : string = ''
- $recursive : bool = false
Return values
non-empty-string —the Identifier of the new folder
deleteFile()
Removes a file from the filesystem. This does not check if the file is still used or if it is a bad idea to delete it for some other reason this has to be taken care of in the upper layers (e.g. the Storage)!
public
deleteFile(non-empty-string $fileIdentifier) : bool
Parameters
- $fileIdentifier : non-empty-string
Return values
booldeleteFolder()
Removes a folder in filesystem.
public
deleteFolder(non-empty-string $folderIdentifier[, bool $deleteRecursively = false ]) : bool
Parameters
- $folderIdentifier : non-empty-string
- $deleteRecursively : bool = false
Return values
booldumpFileContents()
Directly output the contents of the file to the output buffer. Should not take care of header files or flushing buffer before. Will be taken care of by the Storage.
public
dumpFileContents(non-empty-string $identifier) : void
Parameters
- $identifier : non-empty-string
fileExists()
Checks if a file exists.
public
fileExists(non-empty-string $fileIdentifier) : bool
Parameters
- $fileIdentifier : non-empty-string
Return values
boolfileExistsInFolder()
Checks if a file inside a folder exists
public
fileExistsInFolder(non-empty-string $fileName, non-empty-string $folderIdentifier) : bool
Parameters
- $fileName : non-empty-string
- $folderIdentifier : non-empty-string
Return values
boolfolderExists()
Checks if a folder exists.
public
folderExists(non-empty-string $folderIdentifier) : bool
Parameters
- $folderIdentifier : non-empty-string
Return values
boolfolderExistsInFolder()
Checks if a folder inside a folder exists.
public
folderExistsInFolder(non-empty-string $folderName, non-empty-string $folderIdentifier) : bool
Parameters
- $folderName : non-empty-string
- $folderIdentifier : non-empty-string
Return values
boolgetCapabilities()
Returns the capabilities of this driver.
public
getCapabilities() : Capabilities
Return values
CapabilitiesgetDefaultFolder()
Returns the identifier of the default folder new files should be put into.
public
getDefaultFolder() : non-empty-string
Return values
non-empty-stringgetFileContents()
Returns the contents of a file. Beware that this requires to load the complete file into memory and also may require fetching the file from an external location. So this might be an expensive operation (both in terms of processing resources and money) for large files.
public
getFileContents(non-empty-string $fileIdentifier) : string
Parameters
- $fileIdentifier : non-empty-string
Return values
stringgetFileForLocalProcessing()
Returns a path to a local copy of a file for processing it. When changing the file, you have to take care of replacing the current version yourself!
public
getFileForLocalProcessing(non-empty-string $fileIdentifier[, bool $writable = true ]) : non-empty-string
Parameters
- $fileIdentifier : non-empty-string
- $writable : bool = true
-
Set this to FALSE if you only need the file for read operations. This might speed up things, e.g. by using a cached local version. Never modify the file if you have set this flag!
Return values
non-empty-string —The path to the file on the local disk
getFileInfoByIdentifier()
Returns information about a file.
public
getFileInfoByIdentifier(non-empty-string $fileIdentifier[, array<int, string> $propertiesToExtract = [] ]) : array<string, mixed>
Parameters
- $fileIdentifier : non-empty-string
- $propertiesToExtract : array<int, string> = []
-
Array of properties which are be extracted If empty all will be extracted
Return values
array<string, mixed>getFileInFolder()
Returns the identifier of a file inside the folder
public
getFileInFolder(non-empty-string $fileName, non-empty-string $folderIdentifier) : non-empty-string
Parameters
- $fileName : non-empty-string
- $folderIdentifier : non-empty-string
Return values
non-empty-string —file identifier
getFilesInFolder()
Returns a list of files inside the specified path
public
getFilesInFolder(non-empty-string $folderIdentifier[, int<0, max> $start = 0 ][, int<0, max> $numberOfItems = 0 ][, bool $recursive = false ][, array<int, callable> $filenameFilterCallbacks = [] ][, string $sort = '' ][, bool $sortRev = false ]) : array<int, string>
Parameters
- $folderIdentifier : non-empty-string
- $start : int<0, max> = 0
- $numberOfItems : int<0, max> = 0
- $recursive : bool = false
- $filenameFilterCallbacks : array<int, callable> = []
-
callbacks for filtering the items
- $sort : string = ''
-
Property name used to sort the items. Among them may be: '' (empty, no sorting), name, fileext, size, tstamp and rw. If a driver does not support the given property, it should fall back to "name".
- $sortRev : bool = false
-
TRUE to indicate reverse sorting (last to first)
Return values
array<int, string> —of FileIdentifiers
getFolderInfoByIdentifier()
Returns information about a folder.
public
getFolderInfoByIdentifier(non-empty-string $folderIdentifier) : array{identifier: non-empty-string, name: string, mtime: int, ctime: int, storage: int}
Parameters
- $folderIdentifier : non-empty-string
Return values
array{identifier: non-empty-string, name: string, mtime: int, ctime: int, storage: int}getFolderInFolder()
Returns the identifier of a folder inside the folder
public
getFolderInFolder(non-empty-string $folderName, non-empty-string $folderIdentifier) : non-empty-string
Parameters
- $folderName : non-empty-string
-
The name of the target folder
- $folderIdentifier : non-empty-string
Return values
non-empty-string —folder identifier
getFoldersInFolder()
Returns a list of folders inside the specified path
public
getFoldersInFolder(non-empty-string $folderIdentifier[, int<0, max> $start = 0 ][, int<0, max> $numberOfItems = 0 ][, bool $recursive = false ][, array<int, callable> $folderNameFilterCallbacks = [] ][, string $sort = '' ][, bool $sortRev = false ]) : array<string|int, string>
Parameters
- $folderIdentifier : non-empty-string
- $start : int<0, max> = 0
- $numberOfItems : int<0, max> = 0
- $recursive : bool = false
- $folderNameFilterCallbacks : array<int, callable> = []
-
callbacks for filtering the items
- $sort : string = ''
-
Property name used to sort the items. Among them may be: '' (empty, no sorting), name, fileext, size, tstamp and rw. If a driver does not support the given property, it should fall back to "name".
- $sortRev : bool = false
-
TRUE to indicate reverse sorting (last to first)
Return values
array<string|int, string> —folder identifiers (where key and value are identical, but int-like identifiers will get converted to int array keys)
getParentFolderIdentifierOfIdentifier()
Returns the identifier of the folder the file resides in
public
getParentFolderIdentifierOfIdentifier(non-empty-string $fileIdentifier) : non-empty-string
Parameters
- $fileIdentifier : non-empty-string
Return values
non-empty-stringgetPermissions()
Returns the permissions of a file/folder as an array (keys r, w) of boolean flags
public
getPermissions(non-empty-string $identifier) : array{r: bool, w: bool}
Parameters
- $identifier : non-empty-string
Return values
array{r: bool, w: bool}getPublicUrl()
Returns the public URL to a file.
public
getPublicUrl(non-empty-string $identifier) : non-empty-string|null
Either fully qualified URL or relative to public web path (rawurlencoded).
Parameters
- $identifier : non-empty-string
Return values
non-empty-string|null —NULL if file is missing or deleted, the generated url otherwise
getRootLevelFolder()
Returns the identifier of the root level folder of the storage.
public
getRootLevelFolder() : non-empty-string
Return values
non-empty-stringhasCapability()
Returns TRUE if this driver has the given capability.
public
hasCapability(Capabilities::CAPABILITY_* $capability) : bool
Parameters
- $capability : Capabilities::CAPABILITY_*
Return values
boolhash()
Creates a hash for a file.
public
hash(non-empty-string $fileIdentifier, non-empty-string $hashAlgorithm) : string
Parameters
- $fileIdentifier : non-empty-string
- $hashAlgorithm : non-empty-string
-
The hash algorithm to use
Return values
stringhashIdentifier()
Hashes a file identifier, taking the case sensitivity of the file system into account. This helps mitigating problems with case-insensitive databases.
public
hashIdentifier(non-empty-string $identifier) : non-empty-string
Parameters
- $identifier : non-empty-string
Return values
non-empty-stringinitialize()
Initializes this object. This is called by the storage after the driver has been attached.
public
initialize() : void
isCaseSensitiveFileSystem()
Returns TRUE if this driver uses case-sensitive identifiers. NOTE: This is a configurable setting, but the setting does not change the way the underlying file system treats the identifiers; the setting should therefore always reflect the file system and not try to change its behaviour
public
isCaseSensitiveFileSystem() : bool
Return values
boolisFolderEmpty()
Checks if a folder contains files and (if supported) other folders.
public
isFolderEmpty(non-empty-string $folderIdentifier) : bool
Parameters
- $folderIdentifier : non-empty-string
Return values
bool —TRUE if there are no files and folders within $folder
isWithin()
Checks if a given identifier is within a container, e.g. if a file or folder is within another folder.
public
isWithin(non-empty-string $folderIdentifier, non-empty-string $identifier) : bool
This can e.g. be used to check for web-mounts.
Hint: this also needs to return TRUE if the given identifier matches the container identifier to allow access to the root folder of a filemount.
Parameters
- $folderIdentifier : non-empty-string
- $identifier : non-empty-string
-
identifier to be checked against $folderIdentifier
Return values
bool —TRUE if $content is within or matches $folderIdentifier
mergeConfigurationCapabilities()
Merges the capabilities merged by the user at the storage configuration into the actual capabilities of the driver and returns the result.
public
mergeConfigurationCapabilities(Capabilities $capabilities) : Capabilities
Parameters
- $capabilities : Capabilities
Return values
CapabilitiesmoveFileWithinStorage()
Moves a file *within* the current storage.
public
moveFileWithinStorage(non-empty-string $fileIdentifier, non-empty-string $targetFolderIdentifier, non-empty-string $newFileName) : non-empty-string
Note that this is only about an inner-storage move action, where a file is just moved to another folder in the same storage.
Parameters
- $fileIdentifier : non-empty-string
- $targetFolderIdentifier : non-empty-string
- $newFileName : non-empty-string
Return values
non-empty-stringmoveFolderWithinStorage()
Folder equivalent to moveFileWithinStorage().
public
moveFolderWithinStorage(non-empty-string $sourceFolderIdentifier, non-empty-string $targetFolderIdentifier, non-empty-string $newFolderName) : array<non-empty-string, non-empty-string>
Parameters
- $sourceFolderIdentifier : non-empty-string
- $targetFolderIdentifier : non-empty-string
- $newFolderName : non-empty-string
Return values
array<non-empty-string, non-empty-string> —All files which are affected, map of old => new file identifiers
processConfiguration()
Processes the configuration for this driver.
public
processConfiguration() : void
renameFile()
Renames a file in this storage.
public
renameFile(non-empty-string $fileIdentifier, non-empty-string $newName) : non-empty-string
Parameters
- $fileIdentifier : non-empty-string
- $newName : non-empty-string
-
The target path (including the file name!)
Return values
non-empty-string —The identifier of the file after renaming
renameFolder()
Renames a folder in this storage.
public
renameFolder(non-empty-string $folderIdentifier, non-empty-string $newName) : array<string, string>
Parameters
- $folderIdentifier : non-empty-string
- $newName : non-empty-string
Return values
array<string, string> —A map of old to new file identifiers of all affected resources
replaceFile()
Replaces a file with file in local file system.
public
replaceFile(non-empty-string $fileIdentifier, non-empty-string $localFilePath) : bool
Parameters
- $fileIdentifier : non-empty-string
- $localFilePath : non-empty-string
Return values
boolsanitizeFileName()
Cleans a fileName from not allowed characters
public
sanitizeFileName(non-empty-string $fileName) : non-empty-string
Parameters
- $fileName : non-empty-string
Return values
non-empty-string —the sanitized filename
setFileContents()
Sets the contents of a file to the specified value.
public
setFileContents(non-empty-string $fileIdentifier, string $contents) : int<0, max>
Parameters
- $fileIdentifier : non-empty-string
- $contents : string
Return values
int<0, max> —The number of bytes written to the file
setStorageUid()
Sets the storage uid the driver belongs to
public
setStorageUid(int $storageUid) : void
Parameters
- $storageUid : int