Open Journal Systems  3.3.0
SubmissionFilesGridDataProvider.inc.php
1 <?php
16 import('lib.pkp.controllers.grid.files.FilesGridDataProvider');
17 
19 
21  var $_stageId;
22 
25 
26 
32  function __construct($fileStage, $viewableOnly = false) {
33  assert(is_numeric($fileStage) && $fileStage > 0);
34  $this->_fileStage = (int)$fileStage;
35  parent::__construct();
36 
37  $this->setViewableOnly($viewableOnly);
38  }
39 
40 
41  //
42  // Getters and setters.
43  //
48  function setStageId($stageId) {
49  $this->_stageId = $stageId;
50  }
51 
56  function getStageId() {
57  return $this->_stageId;
58  }
59 
60 
61  //
62  // Implement template methods from GridDataProvider
63  //
67  function getRequestArgs() {
68  $submission = $this->getSubmission();
69  return array(
70  'submissionId' => $submission->getId(),
71  'stageId' => $this->getStageId(),
72  'fileStage' => $this->getFileStage(),
73  );
74  }
75 
80  function getFileStage() {
81  return $this->_fileStage;
82  }
83 
87  function loadData($filter = array()) {
88  // Retrieve all submission files for the given file stage.
89  $submission = $this->getSubmission();
90  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
91  $submissionFiles = $submissionFileDao->getLatestRevisions($submission->getId(), $this->getFileStage(), null);
92  return $this->prepareSubmissionFileData($submissionFiles, $this->_viewableOnly, $filter);
93  }
94 
95  //
96  // Implement template methods from GridDataProvider
97  //
101  function getAuthorizationPolicy($request, $args, $roleAssignments) {
102  $this->setUploaderRoles($roleAssignments);
103 
104  import('lib.pkp.classes.security.authorization.WorkflowStageAccessPolicy');
105  return new WorkflowStageAccessPolicy($request, $args, $roleAssignments, 'submissionId', $this->getStageId());
106  }
107 
108  //
109  // Overridden public methods from FilesGridDataProvider
110  //
114  function getAddFileAction($request) {
115  import('lib.pkp.controllers.api.file.linkAction.AddFileLinkAction');
116  $submission = $this->getSubmission();
117  return new AddFileLinkAction(
118  $request, $submission->getId(),
119  $this->getStageId(), $this->getUploaderRoles(), $this->getFileStage()
120  );
121  }
122 
123 
124  //
125  // Protected functions
126  //
133  protected function applyFilter($revisions, $filter) {
134  if (!empty($filter['search'])) switch ($filter['column']) {
135  case 'name':
136  foreach ($revisions as $key => $submissionFile) {
137  if (!stristr($submissionFile->getName(AppLocale::getLocale()), $filter['search'])) {
138  unset($revisions[$key]);
139  }
140  }
141  break;
142  }
143  return $revisions;
144  }
145 
155  function prepareSubmissionFileData($revisions, $viewableOnly = false, $filter = array()) {
156  $revisions = $this->applyFilter($revisions, $filter);
157 
158  // Rearrange the files as required by submission file grids.
159  $submissionFileData = array();
160  foreach ($revisions as $revision) {
161  if ($viewableOnly && !$revision->getViewable()) continue;
162 
163  $submissionFileData[$revision->getFileId()] = array(
164  'submissionFile' => $revision
165  );
166  unset($revision);
167  }
168  return $submissionFileData;
169  }
170 }
171 
172 
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SubmissionFilesGridDataProvider\__construct
__construct($fileStage, $viewableOnly=false)
Definition: SubmissionFilesGridDataProvider.inc.php:38
SubmissionFilesGridDataProvider\loadData
loadData($filter=array())
Definition: SubmissionFilesGridDataProvider.inc.php:93
FilesGridDataProvider
Basic files grid data provider.
Definition: FilesGridDataProvider.inc.php:19
SubmissionFilesGridDataProvider\getAuthorizationPolicy
getAuthorizationPolicy($request, $args, $roleAssignments)
Definition: SubmissionFilesGridDataProvider.inc.php:107
FilesGridDataProvider\setViewableOnly
setViewableOnly($viewableOnly)
Definition: FilesGridDataProvider.inc.php:60
SubmissionFilesGridDataProvider
Definition: SubmissionFilesGridDataProvider.inc.php:18
SubmissionFilesGridDataProvider\prepareSubmissionFileData
prepareSubmissionFileData($revisions, $viewableOnly=false, $filter=array())
Definition: SubmissionFilesGridDataProvider.inc.php:161
SubmissionFilesGridDataProvider\$_stageId
$_stageId
Definition: SubmissionFilesGridDataProvider.inc.php:24
SubmissionFilesGridDataProvider\getRequestArgs
getRequestArgs()
Definition: SubmissionFilesGridDataProvider.inc.php:73
SubmissionFilesGridDataProvider\$_fileStage
$_fileStage
Definition: SubmissionFilesGridDataProvider.inc.php:30
SubmissionFilesGridDataProvider\setStageId
setStageId($stageId)
Definition: SubmissionFilesGridDataProvider.inc.php:54
WorkflowStageAccessPolicy
Class to control access to OMP's submission workflow stage components.
Definition: WorkflowStageAccessPolicy.inc.php:19
SubmissionFilesGridDataProvider\applyFilter
applyFilter($revisions, $filter)
Definition: SubmissionFilesGridDataProvider.inc.php:139
AddFileLinkAction
An action to add a submission file.
Definition: AddFileLinkAction.inc.php:18
SubmissionFilesGridDataProvider\getAddFileAction
getAddFileAction($request)
Definition: SubmissionFilesGridDataProvider.inc.php:120
FilesGridDataProvider\getSubmission
getSubmission()
Definition: FilesGridDataProvider.inc.php:102
SubmissionFilesGridDataProvider\getStageId
getStageId()
Definition: SubmissionFilesGridDataProvider.inc.php:62
SubmissionFilesGridDataProvider\getFileStage
getFileStage()
Definition: SubmissionFilesGridDataProvider.inc.php:86
GridDataProvider\__construct
__construct()
Definition: GridDataProvider.inc.php:30
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40
FilesGridDataProvider\setUploaderRoles
setUploaderRoles($roleAssignments)
Definition: FilesGridDataProvider.inc.php:43