Fal 

\nn\t3::Fal() 

Methoden zum Erzeugen von sysFile und sysFileReference-Einträgen.

Spickzettel:

\TYPO3\CMS\Extbase\Persistence\Generic\ObjectStorage
 |
 └─ \TYPO3\CMS\Extbase\Domain\Model\FileReference
        ... getOriginalResource()
                |
                └─ \TYPO3\CMS\Core\Resource\FileReference
                    ... getOriginalFile()
                            |
                            └─ \TYPO3\CMS\Core\Resource\File
Copied!

Overview of Methods 

\nn\t3::Fal()->attach($model, $field, $itemData = NULL); 

Eine Datei zu einem FileReference-Object konvertieren und an die Property oder ObjectStorage eines Models hängen. Siehe auch: \nn\t3::Fal()->setInModel( $member, 'falslideshow', $imagesToSet ); mit dem Array von mehreren Bildern an eine ObjectStorage gehängt werden können.

\nn\t3::Fal()->attach( $model, $fieldName, $filePath );
\nn\t3::Fal()->attach( $model, 'image', 'fileadmin/user_uploads/image.jpg' );
\nn\t3::Fal()->attach( $model, 'image', ['publicUrl'=>'fileadmin/user_uploads/image.jpg'] );
\nn\t3::Fal()->attach( $model, 'image', ['publicUrl'=>'fileadmin/user_uploads/image.jpg', 'title'=>'Titel...'] );
Copied!

| @return \TYPO3\CMS\Extbase\Domain\Model\FileReference|array

| ➜ Go to source code of Fal::attach()

\nn\t3::Fal()->clearCache($filenameOrSysFile = ''); 

Löscht den Cache für die Bildgrößen eines FAL inkl. der umgerechneten Bilder Wird z.B. der f:image-ViewHelper verwendet, werden alle berechneten Bildgrößen in der Tabelle sys_file_processedfile gespeichert. Ändert sich das Originalbild, wird evtl. noch auf ein Bild aus dem Cache zugegriffen.

\nn\t3::Fal()->clearCache( 'fileadmin/file.jpg' );
\nn\t3::Fal()->clearCache( $fileReference );
\nn\t3::Fal()->clearCache( $falFile );
Copied!
@param $filenameOrSysFile FAL oder Pfad (String) zu der Datei
@return void

| ➜ Go to source code of Fal::clearCache()

\nn\t3::Fal()->createFalFile($storageConfig, $srcFile, $keepSrcFile = false, $forceCreateNew = false); 

Erzeugt ein File (FAL) Object (sys_file)

nnt3::Fal()->createFalFile( $storageConfig, $srcFile, $keepSrcFile, $forceCreateNew );

