'HandleDownloadManager')); SDV($IMap['Download:'], '$1'); SDV($LinkFunctions['Download:'], 'LinkDownloadManager'); function HandleDownloadManager($pagename, $auth='read') { global $UploadFileFmt, $UploadExts, $DownloadDisposition, $WorkDir; SDV($DownloadDisposition, "inline"); $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT); if (!$page) Abort("?cannot read $pagename"); clearstatcache(); $upname = MakeUploadName($pagename, @$_REQUEST['upname']); $filepath = FmtPageName("$UploadFileFmt/$upname", $pagename); if (!$upname || !file_exists($filepath)) { header("HTTP/1.0 404 Not Found"); Abort("?requested file not found"); exit(); } $file = "$WorkDir/download.manager"; $lock = "$WorkDir/download.manager.lock"; while (file_exists($lock)) { $st = stat($lock); if ((time-$st['mtime'])>5) { //rmdir($lock); unlink($lock); break; } } $oldumask = umask(0); //mkdir($lock); touch($lock); fixperms($lock); if (file_exists($file)) { $Downloads = unserialize(file_get_contents($file)); $Downloads[$filepath]++; } else { $Downloads[$filepath] = 1; } if ($fp = fopen($file,'w')) { fixperms($file); fputs($fp, serialize($Downloads)); fclose($fp); } //rmdir($lock); unlink($lock); // Fix for Internet Explorer 6.0 or prior bug. header('Cache-Control: maxage=3600'); //Adjust maxage appropriately header('Pragma: public'); preg_match('/\\.([^.]+)$/',$filepath,$match); if ($UploadExts[@$match[1]]) header("Content-Type: {$UploadExts[@$match[1]]}"); header("Content-Length: ".filesize($filepath)); header("Content-disposition: $DownloadDisposition; filename=$upname"); $fp = fopen($filepath, "r"); if ($fp) { while (!feof($fp)) echo fread($fp, 4096); fclose($fp); } umask($oldumask); exit(); } function LinkDownloadManager($pagename, $imap, $path, $title, $txt, $fmt=NULL) { global $FmtV, $UploadFileFmt, $LinkUploadCreateFmt, $UploadUrlFmt, $WorkDir, $UploadPrefixFmt, $EnableDirectDownload, $DownloadManagerAction; if (preg_match('!^(.*)/([^/]+)$!', $path, $match)) { $pagename = MakePageName($pagename, $match[1]); $path = $match[2]; } $upname = MakeUploadName($pagename, $path); $filepath = FmtPageName("$UploadFileFmt/$upname", $pagename); $FmtV['$LinkUpload'] = FmtPageName("\$PageUrl?action=upload&upname=$upname", $pagename); $FmtV['$LinkText'] = $txt; if (!file_exists($filepath)) return FmtPageName($LinkUploadCreateFmt, $pagename); $path = PUE(FmtPageName("\$PageUrl?action=$DownloadManagerAction&upname=$upname", $pagename)); $file = "$WorkDir/download.manager"; if (file_exists($file)) { $Downloads = unserialize(file_get_contents($file)); if (!$Downloads[$filepath]) $Downloads[$filepath] = 0; } else { $Downloads[$filepath] = 0; } $fmt = "\$LinkText "; return LinkIMap($pagename, $imap, $path, $title, $txt, $fmt); } ?>