Open Preprint Systems  3.3.0
ExportPublishedSubmissionsListGridHandler.inc.php
1 <?php
2 
16 import('lib.pkp.classes.controllers.grid.GridHandler');
17 
20  var $_plugin;
21 
25  function __construct() {
26  parent::__construct();
27  $this->addRoleAssignment(
28  array(ROLE_ID_MANAGER),
29  array('fetchGrid', 'fetchRow')
30  );
31  }
32 
33  //
34  // Implement template methods from PKPHandler
35  //
39  function authorize($request, &$args, $roleAssignments) {
40  import('lib.pkp.classes.security.authorization.PolicySet');
41  $rolePolicy = new PolicySet(COMBINING_PERMIT_OVERRIDES);
42 
43  import('lib.pkp.classes.security.authorization.RoleBasedHandlerOperationPolicy');
44  foreach($roleAssignments as $role => $operations) {
45  $rolePolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, $role, $operations));
46  }
47  $this->addPolicy($rolePolicy);
48 
49  return parent::authorize($request, $args, $roleAssignments);
50  }
51 
55  function initialize($request, $args = null) {
56  parent::initialize($request, $args);
57  $context = $request->getContext();
58 
59  // Basic grid configuration.
60  $this->setTitle('plugins.importexport.common.export.articles');
61 
62  // Load submission-specific translations.
64  LOCALE_COMPONENT_APP_SUBMISSION, // title filter
65  LOCALE_COMPONENT_PKP_SUBMISSION, // authors filter
66  LOCALE_COMPONENT_APP_MANAGER
67  );
68 
69  $pluginCategory = $request->getUserVar('category');
70  $pluginPathName = $request->getUserVar('plugin');
71  $this->_plugin = PluginRegistry::loadPlugin($pluginCategory, $pluginPathName);
72  assert(isset($this->_plugin));
73 
74  // Grid columns.
75  $cellProvider = $this->getGridCellProvider();
76  $this->addColumn(
77  new GridColumn(
78  'id',
79  null,
80  __('common.id'),
81  'controllers/grid/gridCell.tpl',
82  $cellProvider,
83  array('alignment' => COLUMN_ALIGNMENT_LEFT,
84  'width' => 10)
85  )
86  );
87  $this->addColumn(
88  new GridColumn(
89  'title',
90  'grid.submission.itemTitle',
91  null,
92  null,
93  $cellProvider,
94  array('html' => true,
95  'alignment' => COLUMN_ALIGNMENT_LEFT)
96  )
97  );
98  if (method_exists($this, 'addAdditionalColumns')) {
99  $this->addAdditionalColumns($cellProvider);
100  }
101  $this->addColumn(
102  new GridColumn(
103  'status',
104  'common.status',
105  null,
106  null,
107  $cellProvider,
108  array('alignment' => COLUMN_ALIGNMENT_LEFT,
109  'width' => 10)
110  )
111  );
112  }
113 
114 
115  //
116  // Implemented methods from GridHandler.
117  //
121  function initFeatures($request, $args) {
122  import('lib.pkp.classes.controllers.grid.feature.selectableItems.SelectableItemsFeature');
123  import('lib.pkp.classes.controllers.grid.feature.PagingFeature');
124  return array(new SelectableItemsFeature(), new PagingFeature());
125  }
126 
130  function getRequestArgs() {
131  return array_merge(parent::getRequestArgs(), array('category' => $this->_plugin->getCategory(), 'plugin' => basename($this->_plugin->getPluginPath())));
132  }
133 
137  function isDataElementSelected($gridDataElement) {
138  return false; // Nothing is selected by default
139  }
140 
144  function getSelectName() {
145  return 'selectedSubmissions';
146  }
147 
151  protected function getFilterForm() {
152  return 'controllers/grid/submissions/exportPublishedSubmissionsGridFilter.tpl';
153  }
154 
158  function renderFilter($request, $filterData = array()) {
159  $context = $request->getContext();
160  $statusNames = $this->_plugin->getStatusNames();
161  $filterColumns = $this->getFilterColumns();
162  $allFilterData = array_merge(
163  $filterData,
164  array(
165  'columns' => $filterColumns,
166  'status' => $statusNames,
167  'gridId' => $this->getId(),
168  ));
169  return parent::renderFilter($request, $allFilterData);
170  }
171 
175  function getFilterSelectionData($request) {
176  $search = (string) $request->getUserVar('search');
177  $column = (string) $request->getUserVar('column');
178  $statusId = (string) $request->getUserVar('statusId');
179  return array(
180  'search' => $search,
181  'column' => $column,
182  'statusId' => $statusId,
183  );
184  }
185 
189  protected function loadData($request, $filter) {
190  $context = $request->getContext();
191  list($search, $column, $statusId) = $this->getFilterValues($filter);
192  $title = $author = null;
193  if ($column == 'title') {
194  $title = $search;
195  } elseif ($column == 'author') {
196  $author = $search;
197  }
198  $pubIdStatusSettingName = null;
199  if ($statusId) {
200  $pubIdStatusSettingName = $this->_plugin->getDepositStatusSettingName();
201  }
202  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
203  return $submissionDao->getExportable(
204  $context->getId(),
205  null,
206  $title,
207  $author,
208  $pubIdStatusSettingName,
209  $statusId,
210  $this->getGridRangeInfo($request, $this->getId())
211  );
212  }
213 
214 
215  //
216  // Own protected methods
217  //
222  protected function getFilterColumns() {
223  return array(
224  'title' => __('submission.title'),
225  'author' => __('submission.authors')
226  );
227  }
228 
234  protected function getFilterValues($filter) {
235  if (isset($filter['search']) && $filter['search']) {
236  $search = $filter['search'];
237  } else {
238  $search = null;
239  }
240  if (isset($filter['column']) && $filter['column']) {
241  $column = $filter['column'];
242  } else {
243  $column = null;
244  }
245  if (isset($filter['statusId']) && $filter['statusId'] != EXPORT_STATUS_ANY) {
246  $statusId = $filter['statusId'];
247  } else {
248  $statusId = null;
249  }
250  return array($search, $column, $statusId);
251  }
252 
257  function getGridCellProvider() {
258  // Fetch the authorized roles.
259  $authorizedRoles = $this->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES);
260  import('controllers.grid.submissions.ExportPublishedSubmissionsListGridCellProvider');
261  return new ExportPublishedSubmissionsListGridCellProvider($this->_plugin, $authorizedRoles);
262  }
263 
264 }
265 
266 
PKPHandler\addRoleAssignment
addRoleAssignment($roleIds, $operations)
Definition: PKPHandler.inc.php:213
GridColumn
The GridColumn class represents a column within a grid. It is used to format the data presented in a ...
Definition: GridColumn.inc.php:27
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
ExportPublishedSubmissionsListGridHandler\authorize
authorize($request, &$args, $roleAssignments)
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:42
ExportPublishedSubmissionsListGridHandler\getRequestArgs
getRequestArgs()
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:133
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
ExportPublishedSubmissionsListGridHandler
Handle exportable published submissions list grid requests.
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:18
PKPHandler\getId
getId()
Definition: PKPHandler.inc.php:107
ExportPublishedSubmissionsListGridCellProvider
Class for a cell provider that can retrieve labels from submissions.
Definition: ExportPublishedSubmissionsListGridCellProvider.inc.php:18
ExportPublishedSubmissionsListGridHandler\getSelectName
getSelectName()
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:147
ExportPublishedSubmissionsListGridHandler\getFilterColumns
getFilterColumns()
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:225
ExportPublishedSubmissionsListGridHandler\getGridCellProvider
getGridCellProvider()
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:260
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
ExportPublishedSubmissionsListGridHandler\getFilterValues
getFilterValues($filter)
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:237
ExportPublishedSubmissionsListGridHandler\getFilterForm
getFilterForm()
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:154
ExportPublishedSubmissionsListGridHandler\isDataElementSelected
isDataElementSelected($gridDataElement)
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:140
ExportPublishedSubmissionsListGridHandler\loadData
loadData($request, $filter)
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:192
SelectableItemsFeature
Implements grid widgets selectable items functionality.
Definition: SelectableItemsFeature.inc.php:19
PagingFeature
Add paging functionality to grids.
Definition: PagingFeature.inc.php:19
GridHandler\setTitle
setTitle($title)
Definition: GridHandler.inc.php:215
PluginRegistry\loadPlugin
static loadPlugin($category, $pathName, $mainContextId=null)
Definition: PluginRegistry.inc.php:175
PKPHandler\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: PKPHandler.inc.php:174
ExportPublishedSubmissionsListGridHandler\getFilterSelectionData
getFilterSelectionData($request)
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:178
ExportPublishedSubmissionsListGridHandler\$_plugin
$_plugin
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:23
GridHandler
This class defines basic operations for handling HTML grids. Grids are used to implement a standardiz...
Definition: GridHandler.inc.php:58
ExportPublishedSubmissionsListGridHandler\initFeatures
initFeatures($request, $args)
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:124
RoleBasedHandlerOperationPolicy
Class to control access to handler operations via role based access control.
Definition: RoleBasedHandlerOperationPolicy.inc.php:18
PKPHandler\addPolicy
addPolicy($authorizationPolicy, $addToTop=false)
Definition: PKPHandler.inc.php:157
ExportPublishedSubmissionsListGridHandler\__construct
__construct()
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:28
ExportPublishedSubmissionsListGridHandler\renderFilter
renderFilter($request, $filterData=array())
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:161
PolicySet
An ordered list of policies. Policy sets can be added to decision managers like policies....
Definition: PolicySet.inc.php:26
ExportPublishedSubmissionsListGridHandler\initialize
initialize($request, $args=null)
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:58