diff --git a/CHANGELOG b/CHANGELOG index f246e4092..6c9a3ebec 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -55,6 +55,9 @@ - documents, folders, files, events can be moved to a new user - do not show quota information in user manager if quotas are turn off - files in drop folder can be listed in main menu +- webdav can use orig. filename of last version instead of document name (experimental) +- fix browse button of fine-uploader when 'Enable large file upload' is + turned on firefox is used (Closes #339) -------------------------------------------------------------------------------- Changes in version 5.1.2 diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index 46fa350f4..cebcc7d3f 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -703,6 +703,43 @@ class SeedDMS_Core_DMS { return $document; } /* }}} */ + /** + * Returns a document by the original file name of the last version + * + * This function searches a document by the name of the last document + * version and restricts the search + * to given folder if passed as the second parameter. + * + * @param string $name + * @param object $folder + * @return object/boolean found document or false + */ + function getDocumentByOriginalFilename($name, $folder=null) { /* {{{ */ + if (!$name) return false; + + $queryStr = "SELECT `tblDocuments`.*, `tblDocumentLocks`.`userID` as `lockUser` ". + "FROM `tblDocuments` ". + "LEFT JOIN `ttcontentid` ON `ttcontentid`.`document` = `tblDocuments`.`id` ". + "LEFT JOIN `tblDocumentContent` ON `tblDocumentContent`.`document` = `tblDocuments`.`id` AND `tblDocumentContent`.`version` = `ttcontentid`.`maxVersion` ". + "LEFT JOIN `tblDocumentLocks` ON `tblDocuments`.`id`=`tblDocumentLocks`.`document` ". + "WHERE `tblDocumentContent`.`orgFileName` = " . $this->db->qstr($name); + if($folder) + $queryStr .= " AND `tblDocuments`.`folder` = ". $folder->getID(); + $queryStr .= " LIMIT 1"; + + $resArr = $this->db->getResultArray($queryStr); + if (is_bool($resArr) && !$resArr) + return false; + + if(!$resArr) + return false; + + $row = $resArr[0]; + $document = new $this->classnames['document']($row["id"], $row["name"], $row["comment"], $row["date"], $row["expires"], $row["owner"], $row["folder"], $row["inheritAccess"], $row["defaultAccess"], $row["lockUser"], $row["keywords"], $row["sequence"]); + $document->setDMS($this); + return $document; + } /* }}} */ + /** * Return a document content by its id * diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index aeef7b744..4f0efcc7a 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -1508,6 +1508,7 @@ returns just users which are not disabled - add new methods removeFromProcesses(), getWorkflowsInvolved(), getKeywordCategories() to SeedDMS_Core_User - add methods isMandatoryReviewerOf() and isMandatoryApproverOf() - add methods transferDocumentsFolders() and transferEvents() +- add method SeedDMS_Core_DMS::getDocumentByOriginalFilename() diff --git a/op/op.UsrMgr.php b/op/op.UsrMgr.php index a46d8044a..aa618a17b 100644 --- a/op/op.UsrMgr.php +++ b/op/op.UsrMgr.php @@ -277,7 +277,7 @@ else if ($action == "transferobjects") { } // send login data to user -else if ($action == "sendlogindata") { +else if ($action == "sendlogindata" && $settings->_enableEmail) { /* Check if the form data comes from a trusted request */ if(!checkFormKey('sendlogindata')) { UI::exitError(getMLText("admin_tools"),getMLText("invalid_request_token")); diff --git a/out/out.UsrMgr.php b/out/out.UsrMgr.php index 45c8aed06..64b9dd060 100644 --- a/out/out.UsrMgr.php +++ b/out/out.UsrMgr.php @@ -71,5 +71,6 @@ if($view) { $view->setParam('quota', $settings->_quota); $view->setParam('strictformcheck', $settings->_strictFormCheck); $view->setParam('accessobject', $accessop); + $view->setParam('enableemail', $settings->_enableEmail); $view($_GET); } diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 812539511..03b53bd77 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -2548,7 +2548,7 @@ mayscript>
- + '.getMLText('browse').'… diff --git a/views/bootstrap/class.UsrMgr.php b/views/bootstrap/class.UsrMgr.php index 6ca304a80..c7ec6bf4d 100644 --- a/views/bootstrap/class.UsrMgr.php +++ b/views/bootstrap/class.UsrMgr.php @@ -192,6 +192,7 @@ $(document).ready( function() { $quota = $this->params['quota']; $workflowmode = $this->params['workflowmode']; $undeluserids = $this->params['undeluserids']; + $enableemail = $this->params['enableemail']; if($seluser) { ?> @@ -209,7 +210,8 @@ $(document).ready( function() { echo '
  • '.getMLText("transfer_objects").'
  • '; if($user->isAdmin() && $seluser->getID() != $user->getID()) echo "
  • getID()."&formtoken=".createFormKey('substituteuser')."\"> ".getMLText("substitute_user")."
  • \n"; - echo '
  • '.getMLText("send_login_data").'
  • '; + if($enableemail) + echo '
  • '.getMLText("send_login_data").'
  • '; ?> diff --git a/webdav/webdav.php b/webdav/webdav.php index e2ebd9790..716c6cfb7 100644 --- a/webdav/webdav.php +++ b/webdav/webdav.php @@ -43,6 +43,14 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server */ var $user = ""; + /** + * Set to true if original file shall be used instead of document name + * + * @access private + * @var boolean + */ + var $useorgfilename = false; + /** * Serve a webdav request * @@ -184,7 +192,11 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $this->logger->log('reverseLookup: found folder '.$root->getName().' ('.$root->getID().')', PEAR_LOG_DEBUG); return $root; } else { - if($document = $this->dms->getDocumentByName($docname, $root)) { + if($this->useorgfilename) + $document = $this->dms->getDocumentByOriginalFilename($docname, $root); + else + $document = $this->dms->getDocumentByName($docname, $root); + if($document) { if($this->logger) $this->logger->log('reverseLookup: found document '.$document->getName().' ('.$document->getID().')', PEAR_LOG_DEBUG); return $document; @@ -201,7 +213,11 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server } if($folder) { if($docname) { - if($document = $this->dms->getDocumentByName($docname, $folder)) { + if($this->useorgfilename) + $document = $this->dms->getDocumentByOriginalFilename($docname, $folder); + else + $document = $this->dms->getDocumentByName($docname, $folder); + if($document) { if($this->logger) $this->logger->log('reverseLookup: found document '.$document->getName().' ('.$document->getID().')', PEAR_LOG_DEBUG); return $document; @@ -341,8 +357,13 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server // $path .= rawurlencode($pathseg->getName()).'/'; $path .= $pathseg->getName().'/'; // $info["path"] = htmlspecialchars($path.rawurlencode($obj->getName())); - $info["path"] = $path.$obj->getName(); - $info["props"][] = $this->mkprop("displayname", $obj->getName()); + if($this->useorgfilename) { + $info["path"] = $path.$content->getOriginalFileName(); + $info["props"][] = $this->mkprop("displayname", $content->getOriginalFileName()); + } else { + $info["path"] = $path.$obj->getName(); + $info["props"][] = $this->mkprop("displayname", $obj->getName()); + } $info["props"][] = $this->mkprop("resourcetype", ""); if (1 /*is_readable($fspath)*/) { @@ -495,6 +516,8 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $fspath = $this->dms->contentDir.'/'.$content->getPath(); $filesize = filesize($fspath); + if($this->useorgfilename) + $filename = $content->getOriginalFileName();; } // $name = htmlspecialchars($filename); $name = $filename; @@ -562,7 +585,11 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server else $fileType = substr($name, $lastDotIndex); } /* First check whether there is already a file with the same name */ - if($document = $this->dms->getDocumentByName($name, $folder)) { + if($this->useorgfilename) + $document = $this->dms->getDocumentByOriginalFilename($name, $folder); + else + $document = $this->dms->getDocumentByName($name, $folder); + if($document) { if ($document->getAccessMode($this->user) < M_READWRITE) { unlink($tmpFile); return "403 Forbidden";