Fal::createFalFile() 

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

Creates a File (FAL) object (sys_file)

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

@param string $storageConfig Path/folder in which the FAL file is to be saved (e.g. 'fileadmin/projectdata/')
@param string $srcFile Source file to be converted to FAL (e.g. 'uploads/tx_nnfesubmit/example.jpg') Can also be URL to YouTube/Vimeo video (e.g. https://www. youtube.com/watch?v=7Bb5jXhwnRY)
@param boolean $keepSrcFile Copy source file only, do not move?
@param boolean $forceCreateNew Should a new file always be created? If not, it may return an existing file object

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

Source Code 

public function createFalFile ( $storageConfig, $srcFile, $keepSrcFile = false, $forceCreateNew = false )
{
	$fileHelper = \nn\t3::File();
	$fileRepository = \nn\t3::injectClass( FileRepository::class );
	$srcFile = $fileHelper->stripBaseUrl( $srcFile );
	$isExternalMedia = strpos( $srcFile, 'http://') !== false || strpos( $srcFile, 'https://') !== false;
	if (!$storageConfig) {
		$storageConfig = $isExternalMedia ? 'fileadmin/videos/' : $srcFile;
	}
	// Absoluter Pfad zur Quell-Datei ('/var/www/website/uploads/bild.jpg')
	$absSrcFile = $fileHelper->absPath( $srcFile );
	// Keine externe URL (YouTube...) und Datei existiert nicht? Dann abbrechen!
	if (!$isExternalMedia && !$fileHelper->exists($srcFile)) {
		return false;
	}
	// Object, Storage-Model für Zielverzeichnis (z.B. Object für 'fileadmin/' wenn $storageConfig = 'fileadmin/test/was/')
	$storage = $fileHelper->getStorage($storageConfig, true);
	// Object, relativer Unterordner innerhalb der Storage, (z.B. Object für 'test/was/' wenn $storageConfig = 'fileadmin/test/was/')
	$subfolderInStorage = \nn\t3::Storage()->getFolder($storageConfig, $storage);
	// String, absoluter Pfad zum Zielverzeichnis
	$absDestFolderPath = $fileHelper->absPath( $subfolderInStorage );
	// Dateiname, ohne Pfad ('fileadmin/test/bild.jpg' => 'bild.jpg')
	$srcFileBaseName = basename($srcFile);
	if (!$forceCreateNew && $storage->hasFileInFolder( $srcFileBaseName, $subfolderInStorage )) {
		$existingFile = $storage->getFileInFolder( $srcFileBaseName, $subfolderInStorage );
		// @returns \TYPO3\CMS\Core\Resource\File
		return $existingFile;
	}
	if ($isExternalMedia) {
		// YouTube und Vimeo-Videos: Physische lokale .youtube/.vimeo-Datei anlegen
		$helper = \nn\t3::injectClass( OnlineMediaHelperRegistry::class );
		// \TYPO3\CMS\Core\Resource\File
		$newFileObject = $helper->transformUrlToFile( $srcFile, $subfolderInStorage );
	} else {
		// "Normale" Datei: Datei in Ordner kopieren und FAL erstellen
		// Name der Datei im Zielverzeichnis
		$absTmpName = $absDestFolderPath . $srcFileBaseName;
		// Kopieren
		if ($forceCreateNew) {
			$success = $fileHelper->copy( $absSrcFile, $absTmpName, $forceCreateNew );
			$absTmpName = $success;
		} else {
			if ($keepSrcFile) {
				$success = $fileHelper->copy( $absSrcFile, $absTmpName );
				$absTmpName = $success;
			} else {
				$success = $fileHelper->move( $absSrcFile, $absTmpName );
			}
		}
		if (!$success) return false;
		// Nutze die File-Indexer-Funktion, um die temporäre Datei in der Tabelle sys_file einzufügen
		$this->clearCache($absTmpName);
		// String, relativer Pfad der Datei innerhalb der Storage. Ermittelt selbstständig die passende Storage ()
		$relPathInStorage = $fileHelper->getRelativePathInStorage( $absTmpName );
		// File-Object für tmp-Datei holen
		$tmpFileObject = $storage->getFile($relPathInStorage);
		if (!$tmpFileObject) return false;
		// $newFileObject = $tmpFileObject->moveTo($subfolderInStorage, $srcFileBaseName, DuplicationBehavior::RENAME);
		$newFileObject = $tmpFileObject;
	}
	if (!$newFileObject) return false;
	// Exif-Daten für Datei ermitteln
	if ($exif = $fileHelper->getExifData( $srcFile )) {
		\nn\t3::Db()->update('sys_file', ['exif'=>json_encode($exif)], $newFileObject->getUid());
	}
	// @returns \TYPO3\CMS\Core\Resource\File
	return $newFileObject;
}
Copied!