Example #1
0
 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);
     }
 }
Example #3
0
 /**
  * @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);
 }