public function indexAction() { $docId = $this->getRequest()->getParam('docId', null); $container = null; $fileHandle = null; try { $container = new Oai_Model_Container($docId, $this->_logger); $fileHandle = $container->getFileHandle(); } catch (Oai_Model_Exception $e) { $this->view->errorMessage = $e->getMessage(); $this->getResponse()->setHttpResponseCode(500); return $this->render('error'); } // prepare response $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $this->getResponse()->setHeader('Content-Type', $fileHandle->getMimeType(), true)->setHeader('Content-Disposition', 'attachment; filename=' . $container->getName() . $fileHandle->getExtension(), true); $this->_helper->SendFile->setLogger($this->_logger); try { $this->_helper->SendFile($fileHandle->getPath()); } catch (Exception $e) { $this->_logger->err($e->getMessage()); $this->getResponse()->clearAllHeaders(); $this->getResponse()->clearBody(); $this->getResponse()->setHttpResponseCode(500); } $fileHandle->delete(); }
private function tryAccessForDocument($docId, $accessAllowed) { $model = new Oai_Model_Container($docId); $tarball = null; $exceptionMessage = null; try { $tarball = $model->getFileHandle(); } catch (Oai_Model_Exception $e) { $exceptionMessage = $e->getMessage(); } if ($accessAllowed === true) { $this->assertEquals('requested document does not have any associated readable files', $exceptionMessage); } else { $this->assertEquals('access to requested document is forbidden', $exceptionMessage); } }
/** * @expectedException Oai_Model_Exception * @expectedExceptionMessage access to requested document files is embargoed */ public function testGetAccessibleFilesForEmbargoedDocument() { $this->enableSecurity(); $doc = $this->createTestDocument(); $doc->setServerState('published'); // set embargo date to tomorrow $date = new Opus_Date(); $date->setDateTime(new DateTime('tomorrow')); $doc->setEmbargoDate($date); // add a file visible in OAI $file = $this->createTestFile('foo.pdf'); $file->setVisibleInOai(true); $doc->addFile($file); $doc->store(); $this->assertFalse($doc->hasEmbargoPassed()); // not yet passed $container = new Oai_Model_Container($doc->getId()); $files = $container->getAccessibleFiles(); $this->assertCount(1, $files); }