Skip to content
This repository was archived by the owner on Jan 9, 2022. It is now read-only.

Commit 95a2b01

Browse files
committed
- Easy one line uploads: t3h::Filesystem()->uploadFileAndGetFileReference($table,$tmp_name,$targetFolder,$target_filename)
- Use the new class SaschaEnde\T3helpers\Helpers\FileReference
1 parent 6f54e36 commit 95a2b01

File tree

4 files changed

+109
-1
lines changed

4 files changed

+109
-1
lines changed

Classes/Helpers/FileReference.php

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?php
2+
3+
namespace SaschaEnde\T3helpers\Helpers;
4+
5+
class FileReference extends \TYPO3\CMS\Extbase\Domain\Model\AbstractFileFolder {
6+
7+
/**
8+
* Uid of the referenced sys_file. Needed for extbase to serialize the
9+
* reference correctly.
10+
*
11+
* @var int
12+
*/
13+
protected $uidLocal;
14+
15+
/**
16+
* @var string
17+
*/
18+
protected $tablenames = 'tx_extension_domain_model_table';
19+
20+
/**
21+
* @var string
22+
*/
23+
protected $tableLocal = 'sys_file';
24+
25+
/**
26+
* @param \TYPO3\CMS\Core\Resource\ResourceInterface $originalResource
27+
*/
28+
public function setOriginalResource(\TYPO3\CMS\Core\Resource\ResourceInterface $originalResource) {
29+
$this->originalResource = $originalResource;
30+
$this->uidLocal = (int)$originalResource->getUid();
31+
}
32+
33+
/**
34+
* @return \TYPO3\CMS\Core\Resource\FileReference
35+
*/
36+
public function getOriginalResource() {
37+
if($this->originalResource === NULL) {
38+
$this->originalResource = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->getFileReferenceObject(
39+
$this->getUid()
40+
);
41+
}
42+
43+
return $this->originalResource;
44+
}
45+
46+
/**
47+
* @return string
48+
*/
49+
public function getTablenames() {
50+
return $this->tablenames;
51+
}
52+
53+
/**
54+
* @param string $tablenames
55+
*/
56+
public function setTablenames($tablenames) {
57+
$this->tablenames = $tablenames;
58+
}
59+
60+
/**
61+
* setFile
62+
*
63+
* @param \TYPO3\CMS\Core\Resource\File $falFile
64+
* @return void
65+
*/
66+
public function setFile(\TYPO3\CMS\Core\Resource\File $falFile) {
67+
$this->originalFileIdentifier = (int)$falFile->getUid();
68+
}
69+
}

Classes/Utilities/Filesystem.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
namespace SaschaEnde\T3helpers\Utilities;
44

5+
use SaschaEnde\T3helpers\Helpers\FileReference;
56
use t3h\t3h;
67
use TYPO3\CMS\Core\Database\ConnectionPool;
78
use TYPO3\CMS\Core\Exception;
9+
use TYPO3\CMS\Core\Resource\DuplicationBehavior;
810
use TYPO3\CMS\Core\Resource\File;
911
use TYPO3\CMS\Core\Resource\ResourceFactory;
1012
use TYPO3\CMS\Core\SingletonInterface;
@@ -195,6 +197,35 @@ public function setFileReference(File $file, $uid_foreign, $pid, $table, $fieldn
195197
}
196198
}
197199

200+
/**
201+
* Upload and move a file to a directory and get a file reference
202+
* @param $table The target table
203+
* @param $tmp_name From $_FILES['tmp_name']
204+
* @param $targetFolder 1:/my_upload_folder/
205+
* @param $target_filename upload.jpg
206+
* @return FileReference
207+
*/
208+
public function uploadFileAndGetFileReference($table,$tmp_name,$targetFolder,$target_filename)
209+
{
210+
// Erhalte Objekt mit Ziel Ordner
211+
$resourceFactory = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance();
212+
$targetFolder = $resourceFactory->getFolderObjectFromCombinedIdentifier($targetFolder);
213+
214+
# add uploaded file
215+
$file = $targetFolder->addFile(
216+
$tmp_name,
217+
$target_filename,
218+
DuplicationBehavior::RENAME
219+
);
220+
221+
/** @var FileReference $newFileReference */
222+
$newFileReference = t3h::injectClass(FileReference::class);
223+
$newFileReference->setTablenames($table);
224+
$newFileReference->setFile($file);
225+
226+
return $newFileReference;
227+
}
228+
198229
/**
199230
* Get the file extension (f.e. mp3, doc, zip...)
200231
* @param $filename

ext_emconf.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
'uploadfolder' => '0',
1111
'createDirs' => '',
1212
'clearCacheOnLoad' => 0,
13-
'version' => '0.9.35',
13+
'version' => '0.9.36',
1414
'constraints' => [
1515
'depends' => [
1616
'typo3' => '8.6.0-9.5.99',

ext_typoscript_setup.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
config.tx_extbase {
22
persistence {
33
classes {
4+
SaschaEnde\T3helpers\Helpers\FileReference {
5+
mapping {
6+
tableName = sys_file_reference
7+
columns {
8+
uid_local.mapOnProperty = originalFileIdentifier
9+
}
10+
}
11+
}
412
SaschaEnde\T3helpers\Domain\Model\Pages {
513
mapping {
614
tableName = pages

0 commit comments

Comments
 (0)