16 import(
'lib.pkp.classes.form.Form');
17 import(
'lib.pkp.classes.workflow.WorkflowStageDAO');
33 function __construct($contextId, $userGroupId =
null) {
34 parent::__construct(
'controllers/grid/settings/roles/form/userGroupForm.tpl');
36 $this->_contextId = $contextId;
37 $this->_userGroupId = $userGroupId;
75 return array(
'name',
'abbrev');
85 $this->
setData(
'stages', $stages);
86 $this->
setData(
'assignedStages', array());
89 import(
'lib.pkp.classes.core.JSONMessage');
91 $jsonMessage->setContent($roleDao->getForbiddenStages());
92 $this->
setData(
'roleForbiddenStagesJSON', $jsonMessage->getString());
95 $assignedStages = $userGroupDao->getAssignedStagesByUserGroupId($this->
getContextId(), $userGroup->getId());
98 'userGroupId' => $userGroup->getId(),
99 'roleId' => $userGroup->getRoleId(),
100 'name' => $userGroup->getName(
null),
101 'abbrev' => $userGroup->getAbbrev(
null),
102 'assignedStages' => array_keys($assignedStages),
103 'showTitle' => $userGroup->getShowTitle(),
104 'permitSelfRegistration' => $userGroup->getPermitSelfRegistration(),
105 'permitMetadataEdit' => $userGroup->getPermitMetadataEdit(),
106 'recommendOnly' => $userGroup->getRecommendOnly(),
109 foreach ($data as $field => $value) {
110 $this->
setData($field, $value);
119 $this->
readUserVars(array(
'roleId',
'name',
'abbrev',
'assignedStages',
'showTitle',
'permitSelfRegistration',
'recommendOnly',
'permitMetadataEdit'));
125 function fetch($request, $template =
null, $display =
false) {
133 $disableRoleSelect = ($this->
getUserGroupId() > 0) ?
true :
false;
134 $templateMgr->assign(
'disableRoleSelect', $disableRoleSelect);
139 return parent::fetch($request, $template, $display);
147 return array(ROLE_ID_REVIEWER, ROLE_ID_AUTHOR, ROLE_ID_READER);
155 return array(ROLE_ID_MANAGER, ROLE_ID_SUB_EDITOR);
161 function execute(...$functionParams) {
162 parent::execute(...$functionParams);
170 if ($userGroupId ==
null) {
171 $userGroup = $userGroupDao->newDataObject();
172 $userGroup->setRoleId($this->
getData(
'roleId'));
174 $userGroup->setDefault(
false);
175 $userGroup->setShowTitle($this->
getData(
'showTitle'));
176 $userGroup->setPermitSelfRegistration($this->
getData(
'permitSelfRegistration') && in_array($userGroup->getRoleId(), $this->getPermitSelfRegistrationRoles()));
179 $userGroup->setPermitMetadataEdit(
true);
182 $userGroup->setRecommendOnly($this->
getData(
'recommendOnly') && in_array($userGroup->getRoleId(), $this->getRecommendOnlyRoles()));
185 $userGroupId = $userGroupDao->insertObject($userGroup);
187 $userGroup = $userGroupDao->getById($userGroupId);
189 $userGroup->setShowTitle($this->
getData(
'showTitle'));
190 $userGroup->setPermitSelfRegistration($this->
getData(
'permitSelfRegistration') && in_array($userGroup->getRoleId(), $this->getPermitSelfRegistrationRoles()));
193 $userGroup->setPermitMetadataEdit(
true);
196 $allUserAssignments = $stageAssignmentDao
198 ->toAssociativeArray();
200 foreach($allUserAssignments as $userAssignment) {
201 $userAssignment->setCanChangeMetadata($userGroup->getPermitMetadataEdit());
202 $stageAssignmentDao->updateObject($userAssignment);
206 $userGroup->setRecommendOnly($this->
getData(
'recommendOnly') && in_array($userGroup->getRoleId(), $this->getRecommendOnlyRoles()));
208 $userGroupDao->updateObject($userGroup);
212 $assignedStages = $this->
getData(
'assignedStages');
215 if ($assignedStages) {
236 foreach (array_keys($stages) as $stageId) {
237 $userGroupDao->removeGroupFromStage($contextId, $userGroupId, $stageId);
240 foreach ($userAssignedStages as $stageId) {
244 $roleId = $this->
getData(
'roleId');
246 $forbiddenStages = $roleDao->getForbiddenStages($roleId);
247 if (in_array($stageId, $forbiddenStages) && !in_array($roleId, $roleDao->getAlwaysActiveStages())) {
252 if (in_array($stageId, array_keys($stages))) {
253 $userGroupDao->assignGroupToStage($contextId, $userGroupId, $stageId);
267 $router = $request->getRouter();
268 $context = $router->getContext($request);
272 foreach ($context->getSupportedLocaleNames() as $localeKey => $localeName) {
273 $name = $this->
getData(
'name');
274 $abbrev = $this->
getData(
'abbrev');
275 if (isset($name[$localeKey])) $userGroup->setName($name[$localeKey], $localeKey);
276 if (isset($abbrev[$localeKey])) $userGroup->setAbbrev($abbrev[$localeKey], $localeKey);
280 $userGroup->setName($this->
getData(
'name'), $localeKey);
281 $userGroup->setAbbrev($this->
getData(
'abbrev'), $localeKey);