rework getDocumentList()

WorkflowByMe just returns those documents which still need action.
propperly handle $param1 = null
This commit is contained in:
Uwe Steinmann 2020-05-08 07:40:04 +02:00
parent 39a3e0dea3
commit d0259109e1

View File

@ -861,8 +861,8 @@ class SeedDMS_Core_DMS {
* 'AppRevOwner', 'ReceiptByMe', 'ReviseByMe', 'LockedByMe', 'MyDocs'
* @param SeedDMS_Core_User $param1 user
* @param bool $param2 set to true
* if 'AppRevByMe', 'ReviseByMe', 'ReceiptByMe' shall return even documents
* І have already taken care of.
* if 'ReviewByMe', 'ApproveByMe', 'AppRevByMe', 'ReviseByMe', 'ReceiptByMe'
* shall return even documents І have already taken care of.
* @param string $param3 sort list by this field
* @param string $param4 order direction
* @return array|bool
@ -900,7 +900,7 @@ class SeedDMS_Core_DMS {
* It doesn't need the where clause anymore. Hence the statement could be
* extended with further left joins.
*/
$selectStr = "SELECT `tblDocuments`.*, `tblDocumentLocks`.`userID` as `lockUser`, ".
$selectStr = "`tblDocuments`.*, `tblDocumentLocks`.`userID` as `lockUser`, ".
"`tblDocumentContent`.`version`, `tblDocumentStatus`.*, `tblDocumentStatusLog`.`status`, ".
"`tblDocumentStatusLog`.`comment` AS `statusComment`, `tblDocumentStatusLog`.`date` as `statusDate`, ".
"`tblDocumentStatusLog`.`userID`, `oTbl`.`fullName` AS `ownerName`, `sTbl`.`fullName` AS `statusName` ";
@ -975,9 +975,11 @@ class SeedDMS_Core_DMS {
$orderdir = 'ASC';
$groups = array();
$tmp = $user->getGroups();
foreach($tmp as $group)
$groups[] = $group->getID();
if($user) {
$tmp = $user->getGroups();
foreach($tmp as $group)
$groups[] = $group->getID();
}
$selectStr .= ", `tblDocumentReviewLog`.`date` as `duedate` ";
$queryStr .=
@ -986,10 +988,12 @@ class SeedDMS_Core_DMS {
"LEFT JOIN `tblDocumentReviewLog` ON `tblDocumentReviewLog`.`reviewLogID`=`ttreviewid`.`maxLogID` ";
if(1) {
$queryStr .= "WHERE (`tblDocumentReviewers`.`type` = 0 AND `tblDocumentReviewers`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentReviewers`.`type` = 1 AND `tblDocumentReviewers`.`required` IN (".implode(',', $groups).") ";
$queryStr .= ") ";
if($user) {
$queryStr .= "WHERE (`tblDocumentReviewers`.`type` = 0 AND `tblDocumentReviewers`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentReviewers`.`type` = 1 AND `tblDocumentReviewers`.`required` IN (".implode(',', $groups).") ";
$queryStr .= ") ";
}
$queryStr .= "AND `tblDocumentStatusLog`.`status` IN (".S_DRAFT_REV.", ".S_EXPIRED.") ";
if(!$param2)
$queryStr .= " AND `tblDocumentReviewLog`.`status` = 0 ";
@ -1050,9 +1054,11 @@ class SeedDMS_Core_DMS {
$orderdir = 'ASC';
$groups = array();
$tmp = $user->getGroups();
foreach($tmp as $group)
$groups[] = $group->getID();
if($user) {
$tmp = $user->getGroups();
foreach($tmp as $group)
$groups[] = $group->getID();
}
$selectStr .= ", `tblDocumentApproveLog`.`date` as `duedate` ";
$queryStr .=
@ -1061,10 +1067,12 @@ class SeedDMS_Core_DMS {
"LEFT JOIN `tblDocumentApproveLog` ON `tblDocumentApproveLog`.`approveLogID`=`ttapproveid`.`maxLogID` ";
if(1) {
if($user) {
$queryStr .= "WHERE (`tblDocumentApprovers`.`type` = 0 AND `tblDocumentApprovers`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentApprovers`.`type` = 1 AND `tblDocumentApprovers`.`required` IN (".implode(',', $groups).")";
$queryStr .= ") ";
}
$queryStr .= "AND `tblDocumentStatusLog`.`status` IN (".S_DRAFT_APP.", ".S_EXPIRED.") ";
if(!$param2)
$queryStr .= " AND `tblDocumentApproveLog`.`status` = 0 ";
@ -1114,9 +1122,39 @@ class SeedDMS_Core_DMS {
}
break; // }}}
case 'WorkflowByMe': // Documents I to trigger in Worklflow {{{
$queryStr .= "WHERE 1=1 ";
$user = $param1;
$orderby = $param3;
if($param4 == 'desc')
$orderdir = 'DESC';
else
$orderdir = 'ASC';
if(1) {
$groups = array();
if($user) {
$tmp = $user->getGroups();
foreach($tmp as $group)
$groups[] = $group->getID();
}
$selectStr = 'distinct '.$selectStr;
$queryStr .=
"LEFT JOIN `tblWorkflowDocumentContent` on `ttcontentid`.`document`=`tblWorkflowDocumentContent`.`document` AND `ttcontentid`.`maxVersion`=`tblWorkflowDocumentContent`.`version` ".
"LEFT JOIN `tblWorkflowTransitions` on `tblWorkflowDocumentContent`.`workflow`=`tblWorkflowTransitions`.`workflow` AND `tblWorkflowDocumentContent`.`state`=`tblWorkflowTransitions`.`state` ".
"LEFT JOIN `tblWorkflowTransitionUsers` on `tblWorkflowTransitionUsers`.`transition` = `tblWorkflowTransitions`.`id` ".
"LEFT JOIN `tblWorkflowTransitionGroups` on `tblWorkflowTransitionGroups`.`transition` = `tblWorkflowTransitions`.`id` ";
if($user) {
$queryStr .= "WHERE (`tblWorkflowTransitionUsers`.`userid` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblWorkflowTransitionGroups`.`groupid` IN (".implode(',', $groups).")";
$queryStr .= ") ";
}
// echo 'SELECT '.$selectStr." ".$queryStr;
if ($orderby=='e') $queryStr .= "ORDER BY `expires`";
else if ($orderby=='u') $queryStr .= "ORDER BY `statusDate`";
else $queryStr .= "ORDER BY `name`";
} else {
$queryStr .= "WHERE 1=1 ";
// Get document list for the current user.
$workflowStatus = $user->getWorkflowStatus();
@ -1146,6 +1184,7 @@ class SeedDMS_Core_DMS {
} else {
$queryStr = '';
}
}
break; // }}}
case 'AppRevOwner': // Documents waiting for review/approval/revision I'm owning {{{
$queryStr .= "WHERE 1=1 ";
@ -1280,7 +1319,7 @@ class SeedDMS_Core_DMS {
}
if($queryStr) {
$resArr = $this->db->getResultArray($selectStr.$queryStr);
$resArr = $this->db->getResultArray('SELECT '.$selectStr.$queryStr);
if (is_bool($resArr) && !$resArr) {
return false;
}