mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-03-12 00:45:34 +00:00
if documents are paѕsed to __removeFromProcesses(), only the latest version will be updated
This commit is contained in:
parent
05092f6943
commit
70114bbd30
|
@ -692,10 +692,11 @@ class SeedDMS_Core_User { /* {{{ */
|
|||
* @param array $states remove user only from reviews/approvals in one of the states
|
||||
* e.g. if passing array('review'=>array(0)), the method will operate on
|
||||
* reviews which has not been touched yet.
|
||||
* @param object user who takes over the processes
|
||||
* @param object $newuser user who takes over the processes
|
||||
* @param array $docs remove only processes from docs with the given document ids
|
||||
* @return boolean true on success or false in case of an error
|
||||
*/
|
||||
private function __removeFromProcesses($user, $states = array(), $newuser=null) { /* {{{ */
|
||||
private function __removeFromProcesses($user, $states = array(), $newuser=null, $docs=null) { /* {{{ */
|
||||
$db = $this->_dms->getDB();
|
||||
|
||||
/* Get a list of all reviews, even those of older document versions */
|
||||
|
@ -704,6 +705,12 @@ class SeedDMS_Core_User { /* {{{ */
|
|||
foreach ($reviewStatus["indstatus"] as $ri) {
|
||||
if(!($doc = $this->_dms->getDocument($ri['documentID'])))
|
||||
continue;
|
||||
if($docs) {
|
||||
if(!in_array($doc->getID(), $docs))
|
||||
continue;
|
||||
if(!$doc->isLatestContent($ri['version']))
|
||||
continue;
|
||||
}
|
||||
if($newuser && $doc->getAccessMode($newuser) < M_READ)
|
||||
continue;
|
||||
if($ri['status'] != -2 && (!isset($states['review']) || in_array($ri['status'], $states['review']))) {
|
||||
|
@ -716,14 +723,12 @@ class SeedDMS_Core_User { /* {{{ */
|
|||
}
|
||||
/* Only reviews not done already can be transferred to a new user */
|
||||
if($newuser && $ri['status'] == 0) {
|
||||
if($doc = $this->_dms->getDocument($ri['documentID'])) {
|
||||
if($version = $doc->getContentByVersion($ri['version'])) {
|
||||
$ret = $version->addIndReviewer($newuser, $user);
|
||||
/* returns -3 if the user is already a reviewer */
|
||||
if($ret === false || ($ret < 0 && $ret != -3)) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
if($version = $doc->getContentByVersion($ri['version'])) {
|
||||
$ret = $version->addIndReviewer($newuser, $user);
|
||||
/* returns -3 if the user is already a reviewer */
|
||||
if($ret === false || ($ret < 0 && $ret != -3)) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -737,6 +742,12 @@ class SeedDMS_Core_User { /* {{{ */
|
|||
foreach ($approvalStatus["indstatus"] as $ai) {
|
||||
if(!($doc = $this->_dms->getDocument($ai['documentID'])))
|
||||
continue;
|
||||
if($docs) {
|
||||
if(!in_array($doc->getID(), $docs))
|
||||
continue;
|
||||
if(!$doc->isLatestContent($ai['version']))
|
||||
continue;
|
||||
}
|
||||
if($newuser && $doc->getAccessMode($newuser) < M_READ)
|
||||
continue;
|
||||
if($ai['status'] != -2 && (!isset($states['approval']) || in_array($ai['status'], $states['approval']))) {
|
||||
|
@ -749,14 +760,12 @@ class SeedDMS_Core_User { /* {{{ */
|
|||
}
|
||||
/* Only approvals not done already can be transferred to a new user */
|
||||
if($newuser && $ai['status'] == 0) {
|
||||
if($doc = $this->_dms->getDocument($ai['documentID'])) {
|
||||
if($version = $doc->getContentByVersion($ai['version'])) {
|
||||
$ret = $version->addIndReviewer($newuser, $user);
|
||||
/* returns -3 if the user is already a reviewer */
|
||||
if($ret === false || ($ret < 0 && $ret != -3)) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
if($version = $doc->getContentByVersion($ai['version'])) {
|
||||
$ret = $version->addIndReviewer($newuser, $user);
|
||||
/* returns -3 if the user is already a reviewer */
|
||||
if($ret === false || ($ret < 0 && $ret != -3)) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -775,14 +784,14 @@ class SeedDMS_Core_User { /* {{{ */
|
|||
* @param object $user the user doing the removal (needed for entry in
|
||||
* review and approve log).
|
||||
* @param array $states remove user only from reviews/approvals in one of the states
|
||||
* @param object user who takes over the processes
|
||||
* @param object $newuser user who takes over the processes
|
||||
* @return boolean true on success or false in case of an error
|
||||
*/
|
||||
public function removeFromProcesses($user, $states=array(), $newuser=null) { /* {{{ */
|
||||
public function removeFromProcesses($user, $states=array(), $newuser=null, $docs=null) { /* {{{ */
|
||||
$db = $this->_dms->getDB();
|
||||
|
||||
$db->startTransaction();
|
||||
if(!$this->__removeFromProcesses($user, $states, $newuser)) {
|
||||
if(!$this->__removeFromProcesses($user, $states, $newuser, $docs)) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user