Example #1
0
 public function download($document_id)
 {
     require_once 'HTTP/Download.php';
     PHPWS_Core::initModClass('filecabinet', 'Document.php');
     $document = new PHPWS_Document($document_id);
     if (empty($document->id)) {
         $message = 'Document id:' . $document_id;
         if (!empty($_SERVER['HTTP_REFERER'])) {
             $message .= ' request from ' . $_SERVER['HTTP_REFERER'];
         }
         PHPWS_Error::log(FC_DOCUMENT_NOT_FOUND, 'filecabinet', 'Cabinet_Action::download', $message);
         Error::errorPage('404');
     }
     $folder = new Folder($document->folder_id);
     if (!$folder->allow()) {
         $content = dgettext('filecabinet', 'Sorry, the file you requested is off limits.');
         Layout::add($content);
         return;
     }
     $file_path = $document->getPath();
     if (!is_file($file_path)) {
         $message = $file_path;
         if (!empty($_SERVER['HTTP_REFERER'])) {
             $message .= ' request from ' . $_SERVER['HTTP_REFERER'];
         }
         PHPWS_Error::log(FC_DOCUMENT_NOT_FOUND, 'filecabinet', 'Cabinet_Action::download', $message);
         Error::errorPage('404');
     }
     $file_name = preg_replace('/[^\\w]/', '-', $document->getTitle());
     $file_name = preg_replace('/-{2,}/', '-', $file_name);
     $file_name = preg_replace('/-$/', '', $file_name);
     $file_name .= '.' . $document->getExtension();
     $document->downloaded++;
     $document->save();
     $dl = new HTTP_Download();
     $dl->setFile($file_path);
     $dl->setCache(true);
     $dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, $file_name);
     $dl->setContentType($document->file_type);
     $dl->send();
     exit;
 }