Open Journal Systems  3.3.0
UserFormHelper.inc.php
1 <?php
2 
20  function __construct() {
21  }
22 
28  function assignRoleContent($templateMgr, $request) {
29  // Need the count in order to determine whether to display
30  // extras-on-demand for role selection in other contexts.
31  $contextDao = Application::getContextDAO();
32  $contexts = $contextDao->getAll(true)->toArray();
33  $contextsWithUserRegistration = array();
34  foreach ($contexts as $context) {
35  if (!$context->getData('disableUserReg')) {
36  $contextsWithUserRegistration[] = $context;
37  }
38  }
39  $templateMgr->assign(array(
40  'contexts' => $contexts,
41  'showOtherContexts' => !$request->getContext() || count($contextsWithUserRegistration)>1,
42  ));
43 
44  // Expose potential self-registration user groups to template
45  $authorUserGroups = $reviewerUserGroups = $readerUserGroups = array();
46  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
47  foreach ($contexts as $context) {
48  if ($context->getData('disableUserReg')) continue;
49  $reviewerUserGroups[$context->getId()] = $userGroupDao->getByRoleId($context->getId(), ROLE_ID_REVIEWER)->toArray();
50  $authorUserGroups[$context->getId()] = $userGroupDao->getByRoleId($context->getId(), ROLE_ID_AUTHOR)->toArray();
51  $readerUserGroups[$context->getId()] = $userGroupDao->getByRoleId($context->getId(), ROLE_ID_READER)->toArray();
52  }
53  $templateMgr->assign(array(
54  'reviewerUserGroups' => $reviewerUserGroups,
55  'authorUserGroups' => $authorUserGroups,
56  'readerUserGroups' => $readerUserGroups,
57  ));
58  }
59 
65  function saveRoleContent($form, $user) {
66  $userGroupDao = DAORegistry::getDAO('UserGroupDAO'); /* @var $userGroupDao UserGroupDAO */
67  $contextDao = Application::getContextDAO();
68  $contexts = $contextDao->getAll(true);
69  while ($context = $contexts->next()) {
70  if ($context->getData('disableUserReg')) continue;
71 
72  foreach (array(
73  array(
74  'roleId' => ROLE_ID_REVIEWER,
75  'formElement' => 'reviewerGroup'
76  ),
77  array(
78  'roleId' => ROLE_ID_AUTHOR,
79  'formElement' => 'authorGroup'
80  ),
81  array(
82  'roleId' => ROLE_ID_READER,
83  'formElement' => 'readerGroup'
84  ),
85  ) as $groupData) {
86  $groupFormData = (array) $form->getData($groupData['formElement']);
87  $userGroups = $userGroupDao->getByRoleId($context->getId(), $groupData['roleId']);
88  while ($userGroup = $userGroups->next()) {
89  if (!$userGroup->getPermitSelfRegistration()) continue;
90 
91  $groupId = $userGroup->getId();
92  $inGroup = $userGroupDao->userInGroup($user->getId(), $groupId);
93  if (!$inGroup && array_key_exists($groupId, $groupFormData)) {
94  $userGroupDao->assignUserToGroup($user->getId(), $groupId, $context->getId());
95  } elseif ($inGroup && !array_key_exists($groupId, $groupFormData)) {
96  $userGroupDao->removeUserFromGroup($user->getId(), $groupId, $context->getId());
97  }
98  }
99  }
100  }
101  }
102 }
103 
104 
Application\getContextDAO
static getContextDAO()
Definition: Application.inc.php:137
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
UserFormHelper\saveRoleContent
saveRoleContent($form, $user)
Definition: UserFormHelper.inc.php:65
UserFormHelper\__construct
__construct()
Definition: UserFormHelper.inc.php:20
UserFormHelper\assignRoleContent
assignRoleContent($templateMgr, $request)
Definition: UserFormHelper.inc.php:28
UserFormHelper
Helper functions for shared user form concerns.
Definition: UserFormHelper.inc.php:16