@param string $storageConfig Pfad/Ordner, in die FAL-Datei gespeichert werden soll (z.B. 'fileadmin/projektdaten/')
@param string $srcFile Quelldatei, die in FAL umgewandelt werden soll (z.B. 'uploads/tx_nnfesubmit/beispiel.jpg') Kann auch URL zu YouTube/Vimeo-Video sein (z.B. https://www.youtube.com/watch?v=7Bb5jXhwnRY)
@param boolean $keepSrcFile Quelldatei nur kopieren, nicht verschieben?
@param boolean $forceCreateNew Soll immer neue Datei erzeugt werden? Falls nicht, gibt er ggf. bereits existierendes File-Object zurück

| @return \Nng\Nnhelpers\Domain\Model\File|\TYPO3\CMS\Core\Resource\File|boolean

| ➜ Go to source code of Fal::createFalFile()

\nn\t3::Fal()->createForModel($model, $field, $itemData = NULL); 

Eine Datei zu einem FileReference-Object konvertieren und für attach() an ein vorhandenes Model und Feld / Property vorbereiten. Die FileReference wird dabei nicht automatisch an das Model gehängt. Um das FAL direkt in dem Model zu setzen, kann der Helper | \nn\t3::Fal()->attach( $model, $field, $itemData ) verwendet werden.

\nn\t3::Fal()->createForModel( $model, $fieldName, $filePath );
\nn\t3::Fal()->createForModel( $model, 'image', 'fileadmin/user_uploads/image.jpg' );
\nn\t3::Fal()->createForModel( $model, 'image', ['publicUrl'=>'fileadmin/user_uploads/image.jpg'] );
\nn\t3::Fal()->createForModel( $model, 'image', ['publicUrl'=>'fileadmin/user_uploads/image.jpg', 'title'=>'Titel...'] );
Copied!

| @return \TYPO3\CMS\Extbase\Domain\Model\FileReference

| ➜ Go to source code of Fal::createForModel()

\nn\t3::Fal()->createSysFile($file, $autoCreateStorage = true); 

Erstellt neuen Eintrag in sys_file Sucht in allen sys_file_storage-Einträgen, ob der Pfad zum $file bereits als Storage existiert. Falls nicht, wird ein neuer Storage angelegt.

\nn\t3::Fal()->createSysFile( 'fileadmin/bild.jpg' );
\nn\t3::Fal()->createSysFile( '/var/www/mysite/fileadmin/bild.jpg' );
Copied!

| @return false|\TYPO3\CMS\Core\Resource\File

| ➜ Go to source code of Fal::createSysFile()

\nn\t3::Fal()->deleteForModel($model, $field = NULL); 

Löscht die physischen Dateien für ein Model (oder ein einzelnes Feld des Models) vom Server.

// ALLE Dateien des gesamten Models löschen
\nn\t3::Fal()->deleteForModel( $model );

// ALLE Dateien aus dem Feld "images" löschen
\nn\t3::Fal()->deleteForModel( $model, 'images' );
Copied!
@param \TYPO3\CMS\Extbase\DomainObject\AbstractEntity $model
@param string $field
@return void

| ➜ Go to source code of Fal::deleteForModel()

\nn\t3::Fal()->deleteProcessedImages($sysFile = ''); 

Löscht alle physischen Thumbnail-Dateien, die für ein Bild generiert wurden inkl. der Datensätze in der Tabelle sys_file_processedfile.

Das Ursprungsbild, das als Argument $path übergeben wurde, wird dabei nicht gelöscht. Das Ganze erzwingt das Neugenerieren der Thumbnails für ein Bild, falls sich z.B. das Quellbild geändert hat aber der Dateiname gleich geblieben ist.

Weiterer Anwendungsfall: Dateien auf dem Server bereinigen, weil z.B. sensible, personenbezogene Daten gelöscht werden sollen inkl. aller generierten Thumbnails.

\nn\t3::Fal()->deleteProcessedImages( 'fileadmin/pfad/beispiel.jpg' );
\nn\t3::Fal()->deleteProcessedImages( $sysFileReference );
\nn\t3::Fal()->deleteProcessedImages( $sysFile );
Copied!

| @return mixed

| ➜ Go to source code of Fal::deleteProcessedImages()

\nn\t3::Fal()->deleteSysFile($uidOrObject = NULL); 

Löscht ein SysFile (Datensatz aus Tabelle sys_file) und alle dazugehörigen SysFileReferences. Eine radikale Art, um ein Bild komplett aus der Indizierung von Typo3 zu nehmen.

Die physische Datei wird nicht vom Server gelöscht! Siehe \nn\t3::File()->unlink() zum Löschen der physischen Datei. Siehe \nn\t3::Fal()->detach( $model, $field ); zum Löschen aus einem Model.

\nn\t3::Fal()->deleteSysFile( 1201 );
\nn\t3::Fal()->deleteSysFile( 'fileadmin/pfad/zum/bild.jpg' );
\nn\t3::Fal()->deleteSysFile( \TYPO3\CMS\Core\Resource\File );
\nn\t3::Fal()->deleteSysFile( \TYPO3\CMS\Core\Resource\FileReference );
Copied!

| @param $uidOrObject

| @return integer

| ➜ Go to source code of Fal::deleteSysFile()

\nn\t3::Fal()->deleteSysFileReference($uidOrFileReference = NULL); 

Löscht eine SysFileReference. Siehe auch \nn\t3::Fal()->detach( $model, $field ); zum Löschen aus einem Model.

\nn\t3::Fal()->deleteSysFileReference( 112 );
\nn\t3::Fal()->deleteSysFileReference( \TYPO3\CMS\Extbase\Domain\Model\FileReference );
Copied!

| @param $uidOrFileReference

| @return mixed

| ➜ Go to source code of Fal::deleteSysFileReference()

\nn\t3::Fal()->detach($model, $field, $obj = NULL); 

Leert eine ObjectStorage in einem Model oder entfernt ein einzelnes Object vom Model oder einer ObjectStorage. Im Beispiel kann image eine ObjectStorage oder eine einzelne FileReference sein:

\nn\t3::Fal()->detach( $model, 'image' );
\nn\t3::Fal()->detach( $model, 'image', $singleObjToRemove );
Copied!

| @return void

| ➜ Go to source code of Fal::detach()

\nn\t3::Fal()->fileReferenceExists($sysFile = NULL, $params = []); 

Prüft, ob für einen Datensatz bereits eine SysFileReference zum gleichen SysFile exisitert

\nn\t3::Fal()->fileReferenceExists( $sysFile, ['uid_foreign'=>123, 'tablenames'=>'tt_content', 'field'=>'media'] );
Copied!
@param $sysFile
@param array $params => uid_foreign, tablenames, fieldname
@return FileReference|false

| ➜ Go to source code of Fal::fileReferenceExists()

\nn\t3::Fal()->fromFalFile($sysFile = NULL); 

Erzeugt eine sys_file_reference aus einem sys_file

$sysFileRef = \nn\t3::Fal()->fromFalFile( $sysFile );
Copied!
@param \TYPO3\CMS\Core\Resource\File $sysFile
@return \TYPO3\CMS\Extbase\Domain\Model\FileReference

| ➜ Go to source code of Fal::fromFalFile()

\nn\t3::Fal()->fromFile($params = []); 

Erzeugt ein FileRefence Objekt (Tabelle: sys_file_reference) und verknüpft es mit einem Datensatz. Beispiel: Hochgeladenes JPG soll als FAL an tt_news-Datensatz angehängt werden

Parameter:

key Beschreibung

| src Pfad zur Quelldatei (kann auch http-Link zu YouTube-Video sein)

| dest Pfad zum Zielordner (optional, falls Datei verschoben/kopiert werden soll)

| table Ziel-Tabelle, dem die FileReference zugeordnet werden soll (z.B. tx_myext_domain_model_entry)

| title Titel

| description Beschreibung

| link Link

| crop Beschnitt

| table Ziel-Tabelle, dem die FileReference zugeordnet werden soll (z.B. tx_myext_domain_model_entry)

| sorting (int) Sortierung

| field Column-Name der Ziel-Tabelle, dem die FileReference zugeordnet werden soll (z.B. image)

| uid (int) uid des Datensatzes in der Zieltabelle (tx_myext_domain_model_entry.uid)

| pid (int) pid des Datensatzes in der Zieltabelle

| cruser_id cruser_id des Datensatzes in der Zieltabelle

| copy src-Datei nicht verschieben sondern kopieren (default: true)

| forceNew Im Zielordner neue Datei erzwingen (sonst wird geprüft, ob bereits Datei existiert) default: false

| single Sicherstellen, dass gleiche FileReferenz nur 1x pro Datensatz verknüpft wird (default: true)

Beispiel:

$fal = \nn\t3::Fal()->fromFile([
    'src'         => 'fileadmin/test/bild.jpg',
    'dest'            => 'fileadmin/test/fal/',
    'pid'         => 132,
    'uid'         => 5052,
    'table'           => 'tx_myext_domain_model_entry',
    'field'           => 'fallistimage'
]);
Copied!

| @return \TYPO3\CMS\Extbase\Domain\Model\FileReference

| ➜ Go to source code of Fal::fromFile()

\nn\t3::Fal()->getFalFile($srcFile); 

Holt ein File (FAL) Object (sys_file)

\nn\t3::Fal()->getFalFile( 'fileadmin/image.jpg' );
Copied!
@param string $srcFile
@return \TYPO3\CMS\Core\Resource\File|boolean

| ➜ Go to source code of Fal::getFalFile()

\nn\t3::Fal()->getFileObjectFromCombinedIdentifier($file = ''); 

Holt ein SysFile aus der CombinedIdentifier-Schreibweise ('1:/uploads/beispiel.txt'). Falls Datei nicht exisitert wird FALSE zurückgegeben.

\nn\t3::Fal()->getFileObjectFromCombinedIdentifier( '1:/uploads/beispiel.txt' );
Copied!
@param string $file Combined Identifier ('1:/uploads/beispiel.txt')
@return File|boolean

| ➜ Go to source code of Fal::getFileObjectFromCombinedIdentifier()

\nn\t3::Fal()->getFilePath($falReference); 

Die URL zu einer FileReference oder einem FalFile holen. Alias zu \nn\t3::File()->getPublicUrl().

\nn\t3::Fal()->getFilePath( $fileReference );    // ergibt z.B. 'fileadmin/bilder/01.jpg'
Copied!
@param \TYPO3\CMS\Extbase\Domain\Model\FileReference|\TYPO3\CMS\Core\Resource\FileReference $falReference
@return string

| ➜ Go to source code of Fal::getFilePath()

\nn\t3::Fal()->getFileReferenceByUid($uid = NULL); 

Holt eine SysFileReference anhand der uid Alias zu \nn\t3::Convert( $uid )->toFileReference();

\nn\t3::Fal()->getFileReferenceByUid( 123 );
Copied!
@param $uid
@return \TYPO3\CMS\Extbase\Domain\Model\FileReference

| ➜ Go to source code of Fal::getFileReferenceByUid()

\nn\t3::Fal()->getImage($src = NULL); 

Holt / konvertiert in ein TYPO3CMSCoreResourceFileReference Object (sys_file_reference) "Smarte" Variante zu \TYPO3\CMS\Extbase\Service\ImageService->getImage()

\nn\t3::Fal()->getImage( 1 );
\nn\t3::Fal()->getImage( 'pfad/zum/bild.jpg' );
\nn\t3::Fal()->getImage( $fileReference );
Copied!
@param string|\TYPO3\CMS\Extbase\Domain\Model\FileReference $src
@return \TYPO3\CMS\Core\Resource\FileReference|boolean

| ➜ Go to source code of Fal::getImage()

\nn\t3::Fal()->process($fileObj = '', $processing = []); 

Berechnet ein Bild über maxWidth, maxHeight, cropVariant etc. Gibt URI zum Bild als String zurück. Hilfreich bei der Berechnung von Thumbnails im Backend. Alias zu \nn\t3::File()->process()

\nn\t3::File()->process( 'fileadmin/bilder/portrait.jpg', ['maxWidth'=>200] );
\nn\t3::File()->process( '1:/bilder/portrait.jpg', ['maxWidth'=>200] );
\nn\t3::File()->process( $sysFile, ['maxWidth'=>200] );
\nn\t3::File()->process( $sysFileReference, ['maxWidth'=>200, 'cropVariant'=>'square'] );
Copied!

| @return string

| ➜ Go to source code of Fal::process()

\nn\t3::Fal()->setInModel($model, $fieldName = '', $imagesToAdd = []); 

Ersetzt eine FileReference oder ObjectStorage in einem Model mit Bildern. Typischer Anwendungsfall: Ein FAL-Bild soll über ein Upload-Formular im Frontend geändert werden können.

Für jedes Bild wird geprüft, ob bereits eine FileReference im Model existiert. Bestehende FileReferences werden nicht überschrieben, sonst würden evtl. Bildunterschriften oder Cropping-Anweisungen verloren gehen!

Achtung! Das Model wird automatisch persistiert!

$newModel = new \My\Extension\Domain\Model\Example();
\nn\t3::Fal()->setInModel( $newModel, 'falslideshow', 'path/to/file.jpg' );
echo $newModel->getUid(); // Model wurde persistiert!
Copied!

Beispiel mit einer einfachen FileReference im Model:

$imageToSet = 'fileadmin/bilder/portrait.jpg';
\nn\t3::Fal()->setInModel( $member, 'falprofileimage', $imageToSet );

\nn\t3::Fal()->setInModel( $member, 'falprofileimage', ['publicUrl'=>'01.jpg', 'title'=>'Titel', 'description'=>'...'] );
Copied!

Beispiel mit einem einzelnen SysFile:

$resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
$file = $resourceFactory->getFileObjectFromCombinedIdentifier('1:/foo.jpg');
\nn\t3::Fal()->setInModel( $member, 'image', $file );
Copied!

Beispiel mit einem einzelnen SysFile, das in eine ObjectStorage soll:

$resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
$file = $resourceFactory->getFileObjectFromCombinedIdentifier('1:/foo.jpg');
\nn\t3::Fal()->setInModel( $member, 'images', [$file] );
Copied!

Beispiel mit einem ObjectStorage im Model:

$imagesToSet = ['fileadmin/bilder/01.jpg', 'fileadmin/bilder/02.jpg', ...];
\nn\t3::Fal()->setInModel( $member, 'falslideshow', $imagesToSet );

\nn\t3::Fal()->setInModel( $member, 'falslideshow', [['publicUrl'=>'01.jpg'], ['publicUrl'=>'02.jpg']] );
\nn\t3::Fal()->setInModel( $member, 'falvideos', [['publicUrl'=>'https://youtube.com/?watch=zagd61231'], ...] );
Copied!

Beispiel mit Videos:

$videosToSet = ['https://www.youtube.com/watch?v=GwlU_wsT20Q', ...];
\nn\t3::Fal()->setInModel( $member, 'videos', $videosToSet );
Copied!
@param mixed $model Das Model, das geändert werden soll
@param string $fieldName Property (Feldname) der ObjectStorage oder FileReference
@param mixed $imagesToAdd String / Array mit Bildern

| @return mixed

| ➜ Go to source code of Fal::setInModel()

\nn\t3::Fal()->toArray($fileReference = NULL); 

Eine FileReference in ein Array konvertieren. Enthält publicUrl, title, alternative, crop etc. der FileReference. Alias zu \nn\t3::Obj()->toArray( $fileReference );

\nn\t3::Fal()->toArray( $fileReference );    // ergibt ['publicUrl'=>'fileadmin/...', 'title'=>'...']
Copied!
@param \TYPO3\CMS\Extbase\Domain\Model\FileReference $falReference
@return array

| ➜ Go to source code of Fal::toArray()

\nn\t3::Fal()->updateMetaData($filenameOrSysFile = '', $data = []); 

Update der Angaben in sys_file_metadata und sys_file

\nn\t3::Fal()->updateMetaData( 'fileadmin/file.jpg' );
\nn\t3::Fal()->updateMetaData( $fileReference );
\nn\t3::Fal()->updateMetaData( $falFile );
Copied!
@param $filenameOrSysFile FAL oder Pfad (String) zu der Datei
@param $data Array mit Daten, die geupdated werden sollen. Falls leer, werden Bilddaten automatisch gelesen
@return void

| ➜ Go to source code of Fal::updateMetaData()

Methods