• Main Page
  • Modules
  • Classes
  • Files
  • File List

controllers/grid/files/SubmissionFilesCategoryGridDataProvider.inc.php

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    // Extended method from CategoryGridDataProvider.
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    // Implement template methods from GridDataProvider
00057    //
00061    function getAuthorizationPolicy(&$request, $args, $roleAssignments) {
00062       // Get the submission files grid data provider authorization policy.
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       // Return only the user accessible workflow stages.
00082       return array_keys($this->getAuthorizedContextObject(ASSOC_TYPE_ACCESSIBLE_WORKFLOW_STAGES));
00083    }
00084 
00085 
00086    //
00087    // Implement template methods from CategoryGridDataProvider
00088    //
00092    function &getCategoryData($categoryDataElement, $filter = null, $reviewRound = null) {
00093       $submissionFileDao =& DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
00094       $dataProvider =& $this->getDataProvider();
00095       $monograph =& $dataProvider->getMonograph();
00096       $stageId = $categoryDataElement;
00097       $fileStage = $this->_getFileStageByStageId($stageId);
00098       $stageMonographFiles = null;
00099 
00100       // For review stages, get the revisions of the review round that user is currently accessing.
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          // Filter the passed workflow stage files.
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    // Public methods
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    // Protected methods.
00156    //
00164    function &initGridDataProvider($fileStage, $initParams = null) {
00165       // By default, this category grid data provider use the
00166       // SubmissionFilesGridDataProvider.
00167       import('controllers.grid.files.SubmissionFilesGridDataProvider');
00168       $gridDataProvider = new SubmissionFilesGridDataProvider($fileStage);
00169 
00170       return $gridDataProvider;
00171    }
00172 
00173 
00174    //
00175    // Private helper methods.
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 ?>

Generated on Mon Sep 17 2012 13:58:56 for Open Monograph Press by  doxygen 1.7.1