summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing
diff options
context:
space:
mode:
authorMichael Gapczynski <GapczynskiM@gmail.com>2011-08-18 15:35:11 -0400
committerMichael Gapczynski <GapczynskiM@gmail.com>2011-08-18 15:35:31 -0400
commit498356fcb85198fd447f112268bb2bb769c05089 (patch)
tree1488ef511db12f8f87ea8d4fc07f31801f93d893 /apps/files_sharing
parent115a6c8785c265f9b95fd9b2e7d1c6a3ac0a6f1f (diff)
downloadnextcloud-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.php85
-rw-r--r--apps/files_sharing/lib_share.php1
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;
}