Open Journal 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  $this->addColumn(
99  new GridColumn(
100  'issue',
101  'issue.issue',
102  null,
103  null,
104  $cellProvider,
105  array('alignment' => COLUMN_ALIGNMENT_LEFT,
106  'width' => 20)
107  )
108  );
109  if (method_exists($this, 'addAdditionalColumns')) {
110  $this->addAdditionalColumns($cellProvider);
111  }
112  $this->addColumn(
113  new GridColumn(
114  'status',
115  'common.status',
116  null,
117  null,
118  $cellProvider,
119  array('alignment' => COLUMN_ALIGNMENT_LEFT,
120  'width' => 10)
121  )
122  );
123  }
124 
125 
126  //
127  // Implemented methods from GridHandler.
128  //
132  function initFeatures($request, $args) {
133  import('lib.pkp.classes.controllers.grid.feature.selectableItems.SelectableItemsFeature');
134  import('lib.pkp.classes.controllers.grid.feature.PagingFeature');
135  return array(new SelectableItemsFeature(), new PagingFeature());
136  }
137 
141  function getRequestArgs() {
142  return array_merge(parent::getRequestArgs(), array('category' => $this->_plugin->getCategory(), 'plugin' => basename($this->_plugin->getPluginPath())));
143  }
144 
148  function isDataElementSelected($gridDataElement) {
149  return false; // Nothing is selected by default
150  }
151 
155  function getSelectName() {
156  return 'selectedSubmissions';
157  }
158 
162  protected function getFilterForm() {
163  return 'controllers/grid/submissions/exportPublishedSubmissionsGridFilter.tpl';
164  }
165 
169  function renderFilter($request, $filterData = array()) {
170  $context = $request->getContext();
171  $issueDao = DAORegistry::getDAO('IssueDAO'); /* @var $issueDao IssueDAO */
172  $issuesIterator = $issueDao->getPublishedIssues($context->getId());
173  $issues = $issuesIterator->toArray();
174  foreach ($issues as $issue) {
175  $issueOptions[$issue->getId()] = $issue->getIssueIdentification();
176  }
177  $issueOptions[0] = __('plugins.importexport.common.filter.issue');
178  ksort($issueOptions);
179  $statusNames = $this->_plugin->getStatusNames();
180  $filterColumns = $this->getFilterColumns();
181  $allFilterData = array_merge(
182  $filterData,
183  array(
184  'columns' => $filterColumns,
185  'issues' => $issueOptions,
186  'status' => $statusNames,
187  'gridId' => $this->getId(),
188  ));
189  return parent::renderFilter($request, $allFilterData);
190  }
191 
195  function getFilterSelectionData($request) {
196  $search = (string) $request->getUserVar('search');
197  $column = (string) $request->getUserVar('column');
198  $issueId = (int) $request->getUserVar('issueId');
199  $statusId = (string) $request->getUserVar('statusId');
200  return array(
201  'search' => $search,
202  'column' => $column,
203  'issueId' => $issueId,
204  'statusId' => $statusId,
205  );
206  }
207 
211  protected function loadData($request, $filter) {
212  $context = $request->getContext();
213  list($search, $column, $issueId, $statusId) = $this->getFilterValues($filter);
214  $title = $author = null;
215  if ($column == 'title') {
216  $title = $search;
217  } elseif ($column == 'author') {
218  $author = $search;
219  }
220  $pubIdStatusSettingName = null;
221  if ($statusId) {
222  $pubIdStatusSettingName = $this->_plugin->getDepositStatusSettingName();
223  }
224  $submissionDao = DAORegistry::getDAO('SubmissionDAO'); /* @var $submissionDao SubmissionDAO */
225  return $submissionDao->getExportable(
226  $context->getId(),
227  null,
228  $title,
229  $author,
230  $issueId,
231  $pubIdStatusSettingName,
232  $statusId,
233  $this->getGridRangeInfo($request, $this->getId())
234  );
235  }
236 
237 
238  //
239  // Own protected methods
240  //
245  protected function getFilterColumns() {
246  return array(
247  'title' => __('submission.title'),
248  'author' => __('submission.authors')
249  );
250  }
251 
257  protected function getFilterValues($filter) {
258  if (isset($filter['search']) && $filter['search']) {
259  $search = $filter['search'];
260  } else {
261  $search = null;
262  }
263  if (isset($filter['column']) && $filter['column']) {
264  $column = $filter['column'];
265  } else {
266  $column = null;
267  }
268  if (isset($filter['issueId']) && $filter['issueId']) {
269  $issueId = $filter['issueId'];
270  } else {
271  $issueId = null;
272  }
273  if (isset($filter['statusId']) && $filter['statusId'] != EXPORT_STATUS_ANY) {
274  $statusId = $filter['statusId'];
275  } else {
276  $statusId = null;
277  }
278  return array($search, $column, $issueId, $statusId);
279  }
280 
285  function getGridCellProvider() {
286  // Fetch the authorized roles.
287  $authorizedRoles = $this->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES);
288  import('controllers.grid.submissions.ExportPublishedSubmissionsListGridCellProvider');
289  return new ExportPublishedSubmissionsListGridCellProvider($this->_plugin, $authorizedRoles);
290  }
291 
292 }
293 
294 
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:144
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:158
ExportPublishedSubmissionsListGridHandler\getFilterColumns
getFilterColumns()
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:248
ExportPublishedSubmissionsListGridHandler\getGridCellProvider
getGridCellProvider()
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:288
GridHandler\addColumn
addColumn($column)
Definition: GridHandler.inc.php:335
ExportPublishedSubmissionsListGridHandler\getFilterValues
getFilterValues($filter)
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:260
ExportPublishedSubmissionsListGridHandler\getFilterForm
getFilterForm()
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:165
ExportPublishedSubmissionsListGridHandler\isDataElementSelected
isDataElementSelected($gridDataElement)
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:151
ExportPublishedSubmissionsListGridHandler\loadData
loadData($request, $filter)
Definition: ExportPublishedSubmissionsListGridHandler.inc.php:214
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:198
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:135
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:172
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