mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-05-11 12:11:19 +00:00
take all mandatory reviewers/approvers into account
This commit is contained in:
parent
f4003f72e9
commit
a0b3d9da27
|
@ -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;}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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] .= '<div class="mandatories"><span>'.getMLText('mandatory_reviewers').':</span> '.implode(', ', $tmp)."</div>\n";
|
||||
else
|
||||
$fieldwrap[1] = '<div class="mandatories"><span>'.getMLText('mandatory_reviewers').':</span> '.implode(', ', $tmp)."</div>\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] .= '<div class="mandatories"><span>'.getMLText('mandatory_reviewers').':</span> '.implode(', ', $tmp)."</div>\n";
|
||||
else
|
||||
$fieldwrap[1] = '<div class="mandatories"><span>'.getMLText('mandatory_reviewers').':</span> '.implode(', ', $tmp)."</div>\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] .= '<div class="mandatories"><span>'.getMLText('mandatory_reviewergroups').':</span> '.implode(', ', $tmp)."</div>\n";
|
||||
}
|
||||
$tmp = array();
|
||||
foreach ($mreviewers['g'] as $r) {
|
||||
$u = $dms->getGroup($r);
|
||||
$tmp[] = htmlspecialchars($u->getName());
|
||||
}
|
||||
if($tmp) {
|
||||
if(isset($fieldwrap[1]))
|
||||
$fieldwrap[1] .= '<div class="mandatories"><span>'.getMLText('mandatory_reviewergroups').':</span> '.implode(', ', $tmp)."</div>\n";
|
||||
else
|
||||
$fieldwrap[1] = '<div class="mandatories"><span>'.getMLText('mandatory_reviewergroups').':</span> '.implode(', ', $tmp)."</div>\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] .= '<div class="mandatories"><span>'.getMLText('mandatory_approvers').':</span> '.implode(', ', $tmp)."</div>\n";
|
||||
}
|
||||
else
|
||||
$fieldwrap[1] = '<div class="mandatories"><span>'.getMLText('mandatory_approvers').':</span> '.implode(', ', $tmp)."</div>\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] .= '<div class="mandatories"><span>'.getMLText('mandatory_approvergroups').':</span> '.implode(', ', $tmp)."</div>\n";
|
||||
}
|
||||
$tmp = array();
|
||||
foreach ($mapprovers['g'] as $r) {
|
||||
$u = $dms->getGroup($r);
|
||||
$tmp[] = htmlspecialchars($u->getName());
|
||||
}
|
||||
if($tmp) {
|
||||
$fieldwrap[1] .= '<div class="mandatories"><span>'.getMLText('mandatory_approvergroups').':</span> '.implode(', ', $tmp)."</div>\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'));
|
||||
?>
|
||||
</form>
|
||||
|
|
Loading…
Reference in New Issue
Block a user