mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-05-08 20:46:05 +00:00
add option parameter $states to __removeFromProcesses()
restricts removal to certain approval/review states
This commit is contained in:
parent
1ecb6236c0
commit
d0ab0d0f9f
|
@ -477,17 +477,24 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
/**
|
/**
|
||||||
* Remove user from all processes
|
* Remove user from all processes
|
||||||
*
|
*
|
||||||
* This includes review, approval and workflow
|
* This method adds another log entry to the reviews and approvals
|
||||||
|
* which indicates the user has been deleted from the process. It will
|
||||||
|
* do so for each review/approval regardless of its current state. So even
|
||||||
|
* reviews/approvals already processed by the user will be added the log
|
||||||
|
* entry. Only if the last log entry was a removal already, it will not be
|
||||||
|
* added a second time.
|
||||||
*
|
*
|
||||||
* @param object $user the user doing the removal (needed for entry in
|
* @param object $user the user doing the removal (needed for entry in
|
||||||
* review and approve log).
|
* review and approve log).
|
||||||
|
* @param array $states remove user only from reviews/approvals in one of the states
|
||||||
* @return boolean true on success or false in case of an error
|
* @return boolean true on success or false in case of an error
|
||||||
*/
|
*/
|
||||||
private function __removeFromProcesses($user) { /* {{{ */
|
private function __removeFromProcesses($user, $states = array()) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$reviewStatus = $this->getReviewStatus();
|
$reviewStatus = $this->getReviewStatus();
|
||||||
foreach ($reviewStatus["indstatus"] as $ri) {
|
foreach ($reviewStatus["indstatus"] as $ri) {
|
||||||
|
if($ri['status'] != -2 && (!$states || in_array($ri['status'], $states))) {
|
||||||
$queryStr = "INSERT INTO `tblDocumentReviewLog` (`reviewID`, `status`, `comment`, `date`, `userID`) ".
|
$queryStr = "INSERT INTO `tblDocumentReviewLog` (`reviewID`, `status`, `comment`, `date`, `userID`) ".
|
||||||
"VALUES ('". $ri["reviewID"] ."', '-2', 'Reviewer removed from process', ".$db->getCurrentDatetime().", '". $user->getID() ."')";
|
"VALUES ('". $ri["reviewID"] ."', '-2', 'Reviewer removed from process', ".$db->getCurrentDatetime().", '". $user->getID() ."')";
|
||||||
$res=$db->getResult($queryStr);
|
$res=$db->getResult($queryStr);
|
||||||
|
@ -495,9 +502,11 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$approvalStatus = $this->getApprovalStatus();
|
$approvalStatus = $this->getApprovalStatus();
|
||||||
foreach ($approvalStatus["indstatus"] as $ai) {
|
foreach ($approvalStatus["indstatus"] as $ai) {
|
||||||
|
if($ai['status'] != -2 && (!$states || in_array($ai['status'], $states))) {
|
||||||
$queryStr = "INSERT INTO `tblDocumentApproveLog` (`approveID`, `status`, `comment`, `date`, `userID`) ".
|
$queryStr = "INSERT INTO `tblDocumentApproveLog` (`approveID`, `status`, `comment`, `date`, `userID`) ".
|
||||||
"VALUES ('". $ai["approveID"] ."', '-2', 'Approver removed from process', ".$db->getCurrentDatetime().", '". $user->getID() ."')";
|
"VALUES ('". $ai["approveID"] ."', '-2', 'Approver removed from process', ".$db->getCurrentDatetime().", '". $user->getID() ."')";
|
||||||
$res=$db->getResult($queryStr);
|
$res=$db->getResult($queryStr);
|
||||||
|
@ -505,6 +514,7 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
|
@ -515,13 +525,14 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
*
|
*
|
||||||
* @param object $user the user doing the removal (needed for entry in
|
* @param object $user the user doing the removal (needed for entry in
|
||||||
* review and approve log).
|
* review and approve log).
|
||||||
|
* @param array $states remove user only from reviews/approvals in one of the states
|
||||||
* @return boolean true on success or false in case of an error
|
* @return boolean true on success or false in case of an error
|
||||||
*/
|
*/
|
||||||
public function removeFromProcesses($user) { /* {{{ */
|
public function removeFromProcesses($user, $states=array()) { /* {{{ */
|
||||||
$db = $this->_dms->getDB();
|
$db = $this->_dms->getDB();
|
||||||
|
|
||||||
$db->startTransaction();
|
$db->startTransaction();
|
||||||
if(!$this->__removeFromProcesses($user)) {
|
if(!$this->__removeFromProcesses($user, $states)) {
|
||||||
$db->rollbackTransaction();
|
$db->rollbackTransaction();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -923,11 +934,14 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of reviews
|
* Get a list of reviews
|
||||||
* This function returns a list of all reviews seperated by individual
|
*
|
||||||
* and group reviews. If the document id
|
* This function returns a list of all reviews and their latest log entry
|
||||||
|
* seperated by individuals and groups. If the document id
|
||||||
* is passed, then only this document will be checked for reviews. The
|
* is passed, then only this document will be checked for reviews. The
|
||||||
* same is true for the version of a document which limits the list
|
* same is true for the version of a document which limits the list
|
||||||
* further.
|
* further. If you do not limit on a version it will retrieve the status
|
||||||
|
* for each version, that includes even older versions which has been superseded
|
||||||
|
* by a new version.
|
||||||
*
|
*
|
||||||
* For a detailed description of the result array see
|
* For a detailed description of the result array see
|
||||||
* {link SeedDMS_Core_User::getApprovalStatus} which does the same for
|
* {link SeedDMS_Core_User::getApprovalStatus} which does the same for
|
||||||
|
@ -1001,17 +1015,21 @@ class SeedDMS_Core_User { /* {{{ */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of approvals
|
* Get a list of approvals
|
||||||
* This function returns a list of all approvals seperated by individual
|
*
|
||||||
* and group approvals. If the document id
|
* This function returns a list of all approvals and their latest log entry
|
||||||
|
* seperated by individuals and groups. If the document id
|
||||||
* is passed, then only this document will be checked for approvals. The
|
* is passed, then only this document will be checked for approvals. The
|
||||||
* same is true for the version of a document which limits the list
|
* same is true for the version of a document which limits the list
|
||||||
* further.
|
* further. If you do not limit on a version it will retrieve the status
|
||||||
|
* for each version, that includes even older versions which has been superseded
|
||||||
|
* by a new version.
|
||||||
*
|
*
|
||||||
* The result array has two elements:
|
* The result array has two elements:
|
||||||
* - indstatus: which contains the approvals by individuals (users)
|
* - indstatus: which contains the approvals by individuals (users)
|
||||||
* - grpstatus: which contains the approvals by groups
|
* - grpstatus: which contains the approvals by groups
|
||||||
*
|
*
|
||||||
* Each element is itself an array of approvals with the following elements:
|
* Each element is itself an array of approvals with the following elements
|
||||||
|
* (it is a combination of fields from tblDocumentApprovers and tblDocumentApproveLog):
|
||||||
* - approveID: unique id of approval
|
* - approveID: unique id of approval
|
||||||
* - documentID: id of document, that needs to be approved
|
* - documentID: id of document, that needs to be approved
|
||||||
* - version: version of document, that needs to be approved
|
* - version: version of document, that needs to be approved
|
||||||
|
|
Loading…
Reference in New Issue
Block a user