From 755f601d7b7d40af8c7c205e0c39a8e3b16a0d6b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 14 Dec 2024 19:19:24 +0100 Subject: [PATCH] add attachment from dropfolder dir --- op/op.AddFile.php | 88 ++++++++++++++++++++++++------- views/bootstrap/class.AddFile.php | 33 +++++++++--- 2 files changed, 95 insertions(+), 26 deletions(-) diff --git a/op/op.AddFile.php b/op/op.AddFile.php index 77ba5bc2d..2cbbb5b45 100644 --- a/op/op.AddFile.php +++ b/op/op.AddFile.php @@ -51,6 +51,47 @@ if ($document->getAccessMode($user, 'addDocumentFile') < M_READWRITE) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); } +function reArrayFiles(&$file_post) { + $file_ary = array(); + $file_count = count($file_post['name']); + $file_keys = array_keys($file_post); + + for ($i=0; $i<$file_count; $i++) { + if($file_post['error'][$i] != 4) { // no file uploaded + foreach ($file_keys as $key) { + $file_ary[$i][$key] = $file_post[$key][$i]; + } + $file_ary[$i]['source'] = 'upload'; + } + } + + return $file_ary; +} + +if(!empty($_FILES['userfile'])) { + $file_ary = reArrayFiles($_FILES['userfile']); +} else { + $file_ary = array(); +} + +if($settings->_dropFolderDir) { + if(isset($_POST["dropfolderfileaddfileform"]) && $_POST["dropfolderfileaddfileform"]) { + $fullfile = $settings->_dropFolderDir.'/'.$user->getLogin().'/'.$_POST["dropfolderfileaddfileform"]; + if(file_exists($fullfile)) { + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $mimetype = finfo_file($finfo, $fullfile); + $file_ary[] = array( + 'tmp_name' => $fullfile, + 'type' => $mimetype, + 'name' => $_POST["dropfolderfileaddfileform"], + 'size' => filesize($fullfile), + 'error' => 0, + 'source' => 'dropfolder' + ); + } + } +} + $prefix = 'userfile'; if(isset($_POST[$prefix.'-fine-uploader-uuids']) && $_POST[$prefix.'-fine-uploader-uuids']) { $uuids = explode(';', $_POST[$prefix.'-fine-uploader-uuids']); @@ -60,34 +101,43 @@ if(isset($_POST[$prefix.'-fine-uploader-uuids']) && $_POST[$prefix.'-fine-upload if(file_exists($fullfile)) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimetype = finfo_file($finfo, $fullfile); - $_FILES["userfile"]['tmp_name'][] = $fullfile; - $_FILES["userfile"]['type'][] = $mimetype; - $_FILES["userfile"]['name'][] = isset($names[$i]) ? $names[$i] : $uuid; - $_FILES["userfile"]['size'][] = filesize($fullfile); - $_FILES["userfile"]['error'][] = 0; + $file_ary[] = array( + 'tmp_name' => $fullfile, + 'type' => $mimetype, + 'name' => isset($names[$i]) ? $names[$i] : $uuid, + 'size' => filesize($fullfile), + 'error' => 0, + 'source' => 'upload', + ); } } } +if(!$file_ary) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_failed")); +} + $maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize); -for ($file_num=0;$file_num $document->getName())),getMLText("uploading_zerosize")); +foreach($file_ary as $file) { + if($file['error']==1) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_maxsize")); } - if ($maxuploadsize && $_FILES["userfile"]["size"][$file_num] > $maxuploadsize) { - UI::exitError(getMLText("folder_title", array("documentname" => $document->getName())),getMLText("uploading_maxsize")); - } - if (is_uploaded_file($_FILES["userfile"]["tmp_name"][$file_num]) && $_FILES['userfile']['error'][$file_num] != 0){ + if($file['error']!=0) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_failed")); } - if($_FILES["userfile"]["error"][$file_num]) { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured")); + if ($file["size"]==0) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_zerosize")); } + if ($maxuploadsize && $file["size"] > $maxuploadsize) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_maxsize")); + } +} - if(count($_FILES["userfile"]["tmp_name"]) == 1 && !empty($_POST['name'])) +foreach($file_ary as $file) { + if(count($file_ary) == 1 && !empty($_POST['name'])) $name = $_POST["name"]; else - $name = $_FILES["userfile"]['name'][$file_num]; + $name = $file['name']; $comment = $_POST["comment"]; $version = (int) $_POST["version"]; $public = (isset($_POST["public"]) && $_POST["public"] == 'true') ? 1 : 0; @@ -99,9 +149,9 @@ for ($file_num=0;$file_numparams['enablelargefileupload']; $partitionsize = $this->params['partitionsize']; $maxuploadsize = $this->params['maxuploadsize']; + $dropfolderdir = $this->params['dropfolderdir']; + header('Content-Type: application/javascript; charset=UTF-8'); parent::jsTranslations(array('js_form_error', 'js_form_errors')); if($enablelargefileupload) $this->printFineUploaderJs($this->params['settings']->_httpRoot.'op/op.UploadChunks.php', $partitionsize, $maxuploadsize); + if($dropfolderdir) { + $this->printDropFolderChooserJs("addfileform"); + } $this->printFileChooserJs(); ?> @@ -58,14 +63,18 @@ $(document).ready( function() { } return false; }, ""); - $("#form1").validate({ + $("#addfileform").validate({ debug: false, ignore: ":hidden:not(.do_validate)", submitHandler: function(form) { - userfileuploader.uploadStoredFiles(); + /* fileuploader may not have any files if drop folder is used */ + if(userfileuploader.getUploads().length) + userfileuploader.uploadStoredFiles(); + else + form.submit(); }, - fineuploaderuuids: { - fineuploader: [ userfileuploader ] + 'userfile-fine-uploader-uuids': { + fineuploader: [ userfileuploader, $('#dropfolderfileaddfileform') ] } 'userfile[]': { - required: true + require_from_group: [1, ".fileupload-group"], + maxsize: + }, + dropfolderfileaddfileform: { + require_from_group: [1, ".fileupload-group"] } params['enablelargefileupload']; $uploadedattachmentispublic = $this->params['uploadedattachmentispublic']; $maxuploadsize = $this->params['maxuploadsize']; + $dropfolderdir = $this->params['dropfolderdir']; $this->htmlAddHeader(''."\n", 'js'); $this->htmlAddHeader(''."\n", 'js'); @@ -132,7 +146,7 @@ $(document).ready( function() { ?> -
+ contentContainerStart(); @@ -140,6 +154,12 @@ $(document).ready( function() { getMLText("local_file"), ($enablelargefileupload ? $this->getFineUploaderHtml() : $this->getFileChooserHtml('userfile[]', false)) ); + if($dropfolderdir) { + $this->formField( + getMLText("dropfolder_file"), + $this->getDropFolderChooserHtml("addfileform") + ); + } $options = array(); $options[] = array("", getMLText('document')); $versions = $document->getContent(); @@ -198,4 +218,3 @@ $(document).ready( function() { } /* }}} */ } -?>