• Main Page
  • Modules
  • Classes
  • Files
  • File List

controllers/listbuilder/users/UserUserGroupListbuilderHandler.inc.php

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    // Setters and Getters
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    // Overridden parent class functions
00078    //
00082    function getRequestArgs() {
00083       return array(
00084          'userId' => $this->getUserId()
00085       );
00086    }
00087 
00088 
00093    function getOptions($includeDesignations = false) {
00094       // Initialize the object to return
00095       $items = array(
00096          array(), // Names
00097          array() // Designations
00098       );
00099 
00100       // Fetch the user groups
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       // Assemble the array to return
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          // Add the optgroup label.
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    // Implement template methods from PKPHandler
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       // FIXME Validate user ID?
00159       $this->setUserId((int) $request->getUserVar('userId'));
00160 
00161       $this->setPress($request->getPress());
00162       parent::initialize($request);
00163 
00164       // Basic configuration
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       // Name column
00174       $nameColumn = new ListbuilderGridColumn($this, 'name', 'common.name');
00175       $nameColumn->setCellProvider($cellProvider);
00176       $this->addColumn($nameColumn);
00177 
00178       // Designation column
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       // fallback on the parent if a rowId is found
00196       if ( !empty($rowId) ) {
00197          return parent::getRowDataElement($request, $rowId);
00198       }
00199 
00200       // Otherwise return from the $newRowId
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 ?>

Generated on Mon Sep 17 2012 13:58:56 for Open Monograph Press by  doxygen 1.7.1