Merge branch 'seeddms-5.1.x' into seeddms-6.0.x

This commit is contained in:
Uwe Steinmann 2021-09-01 16:29:01 +02:00
commit 1398b614cd
10 changed files with 354 additions and 252 deletions

View File

@ -211,6 +211,7 @@
Changes in version 5.1.24
--------------------------------------------------------------------------------
- fix sending of some notification mails to groups
- major overhaul of notifications
- check view access for FolderAccess and DocumentAccess
--------------------------------------------------------------------------------

View File

@ -3966,6 +3966,8 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
/**
* Return a list of all reviewers separated by individuals and groups
* This list will not take the review log into account. Therefore it
* can contain which has actually been deleted as a reviewer.
*
* @return array|bool|null
*/
@ -3995,7 +3997,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
/**
* Get the current review status of the document content
* The review status is a list of reviews and its current status
* The review status is a list of reviewers and its current status
*
* @param integer $limit the number of recent status changes per reviewer
* @return array list of review status
@ -4144,6 +4146,8 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
/**
* Return a list of all approvers separated by individuals and groups
* This list will not take the approval log into account. Therefore it
* can contain which has actually been deleted as an approver.
*
* @return array|bool|null
*/
@ -4173,7 +4177,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
/**
* Get the current approval status of the document content
* The approval status is a list of approvals and its current status
* The approval status is a list of approvers and its current status
*
* @param integer $limit the number of recent status changes per approver
* @return array list of approval status

View File

@ -147,43 +147,14 @@ class SeedDMS_NotificationService {
return $error;
} /* }}} */
/**
* This notification is sent when a workflow action is needed.
*/
public function sendRequestWorkflowActionMail($content, $user) { /* {{{ */
$document = $content->getDocument();
$folder = $document->getFolder();
/* Send mail only if enabled in the configuration */
if($this->settings->_enableNotificationWorkflow && ($workflow = $content->getWorkflow())) {
$subject = "request_workflow_action_email_subject";
$message = "request_workflow_action_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = $content->getVersion();
$params['workflow'] = $workflow->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['current_state'] = $workflow->getInitState()->getName();
$params['username'] = $user->getFullName();
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
foreach($workflow->getNextTransitions($workflow->getInitState()) as $ntransition) {
foreach($ntransition->getUsers() as $tuser) {
$this->toIndividual($user, $tuser->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_WORKFLOW);
}
foreach($ntransition->getGroups() as $tuser) {
$this->toGroup($user, $tuser->getGroup(), $subject, $message, $params, SeedDMS_NotificationService::RECV_WORKFLOW);
}
}
}
} /* }}} */
/**
* This notification is sent when a review or approval is needed.
* The method is only called by sendNewDocumentMail() and sendNewDocumentVersionMail().
* It does not care about the current status of an approval or review, but
* informs an reviewer and approver. Hence, it should only be called
* right after a new document version was created.
*/
public function sendRequestRevAppActionMail($content, $user) { /* {{{ */
private function sendRequestRevAppActionMail($content, $user) { /* {{{ */
$document = $content->getDocument();
$folder = $document->getFolder();
@ -235,6 +206,88 @@ class SeedDMS_NotificationService {
}
} /* }}} */
/**
* This notification is sent when a review is needed.
* In opposite to sendRequestRevAppActionMail() this method checks review status
* and informs only those reviewers about a required review who have not
* reviewed the document yet.
*/
public function sendReviewRequestMail($content, $user) { /* {{{ */
$document = $content->getDocument();
$dms = $document->getDMS();
$folder = $document->getFolder();
if($this->settings->_enableNotificationAppRev) {
$subject = "review_request_email_subject";
$message = "review_request_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $document->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID()."&currenttab=revapp";
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$reviewStatus = $content->getReviewStatus();
foreach($reviewStatus as $dastat) {
if ($dastat["status"] == 0) {
if ($dastat["type"] == 0) {
$reviewer = $dms->getUser($dastat["required"]);
$this->toIndividual($document->getOwner(), $reviewer, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER);
} elseif ($dastat["type"] == 1) {
$group = $dms->getGroup($dastat["required"]);
$this->toGroup($document->getOwner(), $group, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER);
}
}
}
}
} /* }}} */
/**
* This notification is sent when a review is needed.
* In opposite to sendRequestRevAppActionMail() this method checks the approval status
* and informs only those reviewers about a required approval who have not
* approved the document yet.
*/
public function sendApprovalRequestMail($content, $user) { /* {{{ */
$document = $content->getDocument();
$dms = $document->getDMS();
$folder = $document->getFolder();
if($this->settings->_enableNotificationAppRev) {
$subject = "approval_request_email_subject";
$message = "approval_request_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $document->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID()."&currenttab=revapp";
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$approvalStatus = $content->getApprovalStatus();
foreach($approvalStatus as $dastat) {
if ($dastat["status"] == 0) {
if ($dastat["type"] == 0) {
$approver = $dms->getUser($dastat["required"]);
$this->toIndividual($document->getOwner(), $approver, $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
} elseif ($dastat["type"] == 1) {
$group = $dms->getGroup($dastat["required"]);
$this->toGroup($document->getOwner(), $group, $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
}
}
}
}
} /* }}} */
/**
* This notification is sent when a new document is created.
*/
@ -295,9 +348,9 @@ class SeedDMS_NotificationService {
foreach ($notifyList["groups"] as $grp) {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
// if user is not owner send notification to owner
// if ($user->getID() != $document->getOwner()->getID())
// $this->toIndividual($user, $document->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
/* if user is not owner send notification to owner */
if ($user->getID() != $document->getOwner()->getID())
$this->toIndividual($user, $document->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
$this->sendRequestWorkflowActionMail($lc, $user);
@ -459,6 +512,11 @@ class SeedDMS_NotificationService {
foreach ($notifyList["groups"] as $grp) {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
/* if user is not owner send notification to owner */
if ($user->getID() != $document->getOwner()->getID())
$this->toIndividual($user, $document->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
} /* }}} */
/**
@ -667,8 +725,8 @@ class SeedDMS_NotificationService {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
// if user is not owner send notification to owner
// if ($user->getID() != $folder->getOwner()->getID())
// $notifier->toIndividual($user, $folder->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
if ($user->getID() != $folder->getOwner()->getID())
$this->toIndividual($user, $folder->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
}
} /* }}} */
@ -749,8 +807,8 @@ class SeedDMS_NotificationService {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
// if user is not owner send notification to owner
// if ($user->getID() != $folder->getOwner()->getID())
// $this->toIndividual($user, $folder->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
if ($user->getID() != $folder->getOwner()->getID())
$this->toIndividual($user, $folder->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
}
} /* }}} */
@ -863,7 +921,7 @@ class SeedDMS_NotificationService {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
// $notifier->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
// $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
} /* }}} */
public function sendNewDocumentNotifyMail($document, $user, $obj) { /* {{{ */
@ -956,7 +1014,7 @@ class SeedDMS_NotificationService {
foreach ($nl["groups"] as $grp) {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
// $notifier->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
// $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
} /* }}} */
public function sendSubmittedApprovalMail($content, $user, $approvelog) { /* {{{ */
@ -983,6 +1041,108 @@ class SeedDMS_NotificationService {
} /* }}} */
public function sendDeleteApprovalMail($content, $user, $approver) { /* {{{ */
$document = $content->getDocument();
$folder = $document->getFolder();
$subject = "approval_deletion_email_subject";
$message = "approval_deletion_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
if($approver->isType('user'))
$this->toIndividual($user, $approver, $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
elseif($approver->isType('group'))
$this->toGroup($user, $approver, $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
} /* }}} */
public function sendDeleteReviewMail($content, $user, $reviewer) { /* {{{ */
$document = $content->getDocument();
$folder = $document->getFolder();
$subject = "review_deletion_email_subject";
$message = "review_deletion_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
if($reviewer->isType('user'))
$this->toIndividual($user, $reviewer, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER);
elseif($approver->isType('group'))
$this->toGroup($user, $reviewer, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER);
} /* }}} */
/**
* This notification is send if a new approver is added.
*
* In most cases all approvers are informed with sendApprovalRequestMail()
* when a new document version is added,
* but this method informs just a single approver (user or group), when the
* approver was added at a later point in time.
*/
public function sendAddApprovalMail($content, $user, $approver) { /* {{{ */
$document = $content->getDocument();
$folder = $document->getFolder();
$subject = "approval_request_email_subject";
$message = "approval_request_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
if($approver->isType('user'))
$this->toIndividual($user, $approver, $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
elseif($approver->isType('group'))
$this->toGroup($user, $approver, $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
} /* }}} */
/**
* This notification is send if a new reviewer is added.
*
* In most cases all reviewers are informed with sendReviewRequestMail()
* when a new document version is added,
* but this method informs just a single reviewer (user or group), when the
* reviewer was added at a later point in time.
*/
public function sendAddReviewMail($content, $user, $reviewer) { /* {{{ */
$document = $content->getDocument();
$folder = $document->getFolder();
$subject = "review_request_email_subject";
$message = "review_request_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
if($reviewer->isType('user'))
$this->toIndividual($user, $reviewer, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER);
elseif($reviewer->isType('group'))
$this->toGroup($user, $reviewer, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER);
} /* }}} */
public function sendChangedDocumentOwnerMail($document, $user, $oldowner) { /* {{{ */
if($oldowner->getID() != $document->getOwner()->getID()) {
$notifyList = $document->getNotifyList();
@ -1002,7 +1162,7 @@ class SeedDMS_NotificationService {
foreach ($notifyList["groups"] as $grp) {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
// $notifier->toIndividual($user, $oldowner, $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
// $this->toIndividual($user, $oldowner, $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
}
} /* }}} */
@ -1068,5 +1228,115 @@ class SeedDMS_NotificationService {
}
} /* }}} */
public function sendTriggerWorkflowTransitionMail($content, $user, $wkflog) { /* {{{ */
$document = $content->getDocument();
$workflow = $wkflog->getWorkflow();
$transition = $wkflog->getTransition();
$nl = $document->getNotifyList();
$folder = $document->getFolder();
$subject = "transition_triggered_email_subject";
$message = "transition_triggered_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = $content->getVersion();
$params['workflow'] = $workflow->getName();
$params['action'] = $transition->getAction()->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['comment'] = $wkflog->getComment();
$params['previous_state'] = $transition->getState()->getName();
$params['current_state'] = $transition->getNextState()->getName();
$params['username'] = $user->getFullName();
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
// Send notification to subscribers.
$this->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
foreach ($nl["groups"] as $grp) {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
} /* }}} */
/**
* This notification is sent when a workflow action needed.
* If a transition is passed this must be the translation lately fired, hence
* the state of the workflow is next state of the transition. If no transition
* is passed, the workflow just started and is still in its initial state.
*/
public function sendRequestWorkflowActionMail($content, $user, $transition=null) { /* {{{ */
$document = $content->getDocument();
$folder = $document->getFolder();
if(!($workflow = $content->getWorkflow()))
return;
if($transition) {
$state = $transition->getNextState();
} else {
$state = $workflow->getInitState();
}
if($this->settings->_enableNotificationWorkflow) {
$subject = "request_workflow_action_email_subject";
$message = "request_workflow_action_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = $content->getVersion();
$params['workflow'] = $workflow->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
if($transition)
$params['current_state'] = $transition->getNextState()->getName();
else
$params['current_state'] = $workflow->getInitState()->getName();
$params['username'] = $user->getFullName();
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$usersinformed = array();
$groupsinformed = array();
foreach($workflow->getNextTransitions($state) as $ntransition) {
foreach($ntransition->getUsers() as $tuser) {
if(!in_array($tuser->getUser()->getID(), $usersinformed)) {
$usersinformed[] = $tuser->getUser()->getID();
$this->toIndividual($user, $tuser->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_WORKFLOW);
}
}
foreach($ntransition->getGroups() as $tuser) {
if(!in_array($tuser->getGroup()->getID(), $groupsinformed)) {
$groupsinformed[] = $tuser->getGroup()->getID();
$this->toGroup($user, $tuser->getGroup(), $subject, $message, $params, SeedDMS_NotificationService::RECV_WORKFLOW);
}
}
}
}
} /* }}} */
/**
* This notification is sent when a workflow is rewinded.
*/
public function sendRewindWorkflowMail($content, $user) { /* {{{ */
$document = $content->getDocument();
$folder = $document->getFolder();
$workflow = $content->getWorkflow();
$nl = $document->getNotifyList();
$folder = $document->getFolder();
$subject = "rewind_workflow_email_subject";
$message = "rewind_workflow_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = $content->getVersion();
$params['workflow'] = $workflow->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['username'] = $user->getFullName();
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID()."&currenttab=workflow";
// Send notification to subscribers.
$this->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
foreach ($nl["groups"] as $grp) {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
} /* }}} */
}

View File

@ -978,6 +978,9 @@ switch($command) {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText('error_occured'), 'data'=>''));
} else {
if($notifier) {
$notifier->sendNewFileMail($res, $user);
}
header('Content-Type: application/json');
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_added'), 'data'=>$document->getID()));
add_log_line();

View File

@ -93,7 +93,13 @@ if($reviewStatus['type'] == 0) {
UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("invalid_reviewid"));
$comment = $_POST["comment"];
$overallStatus = $latestContent->getStatus();
if(0 == $latestContent->removeReview($reviewid, $user, $comment)) {
$latestContent->verifyStatus(true, $user, $msg);
if($notifier) {
$notifier->sendReviewRequestMail($latestContent, $user);
if($overallStatus['status'] != $latestContent->getStatus()['status'])
$notifier->sendChangedDocumentStatusMail($latestContent, $user, $overallStatus["status"]);
}
}
header("Location:../out/out.ViewDocument.php?documentid=".$documentid."&currenttab=revapp");

View File

@ -76,17 +76,6 @@ if($version->returnFromSubWorkflow($user, $transition, $_POST["comment"])) {
$nl = $document->getNotifyList();
$folder = $document->getFolder();
/*
$subject = "###SITENAME###: ".$document->getName()." - ".getMLText("return_from_subworkflow_email");
$message = getMLText("return_from_subwork_email")."\r\n";
$message .=
getMLText("document").": ".$document->getName()."\r\n".
getMLText("workflow").": ".$workflow->getName()."\r\n".
getMLText("workflow").": ".$parentworkflow->getName()."\r\n".
getMLText("current_state").": ".$version->getWorkflowState()->getName()."\r\n".
getMLText("user").": ".$user->getFullName()." <". $user->getEmail() ."> ";
*/
$subject = "return_from_subworkflow_email_subject";
$message = "return_from_subworkflow_email_body";
$params = array();

View File

@ -62,33 +62,7 @@ if (!is_object($workflow)) {
if($version->rewindWorkflow()) {
if ($notifier) {
$nl = $document->getNotifyList();
$folder = $document->getFolder();
/*
$subject = "###SITENAME###: ".$document->getName()." - ".getMLText("rewind_workflow_email");
$message = getMLText("rewind_workflow_email")."\r\n";
$message .=
getMLText("document").": ".$document->getName()."\r\n".
getMLText("workflow").": ".$workflow->getName()."\r\n".
getMLText("user").": ".$user->getFullName()." <". $user->getEmail() ."> ";
*/
$subject = "rewind_workflow_email_subject";
$message = "rewind_workflow_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = $version->getVersion();
$params['workflow'] = $workflow->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['username'] = $user->getFullName();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
// Send notification to subscribers.
$notifier->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
foreach ($nl["groups"] as $grp) {
$notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
$notifier->sendRewindWorkflowMail($version, $user);
}
}

View File

@ -71,16 +71,6 @@ if($version->runSubWorkflow($subworkflow)) {
$nl = $document->getNotifyList();
$folder = $document->getFolder();
/*
$subject = "###SITENAME###: ".$document->getName()." - ".getMLText("run_subworkflow_email");
$message = getMLText("run_subwork_email")."\r\n";
$message .=
getMLText("document").": ".$document->getName()."\r\n".
getMLText("workflow").": ".$subworkflow->getName()."\r\n".
getMLText("current_state").": ".$version->getWorkflowState()->getName()."\r\n".
getMLText("user").": ".$user->getFullName()." <". $user->getEmail() ."> ";
*/
$subject = "run_subworkflow_email_subject";
$message = "run_subworkflow_email_body";
$params = array();
@ -96,7 +86,7 @@ if($version->runSubWorkflow($subworkflow)) {
// Send notification to subscribers.
$notifier->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
foreach ($nl["groups"] as $grp) {
$notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
$notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
}
}

View File

@ -144,19 +144,7 @@ foreach ($pIndRev as $p) {
// Send an email notification to the new reviewer.
if($settings->_enableNotificationAppRev) {
if ($notifier) {
$subject = "review_request_email_subject";
$message = "review_request_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$notifier->toIndividual($user, $docAccess["users"][$accessIndex["i"][$p]], $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER);
$notifier->sendAddReviewMail($content, $user, $docAccess["users"][$accessIndex["i"][$p]]);
}
}
break;
@ -210,19 +198,7 @@ if (count($reviewIndex["i"]) > 0) {
// Send an email notification to the reviewer.
if($settings->_enableNotificationAppRev) {
if ($notifier) {
$subject = "review_deletion_email_subject";
$message = "review_deletion_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$notifier->toIndividual($user, $docAccess["users"][$accessIndex["i"][$rx]], $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER);
$notifier->sendDeleteReviewMail($content, $user, $docAccess["users"][$accessIndex["i"][$rx]]);
}
}
break;
@ -256,19 +232,7 @@ foreach ($pGrpRev as $p) {
// Send an email notification to the new reviewer.
if($settings->_enableNotificationAppRev) {
if ($notifier) {
$subject = "review_request_email_subject";
$message = "review_request_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$notifier->toGroup($user, $docAccess["groups"][$accessIndex["g"][$p]], $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER);
$notifier->sendAddReviewMail($content, $user, $docAccess["groups"][$accessIndex["g"][$p]]);
}
}
break;
@ -314,19 +278,7 @@ if (count($reviewIndex["g"]) > 0) {
// Send an email notification to the review group.
if($settings->_enableNotificationAppRev) {
if ($notifier) {
$subject = "review_deletion_email_subject";
$message = "review_deletion_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$notifier->toGroup($user, $docAccess["groups"][$accessIndex["g"][$rx]], $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER);
$notifier->sendDeleteReviewMail($content, $user, $docAccess["groups"][$accessIndex["g"][$rx]]);
}
}
break;
@ -387,20 +339,12 @@ foreach ($pIndApp as $p) {
case 0:
// Send an email notification to the new approver.
if($settings->_enableNotificationAppRev) {
/* Send notification only if document is currently not in review state,
* because then the approvers will be informed anyway when review state
* is left and approval state is entered.
*/
if ($overallStatus["status"]!=0 && $notifier) {
$subject = "approval_request_email_subject";
$message = "approval_request_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$notifier->toIndividual($user, $docAccess["users"][$accessIndex["i"][$p]], $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
$notifier->sendAddApprovalMail($content, $user, $docAccess["users"][$accessIndex["i"][$p]]);
}
}
break;
@ -446,19 +390,7 @@ if (count($approvalIndex["i"]) > 0) {
// Send an email notification to the approver.
if($settings->_enableNotificationAppRev) {
if ($notifier) {
$subject = "approval_deletion_email_subject";
$message = "approval_deletion_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$notifier->toIndividual($user, $docAccess["users"][$accessIndex["i"][$rx]], $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
$notifier->sendDeleteApprovalMail($content, $user, $docAccess["users"][$accessIndex["i"][$rx]]);
}
}
break;
@ -491,20 +423,12 @@ foreach ($pGrpApp as $p) {
case 0:
// Send an email notification to the new approver.
if($settings->_enableNotificationAppRev) {
/* Send notification only if document is currently not in review state,
* because then the approvers will be informed anyway when review state
* is left and approval state is entered.
*/
if ($overallStatus["status"]!=0 && $notifier) {
$subject = "approval_request_email_subject";
$message = "approval_request_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$notifier->toGroup($user, $docAccess["groups"][$accessIndex["g"][$p]], $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
$notifier->sendAddApprovalMail($content, $user, $docAccess["groups"][$accessIndex["g"][$p]]);
}
}
break;
@ -550,19 +474,7 @@ if (count($approvalIndex["g"]) > 0) {
// Send an email notification to the approval group.
if($settings->_enableNotificationAppRev) {
if ($notifier) {
$subject = "approval_deletion_email_subject";
$message = "approval_deletion_email_body";
$params = array();
$params['name'] = $document->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['version'] = $content->getVersion();
$params['comment'] = $content->getComment();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$notifier->toGroup($user, $docAccess["groups"][$accessIndex["g"][$rx]], $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER);
$notifier->sendDeleteApprovalMail($content, $user, $docAccess["groups"][$accessIndex["g"][$rx]]);
}
}
break;

View File

@ -76,62 +76,15 @@ if(isset($GLOBALS['SEEDDMS_HOOKS']['triggerWorkflowTransition'])) {
}
}
$overallStatus = $version->getStatus();
if($version->triggerWorkflowTransition($user, $transition, $_POST["comment"])) {
if ($notifier) {
$nl = $document->getNotifyList();
$folder = $document->getFolder();
$subject = "transition_triggered_email_subject";
$message = "transition_triggered_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = $version->getVersion();
$params['workflow'] = $workflow->getName();
$params['action'] = $transition->getAction()->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['comment'] = $_POST["comment"];
$params['previous_state'] = $transition->getState()->getName();
$params['current_state'] = $transition->getNextState()->getName();
$params['username'] = $user->getFullName();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$wkflog = $version->getWorkflowLog($transition);
$notifier->sendTriggerWorkflowTransitionMail($version, $user, $wkflog ? $wkflog[0] : false);
// Send notification to subscribers.
$notifier->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
foreach ($nl["groups"] as $grp) {
$notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
if($settings->_enableNotificationWorkflow) {
$subject = "request_workflow_action_email_subject";
$message = "request_workflow_action_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = $version->getVersion();
$params['workflow'] = $workflow->getName();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['current_state'] = $transition->getNextState()->getName();
$params['username'] = $user->getFullName();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$usersinformed = array();
$groupsinformed = array();
foreach($workflow->getNextTransitions($transition->getNextState()) as $ntransition) {
foreach($ntransition->getUsers() as $tuser) {
if(!in_array($tuser->getUser()->getID(), $usersinformed)) {
$usersinformed[] = $tuser->getUser()->getID();
$notifier->toIndividual($user, $tuser->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_WORKFLOW);
}
}
foreach($ntransition->getGroups() as $tuser) {
if(!in_array($tuser->getGroup()->getID(), $groupsinformed)) {
$groupsinformed[] = $tuser->getGroup()->getID();
$notifier->toGroup($user, $tuser->getGroup(), $subject, $message, $params, SeedDMS_NotificationService::RECV_WORKFLOW);
}
}
}
$notifier->sendRequestWorkflowActionMail($version, $user, $transition);
if($overallStatus['status'] != $version->getStatus()['status']) {
$notifier->sendChangedDocumentStatusMail($version, $user, $overallStatus["status"]);
}
}