Merge branch 'develop' into seeddms-5.1.x

This commit is contained in:
Uwe Steinmann 2016-04-21 13:48:20 +02:00
commit 24c7c0a076
6 changed files with 47 additions and 39 deletions

View File

@ -32,6 +32,8 @@
header to be send to early (Closes: #252, #254) header to be send to early (Closes: #252, #254)
- regular users with sufficient access rights may remove documents via webdav - regular users with sufficient access rights may remove documents via webdav
- fix error in utils/indexer.php when new documents were indexed - fix error in utils/indexer.php when new documents were indexed
- set url in approval request email after reviewing a document (Closes #259)
- inform groups and users watching a new document too (Closes #260)
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
Changes in version 4.3.25 Changes in version 4.3.25

View File

@ -361,7 +361,7 @@ class SeedDMS_AccessOperation {
*/ */
function check_view_access($view, $get=array()) { /* {{{ */ function check_view_access($view, $get=array()) { /* {{{ */
if(!$this->settings->_advancedAcl) if(!$this->settings->_advancedAcl)
return false; return true;
if(is_string($view)) { if(is_string($view)) {
$scripts = array($view); $scripts = array($view);
} elseif(is_array($view)) { } elseif(is_array($view)) {

View File

@ -223,9 +223,10 @@ class SeedDMS_View_Common {
* @param boolean $hsc set to false if htmlspecialchars() shall not be called * @param boolean $hsc set to false if htmlspecialchars() shall not be called
* @return string link * @return string link
*/ */
protected function html_link($view='', $urlparams=array(), $linkparams=array(), $link, $hsc=true) { /* {{{ */ protected function html_link($view='', $urlparams=array(), $linkparams=array(), $link, $hsc=true, $nocheck=false) { /* {{{ */
if(!$this->check_access($view)) if(!$nocheck)
return ''; if(!$this->check_access($view))
return '';
$url = $this->html_url($view, $urlparams); $url = $this->html_url($view, $urlparams);
$tag = "<a href=\"".$url."\""; $tag = "<a href=\"".$url."\"";
if($linkparams) if($linkparams)

View File

@ -394,7 +394,8 @@ for ($file_num=0;$file_num<count($_FILES["userfile"]["tmp_name"]);$file_num++){
} else { } else {
// Send notification to subscribers of folder. // Send notification to subscribers of folder.
if($notifier) { if($notifier) {
$notifyList = $folder->getNotifyList(); $notifyList1 = $folder->getNotifyList();
$notifyList2 = $document->getNotifyList();
$subject = "new_document_email_subject"; $subject = "new_document_email_subject";
$message = "new_document_email_body"; $message = "new_document_email_body";
@ -408,8 +409,12 @@ for ($file_num=0;$file_num<count($_FILES["userfile"]["tmp_name"]);$file_num++){
$params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName; $params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot; $params['http_root'] = $settings->_httpRoot;
$notifier->toList($user, $notifyList["users"], $subject, $message, $params); $notifier->toList($user, $notifyList1["users"], $subject, $message, $params);
foreach ($notifyList["groups"] as $grp) { foreach ($notifyList1["groups"] as $grp) {
$notifier->toGroup($user, $grp, $subject, $message, $params);
}
$notifier->toList($user, $notifyList2["users"], $subject, $message, $params);
foreach ($notifyList2["groups"] as $grp) {
$notifier->toGroup($user, $grp, $subject, $message, $params); $notifier->toGroup($user, $grp, $subject, $message, $params);
} }

View File

@ -20,14 +20,19 @@
include("../inc/inc.Settings.php"); include("../inc/inc.Settings.php");
include("../inc/inc.LogInit.php"); include("../inc/inc.LogInit.php");
include("../inc/inc.DBInit.php");
include("../inc/inc.Language.php"); include("../inc/inc.Language.php");
include("../inc/inc.Init.php");
include("../inc/inc.Extension.php");
include("../inc/inc.DBInit.php");
include("../inc/inc.ClassUI.php"); include("../inc/inc.ClassUI.php");
include("../inc/inc.ClassAccessOperation.php"); include("../inc/inc.ClassAccessOperation.php");
include("../inc/inc.Authentication.php"); include("../inc/inc.Authentication.php");
$documentid = $_GET["documentid"]; $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user));
$accessop = new SeedDMS_AccessOperation($dms, $user, $settings);
$documentid = $_GET["documentid"];
if (!isset($documentid) || !is_numeric($documentid) || intval($documentid)<1) { if (!isset($documentid) || !is_numeric($documentid) || intval($documentid)<1) {
UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id"));
} }
@ -72,13 +77,8 @@ if (!isset($settings->_editOnlineFileTypes) || !is_array($settings->_editOnlineF
} }
*/ */
/* Create object for checking access to certain operations */
$accessop = new SeedDMS_AccessOperation($dms, $user, $settings);
$folder = $document->getFolder(); $folder = $document->getFolder();
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user));
if($view) { if($view) {
$view->setParam('document', $document); $view->setParam('document', $document);
$view->setParam('version', $content); $view->setParam('version', $content);

View File

@ -524,51 +524,51 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
print "</ul>"; print "</ul>";
print "<ul class=\"unstyled actions\">"; print "<ul class=\"unstyled actions\">";
if($accessop->mayEditVersion($document)) { if($accessop->mayEditVersion($document)) {
print "<li><a href=\"out.EditOnline.php?documentid=".$documentid."&version=".$latestContent->getVersion()."\"><i class=\"icon-edit\"></i>".getMLText("edit_version")."</a></li>"; print "<li>".$this->html_link('EditOnline', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "<i class=\"icon-edit\"></i>".getMLText("edit_version"), false, true)."</li>";
} }
/* Only admin has the right to remove version in any case or a regular /* Only admin has the right to remove version in any case or a regular
* user if enableVersionDeletion is on * user if enableVersionDeletion is on
*/ */
if($accessop->mayRemoveVersion($document)) { if($accessop->mayRemoveVersion($document)) {
print "<li><a href=\"out.RemoveVersion.php?documentid=".$documentid."&version=".$latestContent->getVersion()."\"><i class=\"icon-remove\"></i>".getMLText("rm_version")."</a></li>"; print "<li>".$this->html_link('RemoveVersion', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "<i class=\"icon-remove\"></i>".getMLText("rm_version"), false, true)."</li>";
} }
if($accessop->mayOverrideStatus($document)) { if($accessop->mayOverrideStatus($document)) {
print "<li><a href='../out/out.OverrideContentStatus.php?documentid=".$documentid."&version=".$latestContent->getVersion()."'><i class=\"icon-align-justify\"></i>".getMLText("change_status")."</a></li>"; print "<li>".$this->html_link('OverrideContentStatus', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "<i class=\"icon-align-justify\"></i>".getMLText("change_status"), false, true)."</li>";
} }
if($accessop->maySetRecipients($document)) { if($accessop->maySetRecipients($document)) {
print "<li><a href='../out/out.SetRecipients.php?documentid=".$documentid."&version=".$latestContent->getVersion()."'><i class=\"icon-check\"></i>".getMLText("change_recipients")."</a></li>"; print "<li>".$this->html_link('SetRecipients', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "<i class=\"icon-check\"></i>".getMLText("change_recipients"), false, true)."</li>";
} }
if($accessop->maySetRevisors($document)) { if($accessop->maySetRevisors($document)) {
print "<li><a href='../out/out.SetRevisors.php?documentid=".$documentid."&version=".$latestContent->getVersion()."'><i class=\"icon-refresh\"></i>".getMLText("change_revisors")."</a></li>"; print "<li>".$this->html_link('SetRevisors', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "<i class=\"icon-refresh\"></i>".getMLText("change_revisors"), false, true)."</li>";
} }
if($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { if($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') {
// Allow changing reviewers/approvals only if not reviewed // Allow changing reviewers/approvals only if not reviewed
if($accessop->maySetReviewersApprovers($document)) { if($accessop->maySetReviewersApprovers($document)) {
print "<li><a href='../out/out.SetReviewersApprovers.php?documentid=".$documentid."&version=".$latestContent->getVersion()."'><i class=\"icon-edit\"></i>".getMLText("change_assignments")."</a></li>"; print "<li>".$this->html_link('SetReviewersApprovers', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "<i class=\"icon-edit\"></i>".getMLText("change_assignments"), false, true)."</li>";
} }
} else { } else {
if($accessop->maySetWorkflow($document)) { if($accessop->maySetWorkflow($document)) {
if(!$workflow) { if(!$workflow) {
print "<li><a href='../out/out.SetWorkflow.php?documentid=".$documentid."&version=".$latestContent->getVersion()."'><i class=\"icon-random\"></i>".getMLText("set_workflow")."</a></li>"; print "<li>".$this->html_link('SetWorkflow', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "<i class=\"icon-random\"></i>".getMLText("set_workflow"), false, true)."</li>";
} }
} }
} }
/* /*
if($accessop->maySetExpires($document)) { if($accessop->maySetExpires($document)) {
print "<li><a href='../out/out.SetExpires.php?documentid=".$documentid."'><i class=\"icon-time\"></i>".getMLText("set_expiry")."</a></li>"; print "<li>".$this->html_link('SetExpires', array('documentid'=>$documentid), array(), "<i class=\"icon-time\"></i>".getMLText("set_expiry"), false, true)."</li>";
} }
*/ */
if($dms->getAllTransmittals($user)) { if($dms->getAllTransmittals($user)) {
print "<li><a href=\"out.AddToTransmittal.php?documentid=".$documentid."&version=".$latestContent->getVersion()."\"><i class=\"icon-list\"></i>".getMLText("add_to_transmittal")."</a></li>"; print "<li>".$this->html_link('AddToTransmittal', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "<i class=\"icon-list\"></i>".getMLText("add_to_transmittal"), false, true)."</li>";
} }
if($accessop->mayEditComment($document)) { if($accessop->mayEditComment($document)) {
print "<li><a href=\"out.EditComment.php?documentid=".$documentid."&version=".$latestContent->getVersion()."\"><i class=\"icon-comment\"></i>".getMLText("edit_comment")."</a></li>"; print "<li>".$this->html_link('EditComment', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "<i class=\"icon-comment\"></i>".getMLText("edit_comment"), false, true)."</li>";
} }
if($accessop->mayEditAttributes($document)) { if($accessop->mayEditAttributes($document)) {
print "<li><a href=\"out.EditAttributes.php?documentid=".$documentid."&version=".$latestContent->getVersion()."\"><i class=\"icon-edit\"></i>".getMLText("edit_attributes")."</a></li>"; print "<li>".$this->html_link('EditAttributes', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "<i class=\"icon-edit\"></i>".getMLText("edit_attributes"), false, true)."</li>";
} }
//print "<li><a href=\"../op/op.Download.php?documentid=".$documentid."&vfile=1\"><i class=\"icon-info-sign\"></i>".getMLText("versioning_info")."</a></li>"; //print "<li>".$this->html_link('Download', array('documentid'=>$documentid, 'vfile'=>1), array(), "<i class=\"icon-info-sign\"></i>".getMLText("versioning_info"), false, true)."</li>";
print "</ul>"; print "</ul>";
echo "</td>"; echo "</td>";
@ -686,9 +686,9 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
if($accessop->mayReview($document)) { if($accessop->mayReview($document)) {
if ($is_reviewer && $r["status"]==0) { if ($is_reviewer && $r["status"]==0) {
print "<li><a href=\"../out/out.ReviewDocument.php?documentid=".$documentid."&version=".$latestContent->getVersion()."&reviewid=".$r['reviewID']."\" class=\"btn btn-mini\">".getMLText("add_review")."</a></li>"; print "<li>".$this->html_link('ReviewDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'reviewid'=>$r['reviewID']), array('class'=>'btn btn-mini'), getMLText("add_review"), false, true)."</li>";
}else if (($updateUser==$user)&&(($r["status"]==1)||($r["status"]==-1))&&(!$document->hasExpired())){ }else if (($updateUser==$user)&&(($r["status"]==1)||($r["status"]==-1))&&(!$document->hasExpired())){
print "<li><a href=\"../out/out.ReviewDocument.php?documentid=".$documentid."&version=".$latestContent->getVersion()."&reviewid=".$r['reviewID']."\" class=\"btn btn-mini\">".getMLText("edit")."</a></li>"; print "<li>".$this->html_link('ReviewDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'reviewid'=>$r['reviewID']), array('class'=>'btn btn-mini'), getMLText("edit"), false, true)."</li>";
} }
} }
@ -755,9 +755,9 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
if($accessop->mayApprove($document)) { if($accessop->mayApprove($document)) {
if ($is_approver && $a['status'] == 0 /*$status["status"]==S_DRAFT_APP*/) { if ($is_approver && $a['status'] == 0 /*$status["status"]==S_DRAFT_APP*/) {
print "<li><a class=\"btn btn-mini\" href=\"../out/out.ApproveDocument.php?documentid=".$documentid."&version=".$latestContent->getVersion()."&approveid=".$a['approveID']."\">".getMLText("add_approval")."</a></li>"; print "<li>".$this->html_link('ApproveDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'approveid'=>$a['approveID']), array('class'=>'btn btn-mini'), getMLText("add_approval"), false, true)."</li>";
}else if (($updateUser==$user)&&(($a["status"]==1)||($a["status"]==-1))&&(!$document->hasExpired())){ }else if (($updateUser==$user)&&(($a["status"]==1)||($a["status"]==-1))&&(!$document->hasExpired())){
print "<li><a class=\"btn btn-mini\" href=\"../out/out.ApproveDocument.php?documentid=".$documentid."&version=".$latestContent->getVersion()."&approveid=".$a['approveID']."\">".getMLText("edit")."</a></li>"; print "<li>".$this->html_link('ApproveDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'approveid'=>$a['approveID']), array('class'=>'btn btn-mini'), getMLText("edit"), false, true)."</li>";
} }
} }
@ -1040,9 +1040,9 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
if($accessop->mayReceipt($document)) { if($accessop->mayReceipt($document)) {
if ($is_recipient && $r["status"]==0) { if ($is_recipient && $r["status"]==0) {
print "<li><a href=\"../out/out.ReceiptDocument.php?documentid=".$documentid."&version=".$latestContent->getVersion()."&receiptid=".$r['receiptID']."\" class=\"btn btn-mini\">".getMLText("add_receipt")."</a></li>"; print "<li>".$this->html_link('ReceiptDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'receiptid'=>$r['receiptID']), array('class'=>'btn btn-mini'), getMLText("add_receipt"), false, true)."</li>";
}else if (($updateUser==$user)&&(($r["status"]==1)||($r["status"]==-1))&&(!$document->hasExpired())){ }else if (($updateUser==$user)&&(($r["status"]==1)||($r["status"]==-1))&&(!$document->hasExpired())){
print "<li><a href=\"../out/out.ReceiptDocument.php?documentid=".$documentid."&version=".$latestContent->getVersion()."&receiptid=".$r['receiptID']."\" class=\"btn btn-mini\">".getMLText("edit")."</a></li>"; print "<li>".$this->html_link('ReceiptDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'receiptid'=>$r['receiptID']), array('class'=>'btn btn-mini'), getMLText("edit"), false, true)."</li>";
} }
} }
@ -1150,9 +1150,9 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
if($accessop->mayRevise($document)) { if($accessop->mayRevise($document)) {
if ($is_recipient && $r["status"]==0) { if ($is_recipient && $r["status"]==0) {
print "<li><a href=\"../out/out.ReviseDocument.php?documentid=".$documentid."&version=".$latestContent->getVersion()."&revisionid=".$r['revisionID']."\" class=\"btn btn-mini\">".getMLText("add_revision")."</a></li>"; print "<li>".$this->html_link('ReviseDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'revisionid'=>$r['revisionID']), array('class'=>'btn btn-mini'), getMLText("add_revision"), false, true)."</li>";
} elseif (($updateUser==$user)&&(($r["status"]==1)||($r["status"]==-1))&&(!$document->hasExpired())){ } elseif (($updateUser==$user)&&(($r["status"]==1)||($r["status"]==-1))&&(!$document->hasExpired())){
print "<li><a href=\"../out/out.ReviseDocument.php?documentid=".$documentid."&version=".$latestContent->getVersion()."&revisionid=".$r['revisionID']."\" class=\"btn btn-mini\">".getMLText("edit")."</a></li>"; print "<li>".$this->html_link('ReviseDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'revisionid'=>$r['revisionID']), array('class'=>'btn btn-mini'), getMLText("edit"), false, true)."</li>";
} }
} }
@ -1261,15 +1261,15 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
* user if enableVersionDeletion is on * user if enableVersionDeletion is on
*/ */
if($accessop->mayRemoveVersion($document)) { if($accessop->mayRemoveVersion($document)) {
print "<li><a href=\"out.RemoveVersion.php?documentid=".$documentid."&version=".$version->getVersion()."\"><i class=\"icon-remove\"></i>".getMLText("rm_version")."</a></li>"; print "<li>".$this->html_link('RemoveVersion', array('documentid'=>$documentid, 'version'=>$version->getVersion()), array(), "<i class=\"icon-remove\"></i>".getMLText("rm_version"), false, true)."</li>";
} }
if($accessop->mayEditComment($document)) { if($accessop->mayEditComment($document)) {
print "<li><a href=\"out.EditComment.php?documentid=".$document->getID()."&version=".$version->getVersion()."\"><i class=\"icon-comment\"></i>".getMLText("edit_comment")."</a></li>"; print "<li>".$this->html_link('EditComment', array('documentid'=>$documentid, 'version'=>$version->getVersion()), array(), "<i class=\"icon-comment\"></i>".getMLText("edit_comment"), false, true)."</li>";
} }
if($accessop->mayEditAttributes($document)) { if($accessop->mayEditAttributes($document)) {
print "<li><a href=\"out.EditAttributes.php?documentid=".$document->getID()."&version=".$latestContent->getVersion()."\"><i class=\"icon-edit\"></i>".getMLText("edit_attributes")."</a></li>"; print "<li>".$this->html_link('EditAttributes', array('documentid'=>$documentid, 'version'=>$version->getVersion()), array(), "<i class=\"icon-edit\"></i>".getMLText("edit_attributes"), false, true)."</li>";
} }
print "<li><a href='../out/out.DocumentVersionDetail.php?documentid=".$documentid."&version=".$version->getVersion()."'><i class=\"icon-info-sign\"></i>".getMLText("details")."</a></li>"; print "<li>".$this->html_link('DocumentVersionDetail', array('documentid'=>$documentid, 'version'=>$version->getVersion()), array(), "<i class=\"icon-info-sign\"></i>".getMLText("details"), false, true)."</li>";
print "</ul>"; print "</ul>";
print "</td>\n</tr>\n"; print "</td>\n</tr>\n";
} }
@ -1351,7 +1351,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
else printMLText("no_attached_files"); else printMLText("no_attached_files");
if ($document->getAccessMode($user) >= M_READWRITE){ if ($document->getAccessMode($user) >= M_READWRITE){
print "<ul class=\"unstyled\"><li><a href=\"../out/out.AddFile.php?documentid=".$documentid."\" class=\"btn\">".getMLText("add")."</a></ul>\n"; print "<ul class=\"unstyled\"><li>".$this->html_link('AddFile', array('documentid'=>$documentid), array('class'=>'btn'), getMLText("add"), false, true)."</li></ul>\n";
} }
$this->contentContainerEnd(); $this->contentContainerEnd();
?> ?>