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; }
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()); }
/** * 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()); }