00001 <?php
00015 import('classes.security.authorization.internal.PressPolicy');
00016
00017 class OmpSubmissionAccessPolicy extends PressPolicy {
00026 function OmpSubmissionAccessPolicy(&$request, $args, $roleAssignments, $submissionParameterName = 'monographId') {
00027 parent::PressPolicy($request);
00028
00029
00030 import('classes.security.authorization.internal.MonographRequiredPolicy');
00031 $this->addPolicy(new MonographRequiredPolicy($request, $args, $submissionParameterName));
00032
00033
00034
00035
00036 $submissionAccessPolicy = new PolicySet(COMBINING_PERMIT_OVERRIDES);
00037
00038
00039
00040
00041
00042 if (isset($roleAssignments[ROLE_ID_PRESS_MANAGER])) {
00043
00044 $submissionAccessPolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, ROLE_ID_PRESS_MANAGER, $roleAssignments[ROLE_ID_PRESS_MANAGER]));
00045 }
00046
00047
00048
00049
00050
00051 if (isset($roleAssignments[ROLE_ID_SERIES_EDITOR])) {
00052
00053 $seriesEditorSubmissionAccessPolicy = new PolicySet(COMBINING_DENY_OVERRIDES);
00054 $seriesEditorSubmissionAccessPolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, ROLE_ID_SERIES_EDITOR, $roleAssignments[ROLE_ID_SERIES_EDITOR]));
00055
00056
00057 import('classes.security.authorization.internal.SeriesAssignmentPolicy');
00058 $seriesEditorSubmissionAccessPolicy->addPolicy(new SeriesAssignmentPolicy($request));
00059 $submissionAccessPolicy->addPolicy($seriesEditorSubmissionAccessPolicy);
00060 }
00061
00062
00063
00064
00065
00066 if (isset($roleAssignments[ROLE_ID_AUTHOR])) {
00067
00068 $authorSubmissionAccessPolicy = new PolicySet(COMBINING_DENY_OVERRIDES);
00069 $authorSubmissionAccessPolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, ROLE_ID_AUTHOR, $roleAssignments[ROLE_ID_AUTHOR], 'user.authorization.authorRoleMissing'));
00070
00071
00072 $authorSubmissionAccessOptionsPolicy = new PolicySet(COMBINING_PERMIT_OVERRIDES);
00073
00074
00075 import('classes.security.authorization.internal.MonographAuthorPolicy');
00076 $authorSubmissionAccessOptionsPolicy->addPolicy(new MonographAuthorPolicy($request));
00077
00078
00079 import('classes.security.authorization.internal.UserAccessibleWorkflowStageRequiredPolicy');
00080 $authorSubmissionAccessOptionsPolicy->addPolicy(new UserAccessibleWorkflowStageRequiredPolicy($request));
00081
00082 $authorSubmissionAccessPolicy->addPolicy($authorSubmissionAccessOptionsPolicy);
00083 $submissionAccessPolicy->addPolicy($authorSubmissionAccessPolicy);
00084 }
00085
00086
00087
00088
00089
00090 if (isset($roleAssignments[ROLE_ID_REVIEWER])) {
00091
00092 $reviewerSubmissionAccessPolicy = new PolicySet(COMBINING_DENY_OVERRIDES);
00093 $reviewerSubmissionAccessPolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, ROLE_ID_REVIEWER, $roleAssignments[ROLE_ID_REVIEWER]));
00094
00095
00096 import('classes.security.authorization.internal.ReviewAssignmentAccessPolicy');
00097 $reviewerSubmissionAccessPolicy->addPolicy(new ReviewAssignmentAccessPolicy($request));
00098 $submissionAccessPolicy->addPolicy($reviewerSubmissionAccessPolicy);
00099 }
00100
00101
00102
00103
00104 if (isset($roleAssignments[ROLE_ID_PRESS_ASSISTANT])) {
00105
00106 $pressSubmissionAccessPolicy = new PolicySet(COMBINING_DENY_OVERRIDES);
00107 $pressSubmissionAccessPolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, ROLE_ID_PRESS_ASSISTANT, $roleAssignments[ROLE_ID_PRESS_ASSISTANT]));
00108
00109
00110 import('classes.security.authorization.internal.UserAccessibleWorkflowStageRequiredPolicy');
00111 $pressSubmissionAccessPolicy->addPolicy(new UserAccessibleWorkflowStageRequiredPolicy($request));
00112 $submissionAccessPolicy->addPolicy($pressSubmissionAccessPolicy);
00113 }
00114
00115 $this->addPolicy($submissionAccessPolicy);
00116 }
00117 }
00118
00119 ?>