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

controllers/listbuilder/users/NotifyUsersListbuilderHandler.inc.php

00001 <?php
00002 
00015 import('lib.pkp.classes.controllers.listbuilder.ListbuilderHandler');
00016 
00017 class NotifyUsersListbuilderHandler extends ListbuilderHandler {
00021    function NotifyUsersListbuilderHandler() {
00022       parent::ListbuilderHandler();
00023       $this->addRoleAssignment(
00024          array(ROLE_ID_PRESS_MANAGER, ROLE_ID_SERIES_EDITOR, ROLE_ID_PRESS_ASSISTANT, ROLE_ID_AUTHOR),
00025          array('fetch', 'fetchRow', 'fetchOptions')
00026       );
00027    }
00028 
00029    //
00030    // Getters/Setters
00031    //
00036    function getMonograph() {
00037       return $this->getAuthorizedContextObject(ASSOC_TYPE_MONOGRAPH);
00038    }
00039 
00040    function getStageId() {
00041       return $this->getAuthorizedContextObject(ASSOC_TYPE_WORKFLOW_STAGE);
00042    }
00043 
00044    //
00045    // Overridden parent class functions
00046    //
00050    function getRequestArgs() {
00051       $monograph =& $this->getMonograph();
00052       return array(
00053          'monographId' => $monograph->getId(),
00054          'stageId' => $this->getStageId()
00055       );
00056    }
00057 
00058    //
00059    // Implement protected template methods from PKPHandler
00060    //
00064    function initialize(&$request) {
00065       parent::initialize($request);
00066 
00067       // Load submission-specific translations
00068       AppLocale::requireComponents(LOCALE_COMPONENT_PKP_USER);
00069 
00070       $this->setTitle('email.recipients');
00071 
00072       import('lib.pkp.classes.linkAction.request.NullAction');
00073       $this->addAction(
00074          new LinkAction(
00075             'addItem',
00076             new NullAction(),
00077             __('grid.action.addUser'),
00078             'add_user'
00079          )
00080       );
00081 
00082       // Basic configuration.
00083       $this->setSourceType(LISTBUILDER_SOURCE_TYPE_SELECT);
00084       $this->setSaveType(LISTBUILDER_SAVE_TYPE_EXTERNAL);
00085       $this->setSaveFieldName('users');
00086 
00087       // Name column
00088       $nameColumn = new ListbuilderGridColumn($this, 'name', 'common.name');
00089       import('controllers.listbuilder.users.UserListbuilderGridCellProvider');
00090       $cellProvider = new UserListbuilderGridCellProvider();
00091       $nameColumn->setCellProvider($cellProvider);
00092       $this->addColumn($nameColumn);
00093    }
00094 
00101    function authorize(&$request, $args, $roleAssignments) {
00102       import('classes.security.authorization.OmpSubmissionAccessPolicy');
00103       $this->addPolicy(new OmpSubmissionAccessPolicy($request, $args, $roleAssignments));
00104       return parent::authorize($request, $args, $roleAssignments);
00105    }
00106 
00107    //
00108    // Implement methods from ListbuilderHandler
00109    //
00115    function getRowDataElement(&$request, $rowId) {
00116       // fallback on the parent if a rowId is found
00117       if ( !empty($rowId) ) {
00118          return parent::getRowDataElement($request, $rowId);
00119       }
00120 
00121       // Otherwise return from the newRowId
00122       // FIXME: Validate user ID?
00123       $newRowId = $this->getNewRowId($request);
00124       $userId = (int) $newRowId['name'];
00125       $userDao =& DAORegistry::getDAO('UserDAO');
00126       $user =& $userDao->getById($userId);
00127       return $user;
00128    }
00129 
00134    function getOptions() {
00135       // Initialize the object to return
00136       $items = array(
00137          array()
00138       );
00139 
00140       $userStageAssignmentDao =& DAORegistry::getDAO('UserStageAssignmentDAO');
00141       $monograph =& $this->getMonograph();
00142 
00143       // FIXME: add stage id?
00144       $users =& $userStageAssignmentDao->getUsersBySubmissionAndStageId($monograph->getId());
00145 
00146       while ($user =& $users->next()) {
00147          $items[0][$user->getId()] = $user->getFullName() . ' <' . $user->getEmail() . '>';
00148          unset($user);
00149       }
00150       unset($users);
00151 
00152       return $items;
00153    }
00154 
00160    function loadData(&$request) {
00161       $userId = (int) $request->getUserVar('userId');
00162       $userStageAssignmentDao =& DAORegistry::getDAO('UserStageAssignmentDAO');
00163       $monograph =& $this->getMonograph();
00164 
00165       $users =& $userStageAssignmentDao->getUsersBySubmissionAndStageId($monograph->getId(), null, null, null, $userId);
00166       $user =& $users->next();
00167 
00168       if ($user) {
00169          $items[0] = $user;
00170          unset($user);
00171          return $items;
00172       }
00173    }
00174 }
00175 
00176 ?>

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