Example #1
0
 public function indexAction()
 {
     $docId = $this->_getParam('docId', null);
     $path = $this->_getParam('file', null);
     $realm = Opus_Security_Realm::getInstance();
     $file_model = null;
     try {
         $file_model = new Frontdoor_Model_File($docId, $path);
     } catch (Frontdoor_Model_FrontdoorDeliveryException $e) {
         $this->handleDeliveryError($e);
         return;
     }
     $file_object = null;
     try {
         $file_object = $file_model->getFileObject($realm);
     } catch (Frontdoor_Model_FrontdoorDeliveryException $e) {
         $this->handleDeliveryError($e);
         return;
     }
     if (!$file_object->exists()) {
         $this->handleDeliveryError(new Frontdoor_Model_FileNotFoundException());
         return;
     }
     $full_filename = $file_object->getPath();
     $base_filename = basename($full_filename);
     $base_filename = self::quoteFileName($base_filename);
     $this->disableViewRendering();
     $this->getResponse()->clearAllHeaders()->setHeader('Content-Disposition', 'attachment; filename="' . $base_filename . '"', true)->setHeader('Content-type', $file_object->getMimeType(), true)->setHeader('Cache-Control', 'private', true)->setHeader('Pragma', 'cache', true);
     $this->_helper->SendFile->setLogger(Zend_Registry::get('Zend_Log'));
     try {
         $this->_helper->SendFile($full_filename);
     } catch (Exception $e) {
         $this->logError($e);
         $response = $this->getResponse();
         $response->clearAllHeaders();
         $response->clearBody();
         $response->setHttpResponseCode(500);
     }
     return;
 }
Example #2
0
 public function testGetFileObjectForUnpublishedFileForDocumentsAdmin()
 {
     $this->loginUser('security8', 'security8pwd');
     $file = $this->createTestFile('test.pdf');
     $doc = $this->createTestDocument();
     $doc->setServerState('unpublished');
     $doc->addFile($file);
     $date = new Opus_Date();
     $date->setYear('2100')->setMonth('00')->setDay('01');
     $doc->setEmbargoDate($date);
     $docId = $doc->store();
     $model = new Frontdoor_Model_File($docId, "test.pdf");
     $realm = new MockRealm(true, true);
     $opusFile = $model->getFileObject($realm);
     $this->assertEquals("test.pdf", $opusFile->getPathName());
 }
Example #3
0
 /**
  * Dateien dürfen vom Admin heruntergeladen werden, auch wenn das Embargo-Datum nicht vergangen ist.
  * Regressiontest for OPUSVIER-3313.
  */
 public function testAccessForEmbargoedDocumentForAdmin()
 {
     $this->loginUser('admin', 'adminadmin');
     $file = $this->createTestFile('test.pdf');
     $doc = $this->createTestDocument();
     $doc->setServerState('published');
     $doc->addFile($file);
     $date = new Opus_Date();
     $date->setYear('2100')->setMonth('00')->setDay('01');
     $doc->setEmbargoDate($date);
     $docId = $doc->store();
     $model = new Frontdoor_Model_File($docId, "test.pdf");
     $realm = new MockRealm(true, true);
     $file = $model->getFileObject($realm);
     $this->assertEquals('test.pdf', $file->getPathName());
 }