From 220ea632d6384a660c4da2448b20d768f7620197 Mon Sep 17 00:00:00 2001 From: Jamie Snape Date: Wed, 6 May 2015 15:03:54 -0400 Subject: [PATCH] Check that items have at least one revision where necessary --- core/controllers/ItemController.php | 9 +++++ core/controllers/ShareController.php | 10 ++++- core/controllers/UploadController.php | 6 +-- .../components/ApihelperComponent.php | 6 +-- .../components/ApiitemComponent.php | 2 +- .../components/ApisystemComponent.php | 2 +- .../components/ExportComponent.php | 12 +++--- core/models/base/MetadataModelBase.php | 4 +- core/models/pdo/FolderModel.php | 2 +- core/models/pdo/ItemRevisionModel.php | 3 ++ .../components/ExecuteComponent.php | 5 ++- .../components/ApiitemComponent.php | 3 ++ .../components/ExtractorComponent.php | 4 ++ .../components/ApiserverComponent.php | 3 ++ modules/oai/library/oai/listrecords.php | 3 ++ .../controllers/components/ApiComponent.php | 12 ++++++ .../components/ParaviewComponent.php | 12 ++++++ .../components/ValidationComponent.php | 4 +- .../components/GetReadmeComponent.php | 6 +++ .../controllers/ExecutableController.php | 3 ++ .../controllers/JobController.php | 16 +++++--- .../components/ExecutableComponent.php | 6 +++ modules/solr/Notification.php | 2 +- .../components/ApisearchComponent.php | 10 +++-- .../components/ApiitemComponent.php | 7 +++- .../components/ImagemagickComponent.php | 6 ++- .../visualize/controllers/ImageController.php | 9 +++-- .../visualize/controllers/MediaController.php | 7 +++- .../controllers/ParaviewController.php | 18 +++++++++ .../visualize/controllers/PdfController.php | 7 +++- .../visualize/controllers/TxtController.php | 7 +++- .../visualize/controllers/WebglController.php | 3 ++ .../controllers/components/MainComponent.php | 39 ++++++++++++------- 33 files changed, 191 insertions(+), 57 deletions(-) diff --git a/core/controllers/ItemController.php b/core/controllers/ItemController.php index 405f969e0..1f564a6ac 100644 --- a/core/controllers/ItemController.php +++ b/core/controllers/ItemController.php @@ -68,6 +68,9 @@ public function editmetadataAction() } else { $metadataItemRevision = $this->Item->getLastRevision($itemDao); } + if ($metadataItemRevision === false) { + throw new Zend_Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); + } $metadatavalues = $this->ItemRevision->getMetadata($metadataItemRevision); $this->view->metadata = null; @@ -121,6 +124,9 @@ public function viewAction() } else { $metadataItemRevision = $itemRevision; } + if ($metadataItemRevision === false) { + throw new Zend_Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); + } $deleteMetadata = $this->getParam('deleteMetadata'); $editMetadata = $this->getParam('editMetadata'); if (isset($deleteMetadata) && !empty($deleteMetadata) && $this->view->isModerator) { // delete metadata field @@ -603,6 +609,9 @@ public function getmetadatavalueexistsAction() } else { $metadataItemRevision = $this->Item->getLastRevision($itemDao); } + if ($metadataItemRevision === false) { + throw new Zend_Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); + } $metadataDao->setItemrevisionId($metadataItemRevision->getKey()); if ($this->Metadata->getMetadataValueExists($metadataDao)) { $exists = 1; diff --git a/core/controllers/ShareController.php b/core/controllers/ShareController.php index 08206f408..8c8bf10b3 100644 --- a/core/controllers/ShareController.php +++ b/core/controllers/ShareController.php @@ -301,11 +301,13 @@ public function linksAction() case 'folder': $dao = $this->Folder->load($id); $name = $dao->getName().'.zip'; + $hasDownload = true; break; case 'item': $dao = $this->Item->load($id); - $headRev = $this->Item->getLastRevision($dao); $name = $dao->getName(); + $headRev = $this->Item->getLastRevision($dao); + $hasDownload = $headRev !== false; if (count($headRev->getBitstreams()) > 1) { $name .= '.zip'; } @@ -318,6 +320,10 @@ public function linksAction() $this->view->type = $type; $this->view->id = $id; $this->view->viewUrl = $baseUrl.'/'.$type.'/'.$id; - $this->view->downloadUrl = $baseUrl.'/download/'.$type.'/'.$id.'/'.urlencode($name); + if ($hasDownload === false) { + $this->view->downloadUrl = ''; + } else { + $this->view->downloadUrl = $baseUrl.'/download/'.$type.'/'.$id.'/'.urlencode($name); + } } } diff --git a/core/controllers/UploadController.php b/core/controllers/UploadController.php index f8c3b7365..f0a23391f 100644 --- a/core/controllers/UploadController.php +++ b/core/controllers/UploadController.php @@ -113,10 +113,10 @@ public function revisionAction() // Check if the revision exists and if it does, we send its license ID to // the view. If it does not exist we use our default license - if ($itemRevision) { - $this->view->selectedLicense = $itemRevision->getLicenseId(); - } else { + if ($itemRevision === false) { $this->view->selectedLicense = Zend_Registry::get('configGlobal')->defaultlicense; + } else { + $this->view->selectedLicense = $itemRevision->getLicenseId(); } $this->view->allLicenses = $this->License->getAll(); diff --git a/core/controllers/components/ApihelperComponent.php b/core/controllers/components/ApihelperComponent.php index 3c5e71dd8..800f7fc32 100644 --- a/core/controllers/components/ApihelperComponent.php +++ b/core/controllers/components/ApihelperComponent.php @@ -116,7 +116,7 @@ public function getItemRevision($item, $revisionNumber = null) if ($revisionDao) { return $revisionDao; } else { - throw new Exception("The item must have at least one revision to have metadata.", MIDAS_INVALID_POLICY); + throw new Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); } } @@ -129,7 +129,7 @@ public function getItemRevision($item, $revisionNumber = null) } $revisions = $item->getRevisions(); if (count($revisions) === 0) { - throw new Exception("The item must have at least one revision to have metadata.", MIDAS_INVALID_POLICY); + throw new Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); } // check revisions exist foreach ($revisions as $revision) { @@ -231,7 +231,7 @@ public function setMetadata($item, $type, $element, $qualifier, $value, $revisio // If no module handles this metadata, we add it as normal metadata on the item revision if (!$revisionDao) { - throw new Exception("The item must have at least one revision to have metadata.", MIDAS_INVALID_POLICY); + throw new Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); } /** @var MetadataModel $metadataModel */ diff --git a/core/controllers/components/ApiitemComponent.php b/core/controllers/components/ApiitemComponent.php index 4b50572ff..7cb5c4877 100644 --- a/core/controllers/components/ApiitemComponent.php +++ b/core/controllers/components/ApiitemComponent.php @@ -265,7 +265,7 @@ public function itemDeletemetadataAll($args) ) { $revisions = $item->getRevisions(); if (count($revisions) === 0) { - throw new Exception("The item must have at least one revision to have metadata.", MIDAS_INVALID_POLICY); + throw new Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); } foreach ($revisions as $revisionDao) { $itemRevisionModel->deleteMetadata($revisionDao); diff --git a/core/controllers/components/ApisystemComponent.php b/core/controllers/components/ApisystemComponent.php index 01a5ab12f..06b103b7c 100644 --- a/core/controllers/components/ApisystemComponent.php +++ b/core/controllers/components/ApisystemComponent.php @@ -398,7 +398,7 @@ public function uploadGeneratetoken($args) ) { $revision = $itemModel->getLastRevision($item); - if ($revision == false) { + if ($revision === false) { // Create new revision if none exists yet Zend_Loader::loadClass('ItemRevisionDao', BASE_PATH.'/core/models/dao'); $revision = new ItemRevisionDao(); diff --git a/core/controllers/components/ExportComponent.php b/core/controllers/components/ExportComponent.php index 6ff78d293..de0b7d2f0 100644 --- a/core/controllers/components/ExportComponent.php +++ b/core/controllers/components/ExportComponent.php @@ -109,9 +109,9 @@ public function exportBitstreams($userDao, $targetDir, $itemIds, $shouldSymLink) } // Use the given revision_number if it is not empty if (isset($tmpId[1])) { - $revisionNum = $itemModel->getRevision($item, $tmpId[1]); - if ($revisionNum !== false) { - $revisions[] = $revisionNum; + $revision = $itemModel->getRevision($item, $tmpId[1]); + if ($revision !== false) { + $revisions[] = $revision; } else { throw new Zend_Exception( "Revision number ".$tmpId[1]." for item ".$tmpId[0]." does not exist. Please check your input." @@ -119,8 +119,10 @@ public function exportBitstreams($userDao, $targetDir, $itemIds, $shouldSymLink) } } else { // Otherwise use the latest revision - $revisionNum = $itemModel->getLastRevision($item); - $revisions[] = $revisionNum; + $revision = $itemModel->getLastRevision($item); + if ($revision !== false) { + $revisions[] = $revision; + } } } } diff --git a/core/models/base/MetadataModelBase.php b/core/models/base/MetadataModelBase.php index 386def81e..28d74995d 100644 --- a/core/models/base/MetadataModelBase.php +++ b/core/models/base/MetadataModelBase.php @@ -122,7 +122,9 @@ public function addMetadataValue( /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $lastrevision = $itemModel->getLastRevision($item); - + if ($lastrevision === false) { + throw new Zend_Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); + } // refresh zend search index if latest revision has changed if ($lastrevision->getKey() == $itemRevisionDao->getKey()) { $itemModel->save($item, $passItemMetadataChanged); diff --git a/core/models/pdo/FolderModel.php b/core/models/pdo/FolderModel.php index 7b1c24136..61bdfbdd3 100644 --- a/core/models/pdo/FolderModel.php +++ b/core/models/pdo/FolderModel.php @@ -1351,7 +1351,7 @@ public function zipStream(&$zip, $path, $folder, &$userDao, &$overrideOutputFunc $item = $this->initDao('Item', $row); $rev = $this->Item->getLastRevision($item); - if (!$rev) { + if ($rev === false) { $zip->addFile($path.'/'.$item->getName(), ''); // add empty item continue; } diff --git a/core/models/pdo/ItemRevisionModel.php b/core/models/pdo/ItemRevisionModel.php index 481c6e193..9b8a23f4e 100644 --- a/core/models/pdo/ItemRevisionModel.php +++ b/core/models/pdo/ItemRevisionModel.php @@ -95,6 +95,9 @@ public function deleteMetadata($revisiondao, $metadataId = null) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $lastrevision = $itemModel->getLastRevision($item); + if ($lastrevision === false) { + throw new Zend_Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); + } // refresh lucene search index if ($lastrevision->getKey() == $revisiondao->getKey()) { diff --git a/modules/batchmake/controllers/components/ExecuteComponent.php b/modules/batchmake/controllers/components/ExecuteComponent.php index 4f2939441..a64ecc7c3 100644 --- a/modules/batchmake/controllers/components/ExecuteComponent.php +++ b/modules/batchmake/controllers/components/ExecuteComponent.php @@ -62,9 +62,12 @@ public function exportSingleBitstreamItemsToWorkDataDir($userDao, $taskDao, $ite foreach ($itemsForExport as $itemName => $itemId) { $itemDao = $itemModel->load($itemId); $revisionDao = $itemModel->getLastRevision($itemDao); + if ($revisionDao === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreamDaos = $revisionDao->getBitstreams(); if (empty($bitstreamDaos)) { - throw new Zend_Exception("Item ".$itemId." had no bitstreams."); + throw new Zend_Exception("Item ".$itemId." has no bitstreams."); } $imageBitstreamDao = $bitstreamDaos[0]; $exportedBitstreamPath = $datapath.'/'.$itemId.'/'.$imageBitstreamDao->getName(); diff --git a/modules/dicomextractor/controllers/components/ApiitemComponent.php b/modules/dicomextractor/controllers/components/ApiitemComponent.php index 189ee1054..d077177f1 100644 --- a/modules/dicomextractor/controllers/components/ApiitemComponent.php +++ b/modules/dicomextractor/controllers/components/ApiitemComponent.php @@ -53,6 +53,9 @@ public function extract($args) } $revisionDao = $itemModel->getLastRevision($itemDao); + if ($revisionDao === false) { + throw new Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } /** @var Dicomextractor_ExtractorComponent $dicomComponent */ $dicomComponent = MidasLoader::loadComponent('Extractor', 'dicomextractor'); diff --git a/modules/dicomextractor/controllers/components/ExtractorComponent.php b/modules/dicomextractor/controllers/components/ExtractorComponent.php index 1cc296c2d..5985e1c6d 100644 --- a/modules/dicomextractor/controllers/components/ExtractorComponent.php +++ b/modules/dicomextractor/controllers/components/ExtractorComponent.php @@ -153,6 +153,10 @@ public function thumbnail($item) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel("Item"); $revision = $itemModel->getLastRevision($item); + if ($revision === false) { + return; + } + $bitstreams = $revision->getBitstreams(); $numBitstreams = count($bitstreams); if ($numBitstreams < 1) { diff --git a/modules/dicomserver/controllers/components/ApiserverComponent.php b/modules/dicomserver/controllers/components/ApiserverComponent.php index 195f2b530..b435feb19 100644 --- a/modules/dicomserver/controllers/components/ApiserverComponent.php +++ b/modules/dicomserver/controllers/components/ApiserverComponent.php @@ -350,6 +350,9 @@ public function register($args) } $revisionDao = $itemModel->getLastRevision($itemDao); + if ($revisionDao === false) { + throw new Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } /** @var Dicomserver_ServerComponent $dicomComponent */ $dicomComponent = MidasLoader::loadComponent('Server', 'dicomserver'); diff --git a/modules/oai/library/oai/listrecords.php b/modules/oai/library/oai/listrecords.php index f7f5757f0..5442121a9 100644 --- a/modules/oai/library/oai/listrecords.php +++ b/modules/oai/library/oai/listrecords.php @@ -199,6 +199,9 @@ $output .= ' '."\n"; $revision = $itemModel->getLastRevision($element); + if ($revision === false) { + throw new Zend_Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); + } $metadata = $itemRevisionModel->getMetadata($revision); include BASE_PATH.'/modules/oai/library/oai/'.$inc_record; diff --git a/modules/packages/controllers/components/ApiComponent.php b/modules/packages/controllers/components/ApiComponent.php index 2c533104a..0e03f6de9 100644 --- a/modules/packages/controllers/components/ApiComponent.php +++ b/modules/packages/controllers/components/ApiComponent.php @@ -104,7 +104,13 @@ public function extensionList($args) foreach ($daos as $dao) { $revision = $itemModel->getLastRevision($dao->getItem()); + if ($revision === false) { + continue; + } $bitstreams = $revision->getBitstreams(); + if (count($bitstreams) === 0) { + continue; + } $bitstream = $bitstreams[0]; $results[] = array( @@ -231,6 +237,9 @@ public function extensionUpload($args) /** @var ItemRevisionModel $itemRevisionModel */ $itemRevisionModel = MidasLoader::loadModel('ItemRevision'); $itemRevision = $itemModel->getLastRevision($item); + if ($itemRevision === false) { + throw new Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $itemRevision->setChanges($args['revision']); $itemRevisionModel->save($itemRevision); @@ -317,6 +326,9 @@ public function packageList($args) $results = array(); foreach ($daos as $dao) { $revision = $itemModel->getLastRevision($dao->getItem()); + if ($revision === false) { + continue; + } $bitstreams = $revision->getBitstreams(); $bitstreamsArray = array(); foreach ($bitstreams as $bitstream) { diff --git a/modules/pvw/controllers/components/ParaviewComponent.php b/modules/pvw/controllers/components/ParaviewComponent.php index 2c7d7e32d..ec95becbf 100644 --- a/modules/pvw/controllers/components/ParaviewComponent.php +++ b/modules/pvw/controllers/components/ParaviewComponent.php @@ -242,14 +242,26 @@ private function _createDataDir($itemDao, $meshItems, $instanceDao) /** @var ItemRevisionModel $revisionModel */ $revisionModel = MidasLoader::loadModel('ItemRevision'); $rev = $itemModel->getLastRevision($itemDao); + if ($rev === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $rev->getBitstreams(); + if (count($bitstreams) === 0) { + throw new Zend_Exception('The item has no bitstreams', MIDAS_INVALID_POLICY); + } $src = $bitstreams[0]->getFullpath(); symlink($src, $path.'/main/'.$bitstreams[0]->getName()); // Symlink all the surfaces into the surfaces subdir foreach ($meshItems as $meshItem) { $rev = $itemModel->getLastRevision($meshItem); + if ($rev === false) { + continue; + } $bitstreams = $rev->getBitstreams(); + if (count($bitstreams) === 0) { + continue; + } $src = $bitstreams[0]->getFullpath(); $linkPath = $path.'/surfaces/'.$meshItem->getKey().'_'.$bitstreams[0]->getName(); symlink($src, $linkPath); diff --git a/modules/pvw/controllers/components/ValidationComponent.php b/modules/pvw/controllers/components/ValidationComponent.php index f8cacbd98..6d28bb6c1 100644 --- a/modules/pvw/controllers/components/ValidationComponent.php +++ b/modules/pvw/controllers/components/ValidationComponent.php @@ -43,11 +43,11 @@ private function _testItem($itemDao, $extensions) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); - if (empty($revision)) { + if ($revision === false) { return false; } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) == 0) { + if (count($bitstreams) === 0) { return false; } diff --git a/modules/readmes/controllers/components/GetReadmeComponent.php b/modules/readmes/controllers/components/GetReadmeComponent.php index 1f1947de8..3220d16f7 100644 --- a/modules/readmes/controllers/components/GetReadmeComponent.php +++ b/modules/readmes/controllers/components/GetReadmeComponent.php @@ -44,7 +44,13 @@ public function fromFolder($folder) return array('text' => ''); } $revisionDao = $itemModel->getLastRevision($readmeItem); + if ($revisionDao === false) { + return array('text' => ''); + } $bitstreams = $revisionDao->getBitstreams(); + if (count($bitstreams) === 0) { + return array('text' => ''); + } $bitstream = $bitstreams[0]; $path = $bitstream->getAssetstore()->getPath().'/'.$bitstream->getPath(); $contents = file_get_contents($path); diff --git a/modules/remoteprocessing/controllers/ExecutableController.php b/modules/remoteprocessing/controllers/ExecutableController.php index 7bf25110c..fd427fe2e 100644 --- a/modules/remoteprocessing/controllers/ExecutableController.php +++ b/modules/remoteprocessing/controllers/ExecutableController.php @@ -74,6 +74,9 @@ public function defineAction() file_put_contents($pathFile, $xmlContent); $revision = $this->Item->getLastRevision($itemDao); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); $itemRevisionDao = new ItemRevisionDao(); diff --git a/modules/remoteprocessing/controllers/JobController.php b/modules/remoteprocessing/controllers/JobController.php index 08b92fa43..ca1c64dec 100644 --- a/modules/remoteprocessing/controllers/JobController.php +++ b/modules/remoteprocessing/controllers/JobController.php @@ -257,8 +257,11 @@ public function viewAction() } elseif ($item->type == MIDAS_REMOTEPROCESSING_RELATION_TYPE_INPUT) { $inputs[$item->getName()] = $item; } elseif ($item->type == MIDAS_REMOTEPROCESSING_RELATION_TYPE_OUPUT) { - $reviesion = $this->Item->getLastRevision($item); - $metadata = $this->ItemRevision->getMetadata($reviesion); + $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + throw new Zend_Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); + } + $metadata = $this->ItemRevision->getMetadata($revision); $item->metadata = $metadata; foreach ($metadata as $m) { @@ -271,11 +274,14 @@ public function viewAction() $outputs[] = $item; } elseif ($item->type == MIDAS_REMOTEPROCESSING_RELATION_TYPE_RESULTS) { - $reviesion = $this->Item->getLastRevision($item); - $metadata = $this->ItemRevision->getMetadata($reviesion); + $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + throw new Zend_Exception('The item must have at least one revision to have metadata', MIDAS_INVALID_POLICY); + } + $metadata = $this->ItemRevision->getMetadata($revision); $item->metadata = $metadata; - $bitstreams = $reviesion->getBitstreams(); + $bitstreams = $revision->getBitstreams(); if (count($bitstreams) == 1) { $log = file_get_contents($bitstreams[0]->getFullPath()); } diff --git a/modules/remoteprocessing/controllers/components/ExecutableComponent.php b/modules/remoteprocessing/controllers/components/ExecutableComponent.php index 4b994285c..677ddb3eb 100644 --- a/modules/remoteprocessing/controllers/components/ExecutableComponent.php +++ b/modules/remoteprocessing/controllers/components/ExecutableComponent.php @@ -32,6 +32,9 @@ public function getMetaIoFile($itemDao) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); + if ($revision === false) { + return false; + } $bitstreams = $revision->getBitstreams(); $metaFile = false; foreach ($bitstreams as $b) { @@ -52,6 +55,9 @@ public function getExecutable($itemDao) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); + if ($revision === false) { + return false; + } $bitstreams = $revision->getBitstreams(); foreach ($bitstreams as $b) { if (is_executable($b->getFullPath())) { diff --git a/modules/solr/Notification.php b/modules/solr/Notification.php index 7273c6018..aa14cfb80 100644 --- a/modules/solr/Notification.php +++ b/modules/solr/Notification.php @@ -87,7 +87,7 @@ public function indexItem($args) $revision = $this->Item->getLastRevision($item); - if ($revision != false) { + if ($revision !== false) { $metadata = $this->ItemRevision->getMetadata($revision); $metadataString = ''; diff --git a/modules/solr/controllers/components/ApisearchComponent.php b/modules/solr/controllers/components/ApisearchComponent.php index 14f8424bc..fb5609b90 100644 --- a/modules/solr/controllers/components/ApisearchComponent.php +++ b/modules/solr/controllers/components/ApisearchComponent.php @@ -101,10 +101,12 @@ public function searchAdvanced($args) // get bitstreams only from last revision $bitstreamArray = array(); $headRevision = $itemModel->getLastRevision($item); - $bitstreams = $headRevision->getBitstreams(); - foreach ($bitstreams as $b) { - $btmp = $b->toArray(); - $bitstreamArray[] = $btmp['bitstream_id']; + if ($headRevision !== false) { + $bitstreams = $headRevision->getBitstreams(); + foreach ($bitstreams as $b) { + $btmp = $b->toArray(); + $bitstreamArray[] = $btmp['bitstream_id']; + } } $itemInfo['bitstreams'] = $bitstreamArray; diff --git a/modules/thumbnailcreator/controllers/components/ApiitemComponent.php b/modules/thumbnailcreator/controllers/components/ApiitemComponent.php index bbe226a0f..1c1fe809b 100644 --- a/modules/thumbnailcreator/controllers/components/ApiitemComponent.php +++ b/modules/thumbnailcreator/controllers/components/ApiitemComponent.php @@ -144,10 +144,15 @@ public function createSmallThumbnail($args) ); } $revision = $itemModel->getLastRevision($item); + if ($revision === false) { + throw new Exception( + 'The head revision of the item does not contain any revisions', MIDAS_INVALID_POLICY + ); + } $bitstreams = $revision->getBitstreams(); if (count($bitstreams) < 1) { throw new Exception( - 'The head revision of the item does not contain any bitstream', MIDAS_INVALID_PARAMETER + 'The head revision of the item does not contain any bitstreams', MIDAS_INVALID_POLICY ); } $bitstream = $bitstreams[0]; diff --git a/modules/thumbnailcreator/controllers/components/ImagemagickComponent.php b/modules/thumbnailcreator/controllers/components/ImagemagickComponent.php index fdf9278d3..a5df82ff6 100644 --- a/modules/thumbnailcreator/controllers/components/ImagemagickComponent.php +++ b/modules/thumbnailcreator/controllers/components/ImagemagickComponent.php @@ -215,9 +215,11 @@ public function createThumbnail($item, $inputFile = null) } $revision = $itemModel->getLastRevision($item); + if ($revision === false) { + return; + } $bitstreams = $revision->getBitstreams(); - - if (count($bitstreams) < 1) { + if (count($bitstreams) === 0) { return; } diff --git a/modules/visualize/controllers/ImageController.php b/modules/visualize/controllers/ImageController.php index 4da0e533c..7d607ec64 100644 --- a/modules/visualize/controllers/ImageController.php +++ b/modules/visualize/controllers/ImageController.php @@ -32,13 +32,16 @@ public function indexAction() if ($item === false || !$this->Item->policyCheck($item, $this->userSession->Dao, MIDAS_POLICY_READ) ) { - throw new Zend_Exception("This item doesn't exist or you don't have the permissions."); + throw new Zend_Exception("This item doesn't exist or you don't have the permissions."); } $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) != 1) { - throw new Zend_Exception('Error'); + if (count($bitstreams) === 0) { + throw new Zend_Exception('The item has no bitstreams', MIDAS_INVALID_POLICY); } $this->bistream = $bitstreams[0]; diff --git a/modules/visualize/controllers/MediaController.php b/modules/visualize/controllers/MediaController.php index 3bf923335..ee54e992d 100644 --- a/modules/visualize/controllers/MediaController.php +++ b/modules/visualize/controllers/MediaController.php @@ -36,9 +36,12 @@ public function indexAction() } $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) != 1) { - throw new Zend_Exception('Error'); + if (count($bitstreams) === 0) { + throw new Zend_Exception('The item has no bitstreams', MIDAS_INVALID_POLICY); } $this->bistream = $bitstreams[0]; diff --git a/modules/visualize/controllers/ParaviewController.php b/modules/visualize/controllers/ParaviewController.php index 7afb61e47..cdbc54bd7 100644 --- a/modules/visualize/controllers/ParaviewController.php +++ b/modules/visualize/controllers/ParaviewController.php @@ -65,6 +65,9 @@ public function surfaceAction() $tmpFolderName = $pathArray['folderName']; $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); foreach ($bitstreams as $bitstream) { if ($useSymlinks) { @@ -157,6 +160,9 @@ public function dualAction() $subPath = $path.'/'.$side; mkdir($subPath); $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); foreach ($bitstreams as $bitstream) { if ($useSymlinks) { @@ -244,6 +250,9 @@ public function volumeAction() $tmpFolderName = $pathArray['folderName']; $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); foreach ($bitstreams as $bitstream) { if ($useSymlinks) { @@ -281,6 +290,9 @@ public function volumeAction() throw new Zend_Exception("This item doesn't exist or you don't have the permissions."); } $revision = $this->Item->getLastRevision($otherItem); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); foreach ($bitstreams as $bitstream) { $otherFile = $path.'/'.$bitstream->getName(); @@ -393,6 +405,9 @@ public function sliceAction() $tmpFolderName = $pathArray['folderName']; $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); foreach ($bitstreams as $bitstream) { if ($useSymlinks) { @@ -430,6 +445,9 @@ public function sliceAction() throw new Zend_Exception("This item doesn't exist or you don't have the permissions."); } $revision = $this->Item->getLastRevision($otherItem); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); foreach ($bitstreams as $bitstream) { $otherFile = $path.'/'.$bitstream->getName(); diff --git a/modules/visualize/controllers/PdfController.php b/modules/visualize/controllers/PdfController.php index c631c5ec3..09c2dbcaa 100644 --- a/modules/visualize/controllers/PdfController.php +++ b/modules/visualize/controllers/PdfController.php @@ -37,9 +37,12 @@ public function indexAction() } $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) != 1) { - throw new Zend_Exception('Error'); + if (count($bitstreams) === 0) { + throw new Zend_Exception('The item has no bitstreams', MIDAS_INVALID_POLICY); } $this->bistream = $bitstreams[0]; echo ""; diff --git a/modules/visualize/controllers/TxtController.php b/modules/visualize/controllers/TxtController.php index 2469a9ed0..ee574d8d4 100644 --- a/modules/visualize/controllers/TxtController.php +++ b/modules/visualize/controllers/TxtController.php @@ -37,9 +37,12 @@ public function indexAction() } $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) != 1) { - throw new Zend_Exception('Error'); + if (count($bitstreams) === 0) { + throw new Zend_Exception('The item has no bitstreams', MIDAS_INVALID_POLICY); } $this->bistream = $bitstreams[0]; if (Zend_Registry::get('configGlobal')->environment != 'testing') { diff --git a/modules/visualize/controllers/WebglController.php b/modules/visualize/controllers/WebglController.php index 41fbe61ca..b1b442d94 100644 --- a/modules/visualize/controllers/WebglController.php +++ b/modules/visualize/controllers/WebglController.php @@ -49,6 +49,9 @@ public function indexAction() continue; } $revision = $this->Item->getLastRevision($item); + if ($revision === false) { + continue; + } $bitstreams = $revision->getBitstreams(); if (count($bitstreams) == 1) { continue; diff --git a/modules/visualize/controllers/components/MainComponent.php b/modules/visualize/controllers/components/MainComponent.php index fd0e8bab7..0249e04c1 100644 --- a/modules/visualize/controllers/components/MainComponent.php +++ b/modules/visualize/controllers/components/MainComponent.php @@ -91,7 +91,13 @@ public function convertToThreejs($revision) ); $itemModel->copyParentPolicies($newItem, $parent); $newRevision = $itemModel->getLastRevision($newItem); + if ($newRevision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $newRevision->getBitstreams(); + if (count($bitstreams) === 0) { + throw new Zend_Exception('The item has no bitstreams', MIDAS_INVALID_POLICY); + } $bitstreamDao = $bitstreams[0]; Zend_Loader::loadClass('BitstreamDao', BASE_PATH.'/core/models/dao'); @@ -133,11 +139,11 @@ public function canVisualizeWithSliceView($itemDao) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); - if (empty($revision)) { + if ($revision === false) { return false; } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) == 0) { + if (count($bitstreams) === 0) { return false; } @@ -162,11 +168,11 @@ public function canVisualizeWithSurfaceView($itemDao) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); - if (empty($revision)) { + if ($revision === false) { return false; } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) == 0) { + if (count($bitstreams) === 0) { return false; } @@ -191,11 +197,11 @@ public function canVisualizeWithParaview($itemDao) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); - if (empty($revision)) { + if ($revision === false) { return false; } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) == 0) { + if (count($bitstreams) === 0) { return false; } @@ -212,11 +218,11 @@ public function canVisualizeTxt($itemDao) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); - if (empty($revision)) { + if ($revision === false) { return false; } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) == 0) { + if (count($bitstreams) === 0) { return false; } @@ -233,7 +239,7 @@ public function canVisualizeWebgl($itemDao) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); - if (empty($revision)) { + if ($revision === false) { return false; } $bitstreams = $revision->getBitstreams(); @@ -258,11 +264,11 @@ public function canVisualizePdf($itemDao) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); - if (empty($revision)) { + if ($revision === false) { return false; } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) == 0) { + if (count($bitstreams) === 0) { return false; } @@ -279,11 +285,11 @@ public function canVisualizeImage($itemDao) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); - if (empty($revision)) { + if ($revision === false) { return false; } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) == 0) { + if (count($bitstreams) === 0) { return false; } @@ -300,11 +306,11 @@ public function canVisualizeMedia($itemDao) /** @var ItemModel $itemModel */ $itemModel = MidasLoader::loadModel('Item'); $revision = $itemModel->getLastRevision($itemDao); - if (empty($revision)) { + if ($revision === false) { return false; } $bitstreams = $revision->getBitstreams(); - if (count($bitstreams) == 0) { + if (count($bitstreams) === 0) { return false; } @@ -341,6 +347,9 @@ public function processParaviewData($itemDao) $tmpFolderName = $pathArray['folderName']; $revision = $itemModel->getLastRevision($itemDao); + if ($revision === false) { + throw new Zend_Exception('The item has no revisions', MIDAS_INVALID_POLICY); + } $bitstreams = $revision->getBitstreams(); foreach ($bitstreams as $bitstream) { if ($useSymlinks) {