00001 <?php
00002
00015
00016
00017
00018 class GroupHandler extends ManagerHandler {
00019
00023 function groups() {
00024 list($journal) = GroupHandler::validate();
00025 GroupHandler::setupTemplate();
00026
00027 $rangeInfo = &Handler::getRangeInfo('groups');
00028
00029 $groupDao =& DAORegistry::getDAO('GroupDAO');
00030 $groups =& $groupDao->getGroups($journal->getJournalId(), null, $rangeInfo);
00031
00032 $templateMgr = &TemplateManager::getManager();
00033 $templateMgr->assign_by_ref('groups', $groups);
00034 $templateMgr->assign('boardEnabled', $journal->getSetting('boardEnabled'));
00035 $templateMgr->display('manager/groups/groups.tpl');
00036 }
00037
00042 function deleteGroup($args) {
00043 $groupId = isset($args[0])?(int)$args[0]:0;
00044 list($journal, $group) = GroupHandler::validate($groupId);
00045
00046 $groupDao =& DAORegistry::getDAO('GroupDAO');
00047 $groupDao->deleteGroup($group);
00048 $groupDao->resequenceGroups($journal->getJournalId());
00049
00050 Request::redirect(null, null, 'groups');
00051 }
00052
00056 function moveGroup() {
00057 $groupId = (int) Request::getUserVar('groupId');
00058 list($journal, $group) = GroupHandler::validate($groupId);
00059
00060 $groupDao =& DAORegistry::getDAO('GroupDAO');
00061 $group->setSequence($group->getSequence() + (Request::getUserVar('d') == 'u' ? -1.5 : 1.5));
00062 $groupDao->updateGroup($group);
00063 $groupDao->resequenceGroups($journal->getJournalId());
00064
00065 Request::redirect(null, null, 'groups');
00066 }
00067
00072 function editGroup($args = array()) {
00073 $groupId = isset($args[0])?(int)$args[0]:null;
00074 list($journal) = GroupHandler::validate($groupId);
00075
00076 if ($groupId !== null) {
00077 $groupDao =& DAORegistry::getDAO('GroupDAO');
00078 $group =& $groupDao->getGroup($groupId);
00079 if (!$group || $journal->getJournalId() !== $group->getJournalId()) {
00080 Request::redirect(null, null, 'groups');
00081 }
00082 } else $group = null;
00083
00084 GroupHandler::setupTemplate($group, true);
00085 import('manager.form.GroupForm');
00086
00087 $templateMgr = &TemplateManager::getManager();
00088
00089 $templateMgr->assign('pageTitle',
00090 $group === null?
00091 'manager.groups.createTitle':
00092 'manager.groups.editTitle'
00093 );
00094
00095 $groupForm = &new GroupForm($group);
00096 if ($groupForm->isLocaleResubmit()) {
00097 $groupForm->readInputData();
00098 } else {
00099 $groupForm->initData();
00100 }
00101 $groupForm->display();
00102 }
00103
00107 function createGroup($args) {
00108 GroupHandler::editGroup($args);
00109 }
00110
00114 function updateGroup() {
00115 $groupId = Request::getUserVar('groupId') === null? null : (int) Request::getUserVar('groupId');
00116 if ($groupId === null) {
00117 list($journal) = GroupHandler::validate();
00118 $group = null;
00119 } else {
00120 list($journal, $group) = GroupHandler::validate($groupId);
00121 }
00122
00123 import('manager.form.GroupForm');
00124
00125 $groupForm =& new GroupForm($group);
00126 $groupForm->readInputData();
00127
00128 if ($groupForm->validate()) {
00129 $groupForm->execute();
00130 Request::redirect(null, null, 'groups');
00131 } else {
00132 GroupHandler::setupTemplate($group);
00133
00134 $templateMgr = &TemplateManager::getManager();
00135 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'groups'), 'manager.groups'));
00136
00137 $templateMgr->assign('pageTitle',
00138 $group?
00139 'manager.groups.editTitle':
00140 'manager.groups.createTitle'
00141 );
00142
00143 $groupForm->display();
00144 }
00145 }
00146
00150 function groupMembership($args) {
00151 $groupId = isset($args[0])?(int)$args[0]:0;
00152 list($journal, $group) = GroupHandler::validate($groupId);
00153
00154 $rangeInfo = &Handler::getRangeInfo('memberships');
00155
00156 GroupHandler::setupTemplate($group, true);
00157 $groupMembershipDao =& DAORegistry::getDAO('GroupMembershipDAO');
00158 $memberships =& $groupMembershipDao->getMemberships($group->getGroupId(), $rangeInfo);
00159 $templateMgr = &TemplateManager::getManager();
00160 $templateMgr->assign_by_ref('memberships', $memberships);
00161 $templateMgr->assign_by_ref('group', $group);
00162 $templateMgr->display('manager/groups/memberships.tpl');
00163 }
00164
00168 function addMembership($args) {
00169 $groupId = isset($args[0])?(int)$args[0]:0;
00170 $userId = isset($args[1])?(int)$args[1]:null;
00171
00172 $groupMembershipDao =& DAORegistry::getDAO('GroupMembershipDAO');
00173
00174
00175
00176 if ($userId !== null) {
00177 list($journal, $group, $user) = GroupHandler::validate($groupId, $userId);
00178
00179
00180
00181
00182 $groupMembership =& $groupMembershipDao->getMembership($group->getGroupId(), $user->getUserId());
00183
00184 if (!$groupMembership) {
00185 $groupMembership =& new GroupMembership();
00186 $groupMembership->setGroupId($group->getGroupId());
00187 $groupMembership->setUserId($user->getUserId());
00188
00189 $groupMembership->setAboutDisplayed(true);
00190 $groupMembershipDao->insertMembership($groupMembership);
00191 }
00192 Request::redirect(null, null, 'groupMembership', $group->getGroupId());
00193 } else {
00194 list($journal, $group) = GroupHandler::validate($groupId);
00195 GroupHandler::setupTemplate($group, true);
00196 $searchType = null;
00197 $searchMatch = null;
00198 $search = $searchQuery = Request::getUserVar('search');
00199 $searchInitial = Request::getUserVar('searchInitial');
00200 if (isset($search)) {
00201 $searchType = Request::getUserVar('searchField');
00202 $searchMatch = Request::getUserVar('searchMatch');
00203
00204 } else if (isset($searchInitial)) {
00205 $searchInitial = String::strtoupper($searchInitial);
00206 $searchType = USER_FIELD_INITIAL;
00207 $search = $searchInitial;
00208 }
00209
00210 $roleDao =& DAORegistry::getDAO('RoleDAO');
00211 $users = $roleDao->getUsersByRoleId(null, $journal->getJournalId(), $searchType, $search, $searchMatch);
00212
00213 $templateMgr = &TemplateManager::getManager();
00214
00215 $templateMgr->assign('searchField', $searchType);
00216 $templateMgr->assign('searchMatch', $searchMatch);
00217 $templateMgr->assign('search', $searchQuery);
00218 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
00219
00220 $templateMgr->assign_by_ref('users', $users);
00221 $templateMgr->assign('fieldOptions', Array(
00222 USER_FIELD_FIRSTNAME => 'user.firstName',
00223 USER_FIELD_LASTNAME => 'user.lastName',
00224 USER_FIELD_USERNAME => 'user.username',
00225 USER_FIELD_EMAIL => 'user.email'
00226 ));
00227 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
00228 $templateMgr->assign_by_ref('group', $group);
00229
00230 $templateMgr->display('manager/groups/selectUser.tpl');
00231 }
00232 }
00233
00237 function deleteMembership($args) {
00238 $groupId = isset($args[0])?(int)$args[0]:0;
00239 $userId = isset($args[1])?(int)$args[1]:0;
00240
00241 list($journal, $group, $user, $groupMembership) = GroupHandler::validate($groupId, $userId, true);
00242
00243 $groupMembershipDao =& DAORegistry::getDAO('GroupMembershipDAO');
00244 $groupMembershipDao->deleteMembershipById($group->getGroupId(), $user->getUserId());
00245 $groupMembershipDao->resequenceMemberships($group->getGroupId());
00246
00247 Request::redirect(null, null, 'groupMembership', $group->getGroupId());
00248 }
00249
00253 function moveMembership() {
00254 $groupId = (int) Request::getUserVar('groupId');
00255 $userId = (int) Request::getUserVar('userId');
00256 list($journal, $group, $user, $groupMembership) = GroupHandler::validate($groupId, $userId, true);
00257
00258 $groupMembershipDao =& DAORegistry::getDAO('GroupMembershipDAO');
00259 $groupMembership->setSequence($groupMembership->getSequence() + (Request::getUserVar('d') == 'u' ? -1.5 : 1.5));
00260 $groupMembershipDao->updateMembership($groupMembership);
00261 $groupMembershipDao->resequenceMemberships($group->getGroupId());
00262
00263 Request::redirect(null, null, 'groupMembership', $group->getGroupId());
00264 }
00265
00266 function setBoardEnabled($args) {
00267 GroupHandler::validate();
00268 $journal = &Request::getJournal();
00269 $boardEnabled = Request::getUserVar('boardEnabled')==1?true:false;
00270 $journalSettingsDao =& DAORegistry::getDAO('JournalSettingsDAO');
00271 $journalSettingsDao->updateSetting($journal->getJournalId(), 'boardEnabled', $boardEnabled);
00272 Request::redirect(null, null, 'groups');
00273 }
00274
00275 function setupTemplate($group = null, $subclass = false) {
00276 parent::setupTemplate(true);
00277 $templateMgr = &TemplateManager::getManager();
00278 if ($subclass) {
00279 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'groups'), 'manager.groups'));
00280 }
00281 if ($group) {
00282 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'editGroup', $group->getGroupId()), $group->getGroupTitle(), true));
00283 }
00284 $templateMgr->assign('helpTopicId', 'journal.managementPages.groups');
00285 }
00286
00297 function validate($groupId = null, $userId = null, $fetchMembership = false) {
00298 parent::validate();
00299
00300 $journal =& Request::getJournal();
00301 $returner = array(&$journal);
00302
00303 $passedValidation = true;
00304
00305 if ($groupId !== null) {
00306 $groupDao =& DAORegistry::getDAO('GroupDAO');
00307 $group =& $groupDao->getGroup($groupId);
00308
00309 if (!$group || $group->getJournalId() !== $journal->getJournalId()) $passedValidation = false;
00310 else $returner[] = &$group;
00311
00312 if ($userId !== null) {
00313 $userDao =& DAORegistry::getDAO('UserDAO');
00314 $user =& $userDao->getUser($userId);
00315
00316 if (!$user) $passedValidation = false;
00317 else $returner[] = &$user;
00318
00319 if ($fetchMembership === true) {
00320 $groupMembershipDao =& DAORegistry::getDAO('GroupMembershipDAO');
00321 $groupMembership =& $groupMembershipDao->getMembership($groupId, $userId);
00322 if (!$groupMembership) $validationPassed = false;
00323 else $returner[] = &$groupMembership;
00324 }
00325 }
00326 }
00327 if (!$passedValidation) Request::redirect(null, null, 'groups');
00328 return $returner;
00329 }
00330 }
00331
00332 ?>