aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/materialien
diff options
context:
space:
mode:
authorPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
committerPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
commit4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch)
tree5c07151ae61276d334e88f6309c30d439a85c12e /app/controllers/materialien
parentda0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff)
parent97a188592c679890a25c37ab78463add76a52ff7 (diff)
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'app/controllers/materialien')
-rw-r--r--app/controllers/materialien/files.php63
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;