UserFormHelper::saveRoleContent PHP Method

saveRoleContent() public method

Save role elements of an executed user form.
public saveRoleContent ( $form, $user )
$form Form The form from which to fetch elements
$user User The current user
    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());
                    }
                }
            }
        }
    }

Usage Example

 /**
  * 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);
 }
All Usage Examples Of UserFormHelper::saveRoleContent