function saveRoleContent($form, $user) { $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); $contextDao = Application::getContextDAO(); $contexts = $contextDao->getAll(true); while ($context = $contexts->next()) { foreach (array(array('roleId' => ROLE_ID_REVIEWER, 'formElement' => 'reviewerGroup'), array('roleId' => ROLE_ID_AUTHOR, 'formElement' => 'authorGroup'), array('roleId' => ROLE_ID_READER, 'formElement' => 'readerGroup')) as $groupData) { $groupFormData = (array) $form->getData($groupData['formElement']); $userGroups = $userGroupDao->getByRoleId($context->getId(), $groupData['roleId']); while ($userGroup = $userGroups->next()) { if (!$userGroup->getPermitSelfRegistration()) { continue; } $groupId = $userGroup->getId(); $inGroup = $userGroupDao->userInGroup($user->getId(), $groupId); if (!$inGroup && array_key_exists($groupId, $groupFormData)) { $userGroupDao->assignUserToGroup($user->getId(), $groupId, $context->getId()); } elseif ($inGroup && !array_key_exists($groupId, $groupFormData)) { $userGroupDao->removeUserFromGroup($user->getId(), $groupId, $context->getId()); } } } } }
/** * Save roles settings. * @param $request PKPRequest */ function execute($request) { $user = $request->getUser(); // Save the roles import('lib.pkp.classes.user.form.UserFormHelper'); $userFormHelper = new UserFormHelper(); $userFormHelper->saveRoleContent($this, $user); // Insert the user interests import('lib.pkp.classes.user.InterestManager'); $interestManager = new InterestManager(); $interestManager->setInterestsForUser($user, $this->getData('interests')); parent::execute($request, $user); }