diff options
author | Michael Gapczynski <GapczynskiM@gmail.com> | 2011-08-18 15:35:11 -0400 |
---|---|---|
committer | Michael Gapczynski <GapczynskiM@gmail.com> | 2011-08-18 15:35:31 -0400 |
commit | 498356fcb85198fd447f112268bb2bb769c05089 (patch) | |
tree | 1488ef511db12f8f87ea8d4fc07f31801f93d893 /apps/files_sharing | |
parent | 115a6c8785c265f9b95fd9b2e7d1c6a3ac0a6f1f (diff) | |
download | nextcloud-server-498356fcb85198fd447f112268bb2bb769c05089.tar.gz nextcloud-server-498356fcb85198fd447f112268bb2bb769c05089.zip |
Copy get.php into files_sharing, public links now use files templates
Diffstat (limited to 'apps/files_sharing')
-rw-r--r-- | apps/files_sharing/get.php | 85 | ||||
-rw-r--r-- | apps/files_sharing/lib_share.php | 1 |
2 files changed, 86 insertions, 0 deletions
diff --git a/apps/files_sharing/get.php b/apps/files_sharing/get.php new file mode 100644 index 00000000000..121793e36fb --- /dev/null +++ b/apps/files_sharing/get.php @@ -0,0 +1,85 @@ +<?php +$RUNTIME_NOAPPS=true; //no need to load the apps +$RUNTIME_NOSETUPFS=true; //don't setup the fs yet + +require_once '../../lib/base.php'; +require_once 'lib_share.php'; + +//get the path of the shared file +$token = $_GET['token']; +$source = OC_Share::getSource($token); +if ($source !== false) { + // TODO Manipulating the string may not be the best choice. Is there an alternative? + $user = substr($source, 1, strpos($source, "/", 1) - 1); + OC_Util::setupFS($user); + $source = substr($source, strlen("/".$user."/files")); + $dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; + print_r($dir); + $root = $source; + $source .= $dir; + if (!OC_Filesystem::file_exists($source)) { + header("HTTP/1.0 404 Not Found"); + $tmpl = new OC_Template("", "404", "guest"); + $tmpl->assign("file", $dir); + $tmpl->printPage(); + exit; + } + if (OC_Filesystem::is_dir($source)) { + $files = array(); + $rootLength = strlen($root); + foreach (OC_Files::getdirectorycontent($source) as $i) { + $i['date'] = OC_Util::formatDate($i['mtime'] ); + if ($i['type'] == 'file') { + $i['extention'] = substr($i['name'], strrpos($i['name'], ".")); + $i['basename'] = substr($i['name'], 0, strrpos($i['name'], ".")); + } + $i['directory'] = substr($i['directory'], $rootLength); + if ($i['directory'] == "/") { + $i['directory'] = ""; + } + $files[] = $i; + } + // Make breadcrumb + $breadcrumb = array(); + $pathtohere = "/"; + foreach (explode("/", $dir) as $i) { + if ($i != "") { + $pathtohere .= "$i/"; + $breadcrumb[] = array("dir" => $pathtohere, "name" => $i); + } + } + // Load the files we need + OC_Util::addStyle("files", "files"); + OC_Util::addScript("files", "files"); + OC_Util::addScript("files", "filelist"); + $breadcrumbNav = new OC_Template("files", "part.breadcrumb", ""); + $breadcrumbNav->assign("breadcrumb", $breadcrumb); + $breadcrumbNav->assign("baseUrl", OC_Helper::linkTo("files_sharing", "get.php")."?token=".$token."&"); + $list = new OC_Template("files", "part.list", ""); + $list->assign("files", $files); + $list->assign("baseUrl", OC_Helper::linkTo("files_sharing", "get.php")."?token=".$token."&"); + $tmpl = new OC_Template("files", "index", "user"); + $tmpl->assign("fileList", $list->fetchPage()); + $tmpl->assign("breadcrumb", $breadcrumbNav->fetchPage()); + $tmpl->printPage(); + } else { + //get time mimetype and set the headers + $mimetype = OC_Filesystem::getMimeType($source); + header("Content-Transfer-Encoding: binary"); + header("Expires: 0"); + header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); + header("Pragma: public"); + header("Content-Disposition: filename='".basename($source)."'"); + header("Content-Type: " . $mimetype); + header("Content-Length: " . OC_Filesystem::filesize($source)); + //download the file + @ob_clean(); + OC_Filesystem::readfile($source); + } +} else { + header("HTTP/1.0 404 Not Found"); + $tmpl = new OC_Template("", "404", "guest"); + $tmpl->printPage(); + die(); +} +?>
\ No newline at end of file diff --git a/apps/files_sharing/lib_share.php b/apps/files_sharing/lib_share.php index c7ac7c3e8fd..df704c131e7 100644 --- a/apps/files_sharing/lib_share.php +++ b/apps/files_sharing/lib_share.php @@ -135,6 +135,7 @@ class OC_Share { $in .= ", '".$uid."@".$group."'"; } } + $in .= ", '".self::PUBLICLINK."'"; $in .= ")"; return $in; } |