17 import(
'lib.pkp.classes.security.authorization.AuthorizationPolicy');
27 private $_allowRecommendOnly;
38 function __construct($roleIds, $stageId =
null, $allowRecommendOnly =
true) {
40 parent::__construct(
'user.authorization.accessibleWorkflowStage');
41 $this->_roleIds = $roleIds;
42 $this->_stageId = $stageId;
43 $this->_allowRecommendOnly = $allowRecommendOnly;
55 if (!$this->_stageId) {
62 if (array_key_exists($this->_stageId, $userAccessibleStages) && array_intersect($this->_roleIds, $userAccessibleStages[$this->_stageId])) {
63 if ($this->_allowRecommendOnly) {
64 return AUTHORIZATION_PERMIT;
67 $result = $stageAssignmentDao->getBySubmissionAndUserIdAndStageId(
72 while (!$result->eof()) {
73 $stageAssignment = $result->next();
75 $userGroup = $userGroupDao->getById($stageAssignment->getUserGroupId());
76 if (in_array($userGroup->getRoleId(), $this->_roleIds) && !$stageAssignment->getRecommendOnly()) {
77 return AUTHORIZATION_PERMIT;
84 if ($this->_allowRecommendOnly) {
85 return AUTHORIZATION_PERMIT;
90 $result = $stageAssignmentDao->getBySubmissionAndUserIdAndStageId(
95 if ($result->wasEmpty()) {
96 return AUTHORIZATION_PERMIT;
98 while (!$result->eof()) {
99 $stageAssignment = $result->next();
101 $userGroup = $userGroupDao->getById($stageAssignment->getUserGroupId());
102 if ($userGroup->getRoleId() == ROLE_ID_MANAGER && !$stageAssignment->getRecommendOnly()) {
103 return AUTHORIZATION_PERMIT;
108 return AUTHORIZATION_DENY;