diff --git a/op/op.AddDocument.php b/op/op.AddDocument.php index 6176b54d8..5d3a25841 100644 --- a/op/op.AddDocument.php +++ b/op/op.AddDocument.php @@ -237,25 +237,43 @@ if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'tra } } -$docsource = 'upload'; +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 ($_FILES['userfile']) { + $file_ary = reArrayFiles($_FILES['userfile']); +} else { + $file_ary = array(); +} if($settings->_dropFolderDir) { - if(isset($_POST["dropfolderfileform1"]) && $_POST["dropfolderfileform1"]) { - $fullfile = $settings->_dropFolderDir.'/'.$user->getLogin().'/'.$_POST["dropfolderfileform1"]; + if(isset($_POST["dropfolderfileadddocform"]) && $_POST["dropfolderfileadddocform"]) { + $fullfile = $settings->_dropFolderDir.'/'.$user->getLogin().'/'.$_POST["dropfolderfileadddocform"]; if(file_exists($fullfile)) { - $docsource = 'dropfolder'; - /* Check if a local file is uploaded as well */ - if(isset($_FILES["userfile"]['error'][0])) { - if($_FILES["userfile"]['error'][0] != 0) - $_FILES["userfile"] = array(); - } $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimetype = finfo_file($finfo, $fullfile); - $_FILES["userfile"]['tmp_name'][] = $fullfile; - $_FILES["userfile"]['type'][] = $mimetype; - $_FILES["userfile"]['name'][] = $_POST["dropfolderfileform1"]; - $_FILES["userfile"]['size'][] = filesize($fullfile); - $_FILES["userfile"]['error'][] = 0; + $file_ary[] = array( + 'tmp_name' => $fullfile, + 'type' => $mimetype, + 'name' => $_POST["dropfolderfileadddocform"], + 'size' => filesize($fullfile), + 'error' => 0, + 'source' => 'dropfolder' + ); } } } @@ -269,15 +287,26 @@ 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($controller->hasHook('getDocument')) { + $file_ary = array_merge($file_ary, $controller->callHook('getDocument', $_POST)); +} + +if(!$file_ary) { + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("uploading_failed")); +} + /* Check if additional notification shall be added */ $notusers = array(); if(!empty($_POST['notification_users'])) { @@ -300,22 +329,22 @@ if(!empty($_POST['notification_groups'])) { /* Check files for Errors first */ $maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize); -for ($file_num=0;$file_num $folder->getName())),getMLText("uploading_zerosize")); } - if ($maxuploadsize && $_FILES["userfile"]["size"][$file_num] > $maxuploadsize) { + if ($maxuploadsize && $file["size"] > $maxuploadsize) { UI::exitError(getMLText("folder_title", array("foldername" => $folder->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("folder_title", array("foldername" => $folder->getName())),getMLText("uploading_failed")); } } -for ($file_num=0;$file_numsetParam('documentsource', $docsource); + $controller->setParam('documentsource', $file['source']); $controller->setParam('folder', $folder); $controller->setParam('fulltextservice', $fulltextservice); $controller->setParam('name', $name); diff --git a/op/op.UpdateDocument.php b/op/op.UpdateDocument.php index a89c93bc1..7800fa7b9 100644 --- a/op/op.UpdateDocument.php +++ b/op/op.UpdateDocument.php @@ -67,6 +67,38 @@ if ($document->isLocked()) { else $document->setLocked(false); } +function reArrayFiles(&$file_post) { + $file_post['source'] = 'upload'; + if($file_post['error'] != 4) // no file uploaded + return array($file_post); + else + return array(); +} + +if ($_FILES['userfile']) { + $file_ary = reArrayFiles($_FILES['userfile']); +} else { + $file_ary = array(); +} + +if($settings->_dropFolderDir) { + if(isset($_POST["dropfolderfileform1"]) && $_POST["dropfolderfileform1"]) { + $fullfile = $settings->_dropFolderDir.'/'.$user->getLogin().'/'.$_POST["dropfolderfileform1"]; + 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["dropfolderfileform1"], + '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']); @@ -76,29 +108,38 @@ 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[0]) ? $names[0] : $uuid; - $_FILES["userfile"]['size'] = filesize($fullfile); - $_FILES["userfile"]['error'] = 0; + $file_ary[] = array( + 'tmp_name' => $fullfile, + 'type' => $mimetype, + 'name' => isset($names[0]) ? $names[0] : $uuid, + 'size' => filesize($fullfile), + 'error' => 0, + 'source' => 'upload', + ); } } -if (isset($_FILES['userfile']) && $_FILES['userfile']['error'] == 0) { -// if(!is_uploaded_file($_FILES["userfile"]["tmp_name"])) -// UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured")."lsajdflk"); +if($controller->hasHook('getDocument')) { + $file_ary = array_merge($file_ary, $controller->callHook('getDocument', $_POST)); +} - if($_FILES["userfile"]["size"] == 0) +if(!$file_ary) { + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("uploading_failed")); +} + +$file = $file_ary[0]; +if ($file['error'] == 0) { + if ($file["size"]==0) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_zerosize")); - + } $maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize); - if ($maxuploadsize && $_FILES["userfile"]["size"] > $maxuploadsize) { + if ($maxuploadsize && $file["size"] > $maxuploadsize) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_maxsize")); } - $userfiletmp = $_FILES["userfile"]["tmp_name"]; - $userfiletype = $_FILES["userfile"]["type"]; - $userfilename = $_FILES["userfile"]["name"]; + $userfiletmp = $file["tmp_name"]; + $userfiletype = $file["type"]; + $userfilename = $file["name"]; if($settings->_overrideMimeType) { $finfo = finfo_open(FILEINFO_MIME_TYPE); @@ -106,32 +147,15 @@ if (isset($_FILES['userfile']) && $_FILES['userfile']['error'] == 0) { if($tmpfiletype != 'application/octet-stream') $userfiletype = $tmpfiletype; } -} elseif($settings->_dropFolderDir) { - if($_POST['dropfolderfileform1']) { - $fullfile = $settings->_dropFolderDir.'/'.$user->getLogin().'/'.$_POST["dropfolderfileform1"]; - if(file_exists($fullfile)) { - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $mimetype = finfo_file($finfo, $fullfile); - $userfiletmp = $fullfile; - $userfiletype = $mimetype; - $userfilename= $_POST["dropfolderfileform1"]; - } else { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured")); - } - } else { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured")); - } -} else { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_failed")); } /* Check if the uploaded file is identical to last version */ - $lc = $document->getLatestContent(); - if($lc->getChecksum() == SeedDMS_Core_File::checksum($userfiletmp)) { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("identical_version")); - } +$lc = $document->getLatestContent(); +if($lc->getChecksum() == SeedDMS_Core_File::checksum($userfiletmp)) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("identical_version")); +} - $fileType = ".".pathinfo($userfilename, PATHINFO_EXTENSION); +$fileType = ".".pathinfo($userfilename, PATHINFO_EXTENSION); if(isset($_POST["comment"])) $comment = $_POST["comment"];