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

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...'] );
@return \TYPO3\CMS\Extbase\Domain\Model\FileReference

\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 );
@param $filenameOrSysFile FAL oder Pfad (String) zu der Datei
@return void

\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

\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...'] );
@return \TYPO3\CMS\Extbase\Domain\Model\FileReference

\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' );
@return false|\TYPO3\CMS\Core\Resource\File

\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 );
@return mixed

\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 );
@param $uidOrObject
@return integer

\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 );
@param $uidOrFileReference
@return mixed

\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 );
@return void

\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'] );
@param $sysFile
@param array $params => uid_foreign, tablenames, fieldname
@return FileReference|false

\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'
]);
@return \TYPO3\CMS\Extbase\Domain\Model\FileReference

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

Holt ein File (FAL) Object (sys_file)

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

\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' );
@param string $file Combined Identifier (‘1:/uploads/beispiel.txt’)
@return File|boolean

\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'
@param \TYPO3\CMS\Extbase\Domain\Model\FileReference|\TYPO3\CMS\Core\Resource\FileReference $falReference
@return string

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

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

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

\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 );
@param string|\TYPO3\CMS\Extbase\Domain\Model\FileReference $src
@return \TYPO3\CMS\Core\Resource\FileReference|boolean

\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'] );
@return string

\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!

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'=>'...'] );

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'], ...] );

Beispiel mit Videos:

$videosToSet = ['https://www.youtube.com/watch?v=GwlU_wsT20Q', ...];
\nn\t3::Fal()->setInModel( $member, 'videos', $videosToSet );
@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

\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'=>'...']
@param \TYPO3\CMS\Extbase\Domain\Model\FileReference $falReference
@return array

\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 );
@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