Fal::fromFile() 

\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

Source Code 

public function fromFile ( $params = [] )
{
	$params = \nn\t3::Arrays([
		'dest'		=> '',
		'forceNew'	=> false,
		'copy'		=> true,
		'single'	=> true,
	])->merge( $params );
	$fileReferenceRepository = \nn\t3::injectClass( FileReferenceRepository::class );
	$newFile = $this->createFalFile( $params['dest'], $params['src'], $params['copy'], $params['forceNew'] );
	if (!$newFile) return false;
	if ($params['single']) {
		if ($fileReferenceExists = $this->fileReferenceExists( $newFile, $params )) {
			return $fileReferenceExists;
		}
	}
	$fieldname = GeneralUtility::camelCaseToLowerCaseUnderscored($params['field']);
	$entry = [
		'fieldname' 		=> $fieldname,
		'tablenames' 		=> $params['table'],
		'table_local' 		=> 'sys_file',
		'uid_local' 		=> $newFile->getUid(),
		'uid_foreign' 		=> 0,
		'sorting_foreign' 	=> $params['sorting_foreign'] ?? $params['sorting'] ?? time(),
		'pid' 				=> $params['pid'] ?? 0,
		'description' 		=> $params['description'] ?? null,
		'title' 			=> $params['title'] ?? null,
		'link' 				=> $params['link'] ?? '',
		'crop' 				=> $params['crop'] ?? '',
		'tstamp'			=> time(),
		'crdate'			=> time(),
	];
	if ($uid = $params['uid'] ?? null) {
		$entry['uid_foreign'] = $uid;
	}
	$entry = \nn\t3::Db()->insert('sys_file_reference', $entry);
	// @returns \TYPO3\CMS\Extbase\Domain\Model\FileReference
	$persistenceManager = \nn\t3::injectClass(\TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager::class);
	return $persistenceManager->getObjectByIdentifier($entry['uid'], \TYPO3\CMS\Extbase\Domain\Model\FileReference::class, false);
}
Copied!