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
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
00046
00050 function getRequestArgs() {
00051 $monograph =& $this->getMonograph();
00052 return array(
00053 'monographId' => $monograph->getId(),
00054 'stageId' => $this->getStageId()
00055 );
00056 }
00057
00058
00059
00060
00064 function initialize(&$request) {
00065 parent::initialize($request);
00066
00067
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
00083 $this->setSourceType(LISTBUILDER_SOURCE_TYPE_SELECT);
00084 $this->setSaveType(LISTBUILDER_SAVE_TYPE_EXTERNAL);
00085 $this->setSaveFieldName('users');
00086
00087
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
00109
00115 function getRowDataElement(&$request, $rowId) {
00116
00117 if ( !empty($rowId) ) {
00118 return parent::getRowDataElement($request, $rowId);
00119 }
00120
00121
00122
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
00136 $items = array(
00137 array()
00138 );
00139
00140 $userStageAssignmentDao =& DAORegistry::getDAO('UserStageAssignmentDAO');
00141 $monograph =& $this->getMonograph();
00142
00143
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 ?>