diff --git a/op/op.CheckInDocument.php b/op/op.CheckInDocument.php index 6b2039e31..729c769b3 100644 --- a/op/op.CheckInDocument.php +++ b/op/op.CheckInDocument.php @@ -144,10 +144,14 @@ else $mreviewers = getMandatoryReviewers($folder, $user); if($mreviewers['i']) $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); + if($mreviewers['g']) + $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); } $mapprovers = getMandatoryApprovers($folder, $user); if($mapprovers['i']) $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); + if($mapprovers['g']) + $approvers['g'] = array_merge($approvers['g'], $mapprovers['g']); if($settings->_workflowMode == 'traditional' && !$settings->_allowReviewerOnly) { /* Check if reviewers are send but no approvers */ @@ -156,11 +160,19 @@ else } } } elseif($settings->_workflowMode == 'advanced') { - if(!$workflow = $user->getMandatoryWorkflow()) { + if(!$workflows = $user->getMandatoryWorkflows()) { if(isset($_POST["workflow"])) $workflow = $dms->getWorkflow($_POST["workflow"]); else $workflow = null; + } else { + /* If there is excactly 1 mandatory workflow, then set no matter what has + * been posted in 'workflow', otherwise check if the posted workflow is in the + * list of mandatory workflows. If not, then take the first one. + */ + $workflow = array_shift($workflows); + foreach($workflows as $mw) + if($mw->getID() == $_POST['workflow']) {$workflow = $mw; break;} } } diff --git a/views/bootstrap/class.CheckInDocument.php b/views/bootstrap/class.CheckInDocument.php index f2c50b693..189be994f 100644 --- a/views/bootstrap/class.CheckInDocument.php +++ b/views/bootstrap/class.CheckInDocument.php @@ -272,28 +272,27 @@ $(document).ready(function() { $this->warningMsg(getMLText("add_doc_workflow_warning")); } elseif($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { if($workflowmode == 'traditional') { + $this->contentContainerEnd(); $this->contentSubHeading(getMLText("assign_reviewers")); - $res=$user->getMandatoryReviewers(); + $this->contentContainerStart(); + + $mreviewers = getMandatoryReviewers($folder, $document, $user); + $options = array(); foreach ($docAccess["users"] as $usr) { - if (!$enableselfrevapp && $usr->getID()==$user->getID()) continue; - $mandatory=false; - foreach ($res as $r) if ($r['reviewerUserID']==$usr->getID()) $mandatory=true; + if(!$enablehiddenrevapp && $usr->isHidden()) continue; + if(!$enableselfrevapp && $usr->getID()==$user->getID()) continue; $option = array($usr->getID(), htmlspecialchars($usr->getLogin()." - ".$usr->getFullName()), null); - if ($mandatory) $option[] = array(array('disabled', 'disabled')); + if(in_array($usr->getId(), $mreviewers['i'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_reviewer'))); $options[] = $option; } $tmp = array(); foreach($reviewStatus as $r) { if($r['type'] == 0) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['reviewerUserID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) + if($mreviewers) { + if(!in_array($r['required'], $mreviewers['i'])) $tmp[] = $r['required']; } else { $tmp[] = $r['required']; @@ -305,20 +304,17 @@ $(document).ready(function() { $fieldwrap = array('', $this->getSelectPresetButtonHtml("IndReviewers", $tmp)); } /* List all mandatory reviewers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['reviewerUserID'] > 0) { - $u = $dms->getUser($r['reviewerUserID']); - $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); - } - } - if($tmp) { - if(isset($fieldwrap[1])) - $fieldwrap[1] .= '
'.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
\n"; - else - $fieldwrap[1] = '
'.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
\n"; - } + $tmp = array(); + foreach ($mreviewers['i'] as $r) { + $u = $dms->getUser($r); + $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); + } + + if($tmp) { + if(isset($fieldwrap[1])) + $fieldwrap[1] .= '
'.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
\n"; + else + $fieldwrap[1] = '
'.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
\n"; } $this->formField( @@ -336,17 +332,15 @@ $(document).ready(function() { ); /* Check for mandatory reviewer without access */ - foreach($res as $r) { - if($r['reviewerUserID']) { - $hasAccess = false; - foreach ($docAccess["users"] as $usr) { - if ($r['reviewerUserID']==$usr->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessUser = $dms->getUser($r['reviewerUserID']); - $this->warningMsg(getMLText("mandatory_reviewer_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); - } + foreach($mreviewers['ni'] as $r) { + $hasAccess = false; + foreach ($docAccess["users"] as $usr) { + if ($r == $usr->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessUser = $dms->getUser($r); + $this->warningMsg(getMLText("mandatory_reviewer_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); } } @@ -369,24 +363,17 @@ $(document).ready(function() { $options = array(); foreach ($docAccess["groups"] as $grp) { - - $mandatory=false; - foreach ($res as $r) if ($r['reviewerGroupID']==$grp->getID()) $mandatory=true; - $option = array($grp->getID(), htmlspecialchars($grp->getName()), null); - if ($mandatory || !$grp->getUsers()) $option[] = array(array('disabled', 'disabled')); + if(in_array($grp->getId(), $mreviewers['g']) || !$grp->getUsers()) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_reviewer'))); $options[] = $option; } + $tmp = array(); foreach($reviewStatus as $r) { if($r['type'] == 1) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['reviewerGroupID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) + if($mreviewers) { + if(!in_array($r['required'], $mreviewers['g'])) $tmp[] = $r['required']; } else { $tmp[] = $r['required']; @@ -398,18 +385,18 @@ $(document).ready(function() { $fieldwrap = array('', $this->getSelectPresetButtonHtml("GrpReviewers", $tmp)); } /* List all mandatory groups of reviewers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['reviewerGroupID'] > 0) { - $u = $dms->getGroup($r['reviewerGroupID']); - $tmp[] = htmlspecialchars($u->getName()); - } - } - if($tmp) { - $fieldwrap[1] .= '
'.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
\n"; - } + $tmp = array(); + foreach ($mreviewers['g'] as $r) { + $u = $dms->getGroup($r); + $tmp[] = htmlspecialchars($u->getName()); } + if($tmp) { + if(isset($fieldwrap[1])) + $fieldwrap[1] .= '
'.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
\n"; + else + $fieldwrap[1] = '
'.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
\n"; + } + $this->formField( getMLText("groups"), array( @@ -425,44 +412,41 @@ $(document).ready(function() { ); /* Check for mandatory reviewer group without access */ - foreach($res as $r) { - if ($r['reviewerGroupID']) { - $hasAccess = false; - foreach ($docAccess["groups"] as $grp) { - if ($r['reviewerGroupID']==$grp->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessGroup = $dms->getGroup($r['reviewerGroupID']); - $this->warningMsg(getMLText("mandatory_reviewergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); - } + foreach($mreviewers['ng'] as $r) { + $hasAccess = false; + foreach ($docAccess["groups"] as $grp) { + if ($r == $grp->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessGroup = $dms->getGroup($r['reviewerGroupID']); + $this->warningMsg(getMLText("mandatory_reviewergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); } } + $this->contentContainerEnd(); } $this->contentSubHeading(getMLText("assign_approvers")); - $options = array(); - $res=$user->getMandatoryApprovers(); - foreach ($docAccess["users"] as $usr) { - if (!$enableselfrevapp && $usr->getID()==$user->getID()) continue; + $this->contentContainerStart(); + + $mapprovers = getMandatoryApprovers($folder, $document, $user); + + $options = array(); + foreach ($docAccess["users"] as $usr) { + if(!$enablehiddenrevapp && $usr->isHidden()) continue; + if(!$enableselfrevapp && $usr->getID()==$user->getID()) continue; - $mandatory=false; - foreach ($res as $r) if ($r['approverUserID']==$usr->getID()) $mandatory=true; - $option = array($usr->getID(), htmlspecialchars($usr->getLogin()." - ".$usr->getFullName()), null); - if ($mandatory) $option[] = array(array('disabled', 'disabled')); + if(in_array($usr->getId(), $mapprovers['i'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_approver'))); $options[] = $option; } + $tmp = array(); foreach($approvalStatus as $r) { if($r['type'] == 0) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['approverUserID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) + if($mapprovers) { + if(!in_array($r['required'], $mapprovers['i'])) $tmp[] = $r['required']; } else { $tmp[] = $r['required']; @@ -473,18 +457,18 @@ $(document).ready(function() { if($tmp) { $fieldwrap = array('', $this->getSelectPresetButtonHtml("IndApprovers", $tmp)); } + /* List all mandatory approvers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['approverUserID'] > 0) { - $u = $dms->getUser($r['approverUserID']); - $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); - } - } - if($tmp) { + $tmp = array(); + foreach ($mapprovers['i'] as $r) { + $u = $dms->getUser($r); + $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); + } + if($tmp) { + if(isset($fieldwrap[1])) $fieldwrap[1] .= '
'.getMLText('mandatory_approvers').': '.implode(', ', $tmp)."
\n"; - } + else + $fieldwrap[1] = '
'.getMLText('mandatory_approvers').': '.implode(', ', $tmp)."
\n"; } $this->formField( @@ -502,18 +486,16 @@ $(document).ready(function() { ); /* Check for mandatory approvers without access */ - foreach($res as $r) { - if($r['approverUserID']) { + foreach($mapprovers['ni'] as $r) { $hasAccess = false; foreach ($docAccess["users"] as $usr) { - if ($r['approverUserID']==$usr->getID()) + if ($r == $usr->getID()) $hasAccess = true; } if(!$hasAccess) { - $noAccessUser = $dms->getUser($r['approverUserID']); + $noAccessUser = $dms->getUser($r); $this->warningMsg(getMLText("mandatory_approver_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); } - } } $options = array(); @@ -536,28 +518,18 @@ $(document).ready(function() { $options = array(); foreach ($docAccess["groups"] as $grp) { - $mandatory=false; - foreach ($res as $r) if ($r['approverGroupID']==$grp->getID()) $mandatory=true; - $option = array($grp->getID(), htmlspecialchars($grp->getName()), null); - if ($mandatory || !$grp->getUsers()) $option[] = array(array('disabled', 'disabled')); - + if(in_array($grp->getId(), $mapprovers['g'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_approver'))); $options[] = $option; } $tmp = array(); foreach($approvalStatus as $r) { if($r['type'] == 1) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['approverGroupID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) - $tmp[] = $r['required']; - } else { + if(!in_array($r['required'], $mapprovers['g'])) $tmp[] = $r['required']; - } + } else { + $tmp[] = $r['required']; } } $fieldwrap = array('', ''); @@ -565,17 +537,13 @@ $(document).ready(function() { $fieldwrap = array('', $this->getSelectPresetButtonHtml("GrpApprovers", $tmp)); } /* List all mandatory groups of approvers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['approverGroupID'] > 0) { - $u = $dms->getGroup($r['approverGroupID']); - $tmp[] = htmlspecialchars($u->getName()); - } - } - if($tmp) { - $fieldwrap[1] .= '
'.getMLText('mandatory_approvergroups').': '.implode(', ', $tmp)."
\n"; - } + $tmp = array(); + foreach ($mapprovers['g'] as $r) { + $u = $dms->getGroup($r); + $tmp[] = htmlspecialchars($u->getName()); + } + if($tmp) { + $fieldwrap[1] .= '
'.getMLText('mandatory_approvergroups').': '.implode(', ', $tmp)."
\n"; } $this->formField( @@ -593,22 +561,25 @@ $(document).ready(function() { ); /* Check for mandatory approver groups without access */ - foreach($res as $r) { - if ($r['approverGroupID']) { - $hasAccess = false; - foreach ($docAccess["groups"] as $grp) { - if ($r['approverGroupID']==$grp->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessGroup = $dms->getGroup($r['approverGroupID']); - $this->warningMsg(getMLText("mandatory_approvergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); - } + foreach($mapprovers['ng'] as $r) { + $hasAccess = false; + foreach ($docAccess["groups"] as $grp) { + if ($r == $grp->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessGroup = $dms->getGroup($r); + $this->warningMsg(getMLText("mandatory_approvergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); } } + $this->contentContainerEnd(); $this->warningMsg(getMLText("add_doc_reviewer_approver_warning")); + } else { + $this->contentContainerEnd(); } if($enablereceiptworkflow) { + $this->contentSubHeading(getMLText("assign_recipients")); + $this->contentContainerStart(); $options = array(); foreach ($docAccess["users"] as $usr) { if (!$enableselfreceipt && $usr->getID()==$user->getID()) continue; @@ -683,8 +654,8 @@ $(document).ready(function() { array('field_wrap'=>$fieldwrap) ); + $this->contentContainerEnd(); } - $this->contentContainerEnd(); $this->formSubmit(getMLText('checkin_document')); ?>