* @copyright Copyright (C) 2010-2013 Uwe Steinmann * @version Release: @package_version@ */ /** * Class which does the busines logic for downloading a document * * @category DMS * @package SeedDMS * @author Uwe Steinmann * @copyright Copyright (C) 2010-2013 Uwe Steinmann * @version Release: @package_version@ */ class SeedDMS_Controller_Download extends SeedDMS_Controller_Common { public function version() { /* {{{ */ $dms = $this->params['dms']; $content = $this->params['content']; if(null === $this->callHook('version')) { if(file_exists($dms->contentDir . $content->getPath())) { header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($dms->contentDir . $content->getPath() )); $efilename = rawurlencode($content->getOriginalFileName()); header("Content-Disposition: attachment; filename=\"" . $efilename . "\"; filename*=UTF-8''".$efilename); header("Content-Type: " . $content->getMimeType()); header("Cache-Control: must-revalidate"); readfile($dms->contentDir . $content->getPath()); } } } /* }}} */ public function file() { /* {{{ */ $dms = $this->params['dms']; $file = $this->params['file']; if(null === $this->callHook('file')) { if(file_exists($dms->contentDir . $file->getPath())) { header("Content-Type: application/force-download; name=\"" . $file->getOriginalFileName() . "\""); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($dms->contentDir . $file->getPath() )); header("Content-Disposition: attachment; filename=\"" . $file->getOriginalFileName() . "\""); //header("Expires: 0"); header("Content-Type: " . $file->getMimeType()); //header("Cache-Control: no-cache, must-revalidate"); header("Cache-Control: must-revalidate"); //header("Pragma: no-cache"); readfile($dms->contentDir . $file->getPath()); } } } /* }}} */ public function archive() { /* {{{ */ $dms = $this->params['dms']; $filename = $this->params['file']; $basedir = $this->params['basedir']; if(null === $this->callHook('archive')) { if(file_exists($basedir . $filename)) { header('Content-Description: File Transfer'); header("Content-Type: application/zip"); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($basedir . $filename )); $efilename = rawurlencode($filename); header("Content-Disposition: attachment; filename=\"" .$efilename . "\"; filename*=UTF-8''".$efilename); header("Cache-Control: public"); ob_clean(); readfile($basedir .$filename ); } } } /* }}} */ public function log() { /* {{{ */ $dms = $this->params['dms']; $filename = $this->params['file']; $basedir = $this->params['basedir']; if(null === $this->callHook('log')) { if(file_exists($basedir . $filename)) { header("Content-Type: text/plain; name=\"" . $filename . "\""); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($basedir . $filename )); $efilename = rawurlencode($filename); header("Content-Disposition: attachment; filename=\"" .$efilename . "\"; filename*=UTF-8''".$efilename); header("Cache-Control: must-revalidate"); ob_clean(); readfile($basedir.$filename); } } } /* }}} */ public function sqldump() { /* {{{ */ $dms = $this->params['dms']; $filename = $this->params['file']; $basedir = $this->params['basedir']; if(null === $this->callHook('sqldump')) { if(file_exists($basedir . $filename)) { header("Content-Type: application/zip; name=\"" . $filename . "\""); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($basedir . $filename )); $efilename = rawurlencode($filename); header("Content-Disposition: attachment; filename=\"" .$efilename . "\"; filename*=UTF-8''".$efilename); header("Cache-Control: must-revalidate"); ob_clean(); readfile($basedir.$filename); } } } /* }}} */ public function approval() { /* {{{ */ $dms = $this->params['dms']; $document = $this->params['document']; $logid = $this->params['approvelogid']; $filename = $dms->contentDir . $document->getDir().'a'.$logid; if (!file_exists($filename) ) { $this->error = 1; return; } if(null === $this->callHook('approval')) { if(file_exists($dms->contentDir . $filename)) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimetype = finfo_file($finfo, $filename); header("Content-Type: ".$mimetype."; name=\"approval-" . $document->getID()."-".(int) $_GET['approvelogid'] . get_extension($mimetype) . "\""); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($filename )); header("Content-Disposition: attachment; filename=\"approval-" . $document->getID()."-".(int) $_GET['approvelogid'] . get_extension($mimetype) . "\""); header("Cache-Control: must-revalidate"); readfile($filename); } } } /* }}} */ public function review() { /* {{{ */ $dms = $this->params['dms']; $document = $this->params['document']; $logid = $this->params['reviewlogid']; $filename = $dms->contentDir . $document->getDir().'r'.$logid; if (!file_exists($filename) ) { $this->error = 1; return; } if(null === $this->callHook('review')) { if(file_exists($dms->contentDir . $filename)) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimetype = finfo_file($finfo, $filename); header("Content-Type: ".$mimetype."; name=\"review-" . $document->getID()."-".(int) $_GET['reviewlogid'] . get_extension($mimetype) . "\""); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($filename )); header("Content-Disposition: attachment; filename=\"review-" . $document->getID()."-".(int) $_GET['reviewlogid'] . get_extension($mimetype) . "\""); header("Cache-Control: must-revalidate"); readfile($filename); } } return true; } /* }}} */ public function run() { /* {{{ */ $dms = $this->params['dms']; $type = $this->params['type']; switch($type) { case "version": $this->version(); break; case "file": $this->file(); break; case "archive": $this->archive(); break; case "log": $this->log(); break; case "sqldump": $this->sqldump(); break; case "approval": $this->approval(); break; case "review": $this->review(); break; } } /* }}} */ }