Open Journal Systems  3.3.0
SubmissionFilesCategoryGridDataProvider.inc.php
1 <?php
2 
17 import('lib.pkp.classes.controllers.grid.CategoryGridDataProvider');
18 
20 
23 
24 
35  function __construct($fileStage, $dataProviderInitParams = null) {
36  parent::__construct();
37  $this->setDataProvider($this->initGridDataProvider($fileStage, $dataProviderInitParams));
38  }
39 
40 
41  //
42  // Extended method from CategoryGridDataProvider.
43  //
47  function setDataProvider($gridDataProvider) {
48  assert(is_a($gridDataProvider, 'SubmissionFilesGridDataProvider'));
49  parent::setDataProvider($gridDataProvider);
50  }
51 
52 
53  //
54  // Implement template methods from GridDataProvider
55  //
59  function getAuthorizationPolicy($request, $args, $roleAssignments) {
60  // Get the submission files grid data provider authorization policy.
61  $dataProvider = $this->getDataProvider();
62  return $dataProvider->getAuthorizationPolicy($request, $args, $roleAssignments);
63  }
64 
68  function getRequestArgs() {
69  $dataProvider = $this->getDataProvider();
70  return $dataProvider->getRequestArgs();
71  }
72 
76  function loadData($filter = array()) {
77  // Return only the user accessible workflow stages.
78  return array_keys($this->getAuthorizedContextObject(ASSOC_TYPE_ACCESSIBLE_WORKFLOW_STAGES));
79  }
80 
81 
82  //
83  // Implement template methods from CategoryGridDataProvider
84  //
88  function loadCategoryData($request, $categoryDataElement, $filter = null, $reviewRound = null) {
89  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
90  $dataProvider = $this->getDataProvider();
91  $submission = $this->getAuthorizedContextObject(ASSOC_TYPE_SUBMISSION);
92  $stageId = $categoryDataElement;
93  $fileStage = $this->_getFileStageByStageId($stageId);
94  $stageSubmissionFiles = null;
95 
96  // For review stages, get the revisions of the review round that user is currently accessing.
97  if ($stageId == WORKFLOW_STAGE_ID_INTERNAL_REVIEW || $stageId == WORKFLOW_STAGE_ID_EXTERNAL_REVIEW) {
98  if (is_null($reviewRound) || $reviewRound->getStageId() != $stageId) {
99  $reviewRoundDao = DAORegistry::getDAO('ReviewRoundDAO'); /* @var $reviewRoundDao ReviewRoundDAO */
100  $reviewRound = $reviewRoundDao->getLastReviewRoundBySubmissionId($submission->getId(), $stageId);
101  }
102  $stageSubmissionFiles = $submissionFileDao->getLatestRevisionsByReviewRound($reviewRound, $fileStage);
103  } else {
104  // Filter the passed workflow stage files.
105  if (!$this->_submissionFiles) {
106  $this->_submissionFiles = $submissionFileDao->getLatestRevisions($submission->getId());
107  }
108  $submissionFiles = $this->_submissionFiles;
109  $stageSubmissionFiles = array();
110  foreach ($submissionFiles as $key => $submissionFile) {
111  if (in_array($submissionFile->getFileStage(), (array) $fileStage)) {
112  $stageSubmissionFiles[$key] = $submissionFile;
113  } elseif ($submissionFile->getFileStage() == SUBMISSION_FILE_QUERY) {
114  // Determine the stage from the query.
115  if ($submissionFile->getAssocType()!=ASSOC_TYPE_NOTE) break;
116  $noteDao = DAORegistry::getDAO('NoteDAO'); /* @var $noteDao NoteDAO */
117  $note = $noteDao->getById($submissionFile->getAssocId());
118  assert($note && $note->getAssocType()==ASSOC_TYPE_QUERY);
119  $queryDao = DAORegistry::getDAO('QueryDAO'); /* @var $queryDao QueryDAO */
120  $query = $queryDao->getById($note->getAssocId());
121  if ($query && $query->getStageId() == $stageId) $stageSubmissionFiles[$key] = $submissionFile;
122  }
123  }
124  }
125  return $dataProvider->prepareSubmissionFileData($stageSubmissionFiles, false, $filter);
126  }
127 
128 
129  //
130  // Public methods
131  //
135  function getAddFileAction($request) {
136  $dataProvider = $this->getDataProvider();
137  return $dataProvider->getAddFileAction($request);
138  }
139 
143  function setStageId($stageId) {
144  $dataProvider = $this->getDataProvider();
145  $dataProvider->setStageId($stageId);
146  }
147 
151  function getFileStage() {
152  $dataProvider = $this->getDataProvider();
153  return $dataProvider->getFileStage();
154  }
155 
156 
157  //
158  // Protected methods.
159  //
167  function initGridDataProvider($fileStage, $initParams = null) {
168  // By default, this category grid data provider use the
169  // SubmissionFilesGridDataProvider.
170  import('lib.pkp.controllers.grid.files.SubmissionFilesGridDataProvider');
171  return new SubmissionFilesGridDataProvider($fileStage);
172  }
173 
174 
175  //
176  // Private helper methods.
177  //
185  function _getFileStageByStageId($stageId) {
186  switch($stageId) {
187  case WORKFLOW_STAGE_ID_SUBMISSION:
188  return SUBMISSION_FILE_SUBMISSION;
189  break;
190  case WORKFLOW_STAGE_ID_INTERNAL_REVIEW:
191  case WORKFLOW_STAGE_ID_EXTERNAL_REVIEW:
192  return SUBMISSION_FILE_REVIEW_FILE;
193  break;
194  case WORKFLOW_STAGE_ID_EDITING:
195  return array(SUBMISSION_FILE_FINAL, SUBMISSION_FILE_COPYEDIT);
196  break;
197  case WORKFLOW_STAGE_ID_PRODUCTION:
198  return SUBMISSION_FILE_PRODUCTION_READY;
199  break;
200  default:
201  break;
202  }
203  }
204 }
205 
206 
SubmissionFilesCategoryGridDataProvider\__construct
__construct($fileStage, $dataProviderInitParams=null)
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:38
CategoryGridDataProvider\getDataProvider
getDataProvider()
Definition: CategoryGridDataProvider.inc.php:39
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
SubmissionFilesCategoryGridDataProvider\initGridDataProvider
initGridDataProvider($fileStage, $initParams=null)
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:170
SubmissionFilesCategoryGridDataProvider\loadData
loadData($filter=array())
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:79
SubmissionFilesGridDataProvider
Definition: SubmissionFilesGridDataProvider.inc.php:18
SubmissionFilesCategoryGridDataProvider
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:19
SubmissionFilesCategoryGridDataProvider\_getFileStageByStageId
_getFileStageByStageId($stageId)
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:188
SubmissionFilesCategoryGridDataProvider\loadCategoryData
loadCategoryData($request, $categoryDataElement, $filter=null, $reviewRound=null)
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:91
SubmissionFilesCategoryGridDataProvider\getAddFileAction
getAddFileAction($request)
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:138
SubmissionFilesCategoryGridDataProvider\getRequestArgs
getRequestArgs()
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:71
CategoryGridDataProvider
Provide access to category grid data. Can optionally use a grid data provider object that already pro...
Definition: CategoryGridDataProvider.inc.php:20
SubmissionFilesCategoryGridDataProvider\setDataProvider
setDataProvider($gridDataProvider)
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:50
GridDataProvider\__construct
__construct()
Definition: GridDataProvider.inc.php:30
GridDataProvider\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: GridDataProvider.inc.php:52
SubmissionFilesCategoryGridDataProvider\getAuthorizationPolicy
getAuthorizationPolicy($request, $args, $roleAssignments)
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:62
SubmissionFilesCategoryGridDataProvider\$_submissionFiles
$_submissionFiles
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:25
SubmissionFilesCategoryGridDataProvider\getFileStage
getFileStage()
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:154
SubmissionFilesCategoryGridDataProvider\setStageId
setStageId($stageId)
Definition: SubmissionFilesCategoryGridDataProvider.inc.php:146