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'));
?>