00001 <?php
00002
00015 import('lib.pkp.classes.controllers.listbuilder.ListbuilderHandler');
00016
00017 class UserUserGroupListbuilderHandler extends ListbuilderHandler {
00019 var $_userId;
00020
00022 var $_press;
00023
00024
00028 function UserUserGroupListbuilderHandler() {
00029 parent::ListbuilderHandler();
00030 $this->addRoleAssignment(
00031 ROLE_ID_PRESS_MANAGER,
00032 array('fetch', 'fetchRow', 'fetchOptions', 'save')
00033 );
00034 }
00035
00036
00037
00038
00039
00044 function setUserId($userId) {
00045 $this->_userId = $userId;
00046 }
00047
00048
00053 function getUserId() {
00054 return $this->_userId;
00055 }
00056
00057
00062 function setPress(&$press) {
00063 $this->_press =& $press;
00064 }
00065
00066
00071 function &getPress() {
00072 return $this->_press;
00073 }
00074
00075
00076
00077
00078
00082 function getRequestArgs() {
00083 return array(
00084 'userId' => $this->getUserId()
00085 );
00086 }
00087
00088
00093 function getOptions($includeDesignations = false) {
00094
00095 $items = array(
00096 array(),
00097 array()
00098 );
00099
00100
00101 $press =& $this->getPress();
00102 $userGroupDao =& DAORegistry::getDAO('UserGroupDAO');
00103 $userGroups =& $userGroupDao->getByContextId($press->getId());
00104 $roleDao =& DAORegistry::getDAO('RoleDAO');
00105 $roleNames = $roleDao->getRoleNames(true);
00106
00107
00108 while (!$userGroups->eof()) {
00109 $userGroup =& $userGroups->next();
00110 $userGroupId = $userGroup->getId();
00111 $roleId = $userGroup->getRoleId();
00112 $roleName = __($roleNames[$roleId]);
00113
00114 $items[0][$roleId][$userGroupId] = $userGroup->getLocalizedName();
00115 if ($includeDesignations) {
00116 $items[1][$userGroupId] = $userGroup->getLocalizedAbbrev();
00117 }
00118
00119
00120 $items[0][LISTBUILDER_OPTGROUP_LABEL][$roleId] = $roleName;
00121
00122 unset($userGroup);
00123 }
00124
00125 return $items;
00126 }
00127
00128
00132 function loadData() {
00133 $press =& $this->getPress();
00134 $userGroupDao =& DAORegistry::getDAO('UserGroupDAO');
00135 $userGroups =& $userGroupDao->getByUserId($this->getUserId(), $press->getId());
00136
00137 return $userGroups;
00138 }
00139
00140
00141
00142
00143
00147 function authorize(&$request, $args, $roleAssignments) {
00148 import('classes.security.authorization.OmpPressAccessPolicy');
00149 $this->addPolicy(new OmpPressAccessPolicy($request, $roleAssignments));
00150 return parent::authorize($request, $args, $roleAssignments);
00151 }
00152
00153
00157 function initialize(&$request) {
00158
00159 $this->setUserId((int) $request->getUserVar('userId'));
00160
00161 $this->setPress($request->getPress());
00162 parent::initialize($request);
00163
00164
00165 $this->setTitle($request->getUserVar('title'));
00166 $this->setSourceType(LISTBUILDER_SOURCE_TYPE_SELECT);
00167 $this->setSaveType(LISTBUILDER_SAVE_TYPE_EXTERNAL);
00168 $this->setSaveFieldName('roles');
00169
00170 import('controllers.listbuilder.users.UserGroupListbuilderGridCellProvider');
00171 $cellProvider = new UserGroupListbuilderGridCellProvider();
00172
00173
00174 $nameColumn = new ListbuilderGridColumn($this, 'name', 'common.name');
00175 $nameColumn->setCellProvider($cellProvider);
00176 $this->addColumn($nameColumn);
00177
00178
00179 $designationColumn = new ListbuilderGridColumn($this,
00180 'designation',
00181 'common.designation',
00182 null,
00183 'controllers/listbuilder/listbuilderNonEditGridCell.tpl'
00184 );
00185 $designationColumn->setCellProvider($cellProvider);
00186 $this->addColumn($designationColumn);
00187 }
00188
00194 function getRowDataElement(&$request, $rowId) {
00195
00196 if ( !empty($rowId) ) {
00197 return parent::getRowDataElement($request, $rowId);
00198 }
00199
00200
00201 $newRowId = $this->getNewRowId($request);
00202 $userGroupId = $newRowId['name'];
00203 $userGroupDao =& DAORegistry::getDAO('UserGroupDAO');
00204 $press =& $this->getPress();
00205 $userGroup =& $userGroupDao->getById($userGroupId, $press->getId());
00206 return $userGroup;
00207 }
00208 }
00209
00210 ?>