/**
  * Constructor
  * @param $request PKPRequest
  * @param $args array request parameters
  * @param $roleAssignments array
  * @param $submissionParameterName string the request parameter we
  *  expect the submission id in.
  */
 function SubmissionAccessPolicy($request, $args, $roleAssignments, $submissionParameterName = 'submissionId')
 {
     parent::PKPSubmissionAccessPolicy($request, $args, $roleAssignments, $submissionParameterName);
     $submissionAccessPolicy = $this->_baseSubmissionAccessPolicy;
     //
     // Series editor role
     //
     if (isset($roleAssignments[ROLE_ID_SUB_EDITOR])) {
         // 1) Series editors can access all operations on submissions ...
         $subEditorSubmissionAccessPolicy = new PolicySet(COMBINING_DENY_OVERRIDES);
         $subEditorSubmissionAccessPolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, ROLE_ID_SUB_EDITOR, $roleAssignments[ROLE_ID_SUB_EDITOR]));
         // 2) ... but only if the requested submission is part of their series.
         import('classes.security.authorization.internal.SectionAssignmentPolicy');
         $subEditorSubmissionAccessPolicy->addPolicy(new SectionAssignmentPolicy($request));
         $submissionAccessPolicy->addPolicy($subEditorSubmissionAccessPolicy);
     }
     $this->addPolicy($submissionAccessPolicy);
 }
 /**
  * Constructor
  * @param $request PKPRequest
  * @param $args array request parameters
  * @param $roleAssignments array
  * @param $submissionParameterName string the request parameter we
  *  expect the submission id in.
  */
 function SubmissionAccessPolicy($request, $args, $roleAssignments, $submissionParameterName = 'submissionId')
 {
     parent::PKPSubmissionAccessPolicy($request, $args, $roleAssignments, $submissionParameterName);
     $submissionAccessPolicy = $this->_baseSubmissionAccessPolicy;
     //
     // Series editor role
     //
     if (isset($roleAssignments[ROLE_ID_SUB_EDITOR])) {
         // 1) Series editors can access all operations on submissions ...
         $subEditorSubmissionAccessPolicy = new PolicySet(COMBINING_DENY_OVERRIDES);
         $subEditorSubmissionAccessPolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, ROLE_ID_SUB_EDITOR, $roleAssignments[ROLE_ID_SUB_EDITOR]));
         // but only if ...
         $subEditorAssignmentOrSeriesPolicy = new PolicySet(COMBINING_PERMIT_OVERRIDES);
         // 2a) ... the requested submission is part of their series ...
         import('classes.security.authorization.internal.SeriesAssignmentPolicy');
         $subEditorAssignmentOrSeriesPolicy->addPolicy(new SeriesAssignmentPolicy($request));
         // 2b) ... or they have been assigned to the requested submission.
         import('classes.security.authorization.internal.UserAccessibleWorkflowStageRequiredPolicy');
         $subEditorAssignmentOrSeriesPolicy->addPolicy(new UserAccessibleWorkflowStageRequiredPolicy($request));
         $subEditorSubmissionAccessPolicy->addPolicy($subEditorAssignmentOrSeriesPolicy);
         $submissionAccessPolicy->addPolicy($subEditorSubmissionAccessPolicy);
     }
     $this->addPolicy($submissionAccessPolicy);
 }