Hallo zusammen
Wir arbeiten an einer Extension mit Extbase. Da Extbase noch kein File-Handling besitzt, müssen wir dies manuel machen.
Der angemeldete User kann Bilder hochladen. Diese werden im Ordner uploads/myExt/userImage/ abgelegt. Dies funktioniert bereits so, wie es soll.
Der Benutzer kann die Bilder natürlich wieder löschen. Während der Datensatz dabei, wie bei Typo3 üblich, bestehen bleibt und deleted=1 erhält, soll das Bild auch tatsächlich vom Server gelöscht werden, da hier der Speicherplatzverbrauch ab einer gewissen Usermenge ins Gewicht fallen wird.
Die Klasse "t3lib_extFileFunctions" bringt die Funktion "func_delete" mit. Sie erwartet einen Parameter, nämlich ein Array mit dem Pfad zur löschenden Datei.
Auszug aus t3lib_extFileFunctions http://doxygen.frozenkiwi.com/typo3/html/d2/d3f/class_8t3lib__extfilefunc_8php_source.html#l00384:
00378 /**
00379 * Deleting files and folders (action=4)
00380 *
00381 * @param array $cmds['data'] is the file/folder to delete
00382 * @return boolean Returns true upon success
00383 */
00384 function func_delete($cmds) {
Führe ich die Funktion aus, wirft Typo3 eine Exception:
Core: Error handler (FE): PHP Warning: Missing argument 2 for ux_t3lib_extFileFunctions::func_delete(), called in myServer/public_html/typo3conf/ext/myExt/Classes/Domain/Model/File.php on line 176 and defined in myServer/public_html/typo3conf/ext/dam/binding/tce/class.tx_dam_tce_extfilefunc.php line 201
Weiss jemand von euch, warum Typo3 hier nach einem zweiten Parameter schreit, den es gemäss Klasse nicht gibt?
Aufgerufen habe ich die Funktion mit der von mir definierten Funktion deleteFileFromFilesystem():
public function deleteFileFromFilesystem() {
$extFileFunctions = t3lib_div::makeInstance('t3lib_extFileFunctions');
$path = t3lib_div::getFileAbsFileName($this->getPath());
$state = $extFileFunctions->func_delete(Array('data'=>$path));
return $state;
}
$path gibt übrigens etwas vernünftiges zurück, an einem fehlerhaften Pfad wird es also eher nicht liegen.