diff options
| author | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
|---|---|---|
| committer | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
| commit | 4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch) | |
| tree | 5c07151ae61276d334e88f6309c30d439a85c12e /app/controllers/materialien/files.php | |
| parent | da0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff) | |
| parent | 97a188592c679890a25c37ab78463add76a52ff7 (diff) | |
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'app/controllers/materialien/files.php')
| -rw-r--r-- | app/controllers/materialien/files.php | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/app/controllers/materialien/files.php b/app/controllers/materialien/files.php index 804668e..429a98c 100644 --- a/app/controllers/materialien/files.php +++ b/app/controllers/materialien/files.php @@ -362,29 +362,37 @@ class Materialien_FilesController extends MVVController public function upload_attachment_action() { - if ($GLOBALS['user']->id === "nobody") { + $user = User::findCurrent(); + if (!$user) { throw new AccessDeniedException(); } - $file = $_FILES['file']; - $output = [ - 'name' => $file['name'], - 'size' => $file['size']]; - $mvvfile_id = Request::option('mvvfile_id'); - $output['mvvfile_id'] = $mvvfile_id; - $range_id = Request::option('range_id', $mvvfile_id); - $output['range_id'] = $range_id; - $file_language = Request::option('file_language'); + $document_id = Request::option('document_id'); - $top_folder = $this->getTopFolder($mvvfile_id); - - $user = User::findCurrent(); - - $file = StandardFile::create($_FILES['file']); - $error = $top_folder->validateUpload($file, $GLOBALS['user']->id); - if ($error != null) { - $file->delete(); + $file = $_FILES['file']; + $output = [ + 'name' => $file['name'], + 'size' => $file['size'], + 'mvvfile_id' => $mvvfile_id, + 'range_id' => Request::option('range_id', $mvvfile_id), + ]; + + $top_folder = $this->getTopFolder($output['mvvfile_id']); + + if ($document_id) { + $file = File::find($document_id); + $file->mime_type = $_FILES['file']['type'] ?? get_mime_type($_FILES['file']['name']); + $file->size = $_FILES['file']['size'] ?? filesize($_FILES['file']['tmp_name']); + $file->connectWithDataFile($_FILES['file']['tmp_name']); + } else { + $file = StandardFile::create($_FILES['file']); + } + $error = $top_folder->validateUpload($file, $user->id); + if ($error !== null) { + if (!$document_id) { + $file->delete(); + } $this->response->set_status(400); $this->render_json(compact('error')); return; @@ -399,18 +407,15 @@ class Materialien_FilesController extends MVVController return; } - $mvv_file_fileref = new MvvFileFileref([$mvvfile_id, $file_language]); - $mvv_file_fileref->fileref_id = $file->getId(); + $mvv_file_fileref = new MvvFileFileref([ + $output['mvvfile_id'], + Request::option('file_language'), + ]); + $mvv_file_fileref->fileref_id = $file->id; $mvv_file_fileref->store(); - $output['document_id'] = $file->getId(); - - $output['icon'] = Icon::create( - FileManager::getIconNameForMimeType( - $file->getMimeType() - ), - 'clickable' - )->asImg(['class' => "text-bottom"]); + $output['document_id'] = $file->id; + $output['icon'] = $file->getIcon(Icon::ROLE_CLICKABLE)->asImg(['class' => 'text-bottom']); $this->render_json($output); } @@ -510,7 +515,7 @@ class Materialien_FilesController extends MVVController $mvv_file = MvvFile::find($mvvfile_id); if (!$mvv_file) { - throw new Trails_Exception(404); + throw new Trails\Exception(404); } $this->doc_year = $mvv_file->year; |
