00001 <?php
00002
00016 import('lib.pkp.classes.controllers.grid.CategoryGridDataProvider');
00017
00018 class SubmissionFilesCategoryGridDataProvider extends CategoryGridDataProvider {
00019
00021 var $_monographFiles;
00022
00023
00034 function SubmissionFilesCategoryGridDataProvider($fileStage, $dataProviderInitParams = null) {
00035 $gridDataProvider =& $this->initGridDataProvider($fileStage, $dataProviderInitParams);
00036 $this->setDataProvider($gridDataProvider);
00037 }
00038
00039
00040
00041
00042
00046 function setDataProvider(&$gridDataProvider) {
00047 if (is_a($gridDataProvider, 'SubmissionFilesGridDataProvider')) {
00048 parent::setDataProvider($gridDataProvider);
00049 } else {
00050 assert(false);
00051 }
00052 }
00053
00054
00055
00056
00057
00061 function getAuthorizationPolicy(&$request, $args, $roleAssignments) {
00062
00063 $dataProvider =& $this->getDataProvider();
00064 $policy = $dataProvider->getAuthorizationPolicy($request, $args, $roleAssignments);
00065
00066 return $policy;
00067 }
00068
00072 function getRequestArgs() {
00073 $dataProvider =& $this->getDataProvider();
00074 return $dataProvider->getRequestArgs();
00075 }
00076
00080 function loadData() {
00081
00082 return array_keys($this->getAuthorizedContextObject(ASSOC_TYPE_ACCESSIBLE_WORKFLOW_STAGES));
00083 }
00084
00085
00086
00087
00088
00092 function &getCategoryData($categoryDataElement, $filter = null, $reviewRound = null) {
00093 $submissionFileDao =& DAORegistry::getDAO('SubmissionFileDAO');
00094 $dataProvider =& $this->getDataProvider();
00095 $monograph =& $dataProvider->getMonograph();
00096 $stageId = $categoryDataElement;
00097 $fileStage = $this->_getFileStageByStageId($stageId);
00098 $stageMonographFiles = null;
00099
00100
00101 if ($stageId == WORKFLOW_STAGE_ID_INTERNAL_REVIEW || $stageId == WORKFLOW_STAGE_ID_EXTERNAL_REVIEW) {
00102 if (is_null($reviewRound) || $reviewRound->getStageId() != $stageId) {
00103 $reviewRoundDao =& DAORegistry::getDAO('ReviewRoundDAO');
00104 $reviewRound =& $reviewRoundDao->getLastReviewRoundByMonographId($monograph->getId(), $stageId);
00105 }
00106 $stageMonographFiles =& $submissionFileDao->getLatestNewRevisionsByReviewRound($reviewRound, $fileStage);
00107 } else {
00108
00109 if (!$this->_monographFiles) {
00110 $this->_monographFiles =& $submissionFileDao->getLatestRevisions($monograph->getId());
00111 }
00112 $monographFiles =& $this->_monographFiles;
00113 $stageMonographFiles = array();
00114 foreach ($monographFiles as $key => $monographFile) {
00115 if ($monographFile->getFileStage() == $fileStage) {
00116 $stageMonographFiles[$key] =& $monographFile;
00117 }
00118 unset($monographFile);
00119 }
00120 }
00121
00122 return $dataProvider->prepareSubmissionFileData($stageMonographFiles);
00123 }
00124
00125
00126
00127
00128
00132 function &getAddFileAction($request) {
00133 $dataProvider =& $this->getDataProvider();
00134 return $dataProvider->getAddFileAction($request);
00135 }
00136
00140 function setStageId($stageId) {
00141 $dataProvider =& $this->getDataProvider();
00142 $dataProvider->setStageId($stageId);
00143 }
00144
00148 function getFileStage() {
00149 $dataProvider =& $this->getDataProvider();
00150 return $dataProvider->getFileStage();
00151 }
00152
00153
00154
00155
00156
00164 function &initGridDataProvider($fileStage, $initParams = null) {
00165
00166
00167 import('controllers.grid.files.SubmissionFilesGridDataProvider');
00168 $gridDataProvider = new SubmissionFilesGridDataProvider($fileStage);
00169
00170 return $gridDataProvider;
00171 }
00172
00173
00174
00175
00176
00184 function _getFileStageByStageId($stageId) {
00185 switch($stageId) {
00186 case WORKFLOW_STAGE_ID_SUBMISSION:
00187 return MONOGRAPH_FILE_SUBMISSION;
00188 break;
00189 case WORKFLOW_STAGE_ID_INTERNAL_REVIEW:
00190 case WORKFLOW_STAGE_ID_EXTERNAL_REVIEW:
00191 return MONOGRAPH_FILE_REVIEW_FILE;
00192 break;
00193 case WORKFLOW_STAGE_ID_EDITING:
00194 return MONOGRAPH_FILE_FINAL;
00195 break;
00196 case WORKFLOW_STAGE_ID_PRODUCTION:
00197 return MONOGRAPH_FILE_PRODUCTION_READY;
00198 break;
00199 default:
00200 break;
00201 }
00202 }
00203 }
00204
00205 ?>