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; }