From cc4001fce7934b49e6e7888a602b9bb9c33cf37f Mon Sep 17 00:00:00 2001 From: tuscanhobbit Date: Tue, 24 Jun 2014 12:05:11 +0200 Subject: Fixes to links and forward URLs in filestorage --- include/attach.php | 39 ++++++++++++++++++++++++++++++++++ include/reddav.php | 38 +++++++++++++++++++--------------- mod/filestorage.php | 54 +++++++----------------------------------------- view/tpl/attach_edit.tpl | 2 +- 4 files changed, 69 insertions(+), 64 deletions(-) diff --git a/include/attach.php b/include/attach.php index a3ee3f0ef..bf58566fe 100644 --- a/include/attach.php +++ b/include/attach.php @@ -834,6 +834,45 @@ function get_cloudpath($arr) { return $path; } +function get_parent_cloudpath($channel_id, $channel_name, $attachHash) { + //Build directory tree and redirect + $parentHash = $attachHash; + do { + $parentHash = findFolderHashByAttachHash($channel_id, $parentHash); + if ($parentHash) { + $parentName = findFilenameByHash($channel_id, $parentHash); + $parentFullPath = $parentName."/".$parentFullPath; + } + } while ($parentHash); + $parentFullPath = z_root() . "/cloud/" . $channel_name . "/" . $parentFullPath; + goaway($parentFullPath); +} +function findFolderHashByAttachHash($channel_id, $attachHash) { + $r = q("select * from attach where uid = %d and hash = '%s' limit 1", + intval($channel_id), dbesc($attachHash) + ); + $hash = ""; + if($r) { + foreach($r as $rr) { + $hash = $rr['folder']; + } + } + return $hash; +} +function findFilenameByHash($channel_id, $attachHash) { + $r = q("select * from attach where uid = %d and hash = '%s' limit 1", + intval($channel_id), dbesc($attachHash) + ); + $filename = ""; + if($r) { + foreach($r as $rr) { + $filename = $rr['filename']; + } + } + return $filename; +} + + /** * * @param $in diff --git a/include/reddav.php b/include/reddav.php index 852a18869..fe05af606 100644 --- a/include/reddav.php +++ b/include/reddav.php @@ -1028,16 +1028,16 @@ class RedBrowser extends DAV\Browser\Plugin { } } $attachId = $this->findAttachIdByHash($attachHash); - $fileStorageUrl = str_replace("cloud/","filestorage/",$path); + $fileStorageUrl = substr($fullPath, 0, strpos($fullPath,"cloud/")) . "filestorage/".$this->auth->channel_name; $attachIcon = ""; // ""; $html.= " $icon - {$displayName}"; + {$displayName}"; if($is_owner) { $html .= "" . (($size) ? $attachIcon : '') . " - "; + "; } else { $html .= ""; @@ -1090,20 +1090,24 @@ class RedBrowser extends DAV\Browser\Plugin { if (get_class($node)==='Sabre\\DAV\\SimpleCollection') return; - $output.= '
-

Create new folder

- - Name: - -
-
-

Upload file

- - Name (optional):
- File:
- -
- '; + $output.= ' + + + + + + + +
Create new folder   
+ + + +
Upload file   
+ + + + +
'; } diff --git a/mod/filestorage.php b/mod/filestorage.php index bcf798e7b..7db5a0961 100644 --- a/mod/filestorage.php +++ b/mod/filestorage.php @@ -26,12 +26,13 @@ function filestorage_post(&$a) { attach_change_permissions($channel_id,$resource,$str_contact_allow,$str_group_allow,$str_contact_deny,$str_group_deny,$recurse = false); + //Build directory tree and redirect + $channel = $a->get_channel(); + $cloudPath = get_parent_cloudpath($channel_id, $channel['channel_address'], $resource) ; + echo $cloudPath;die; + goaway($cloudPath); } - - - - function filestorage_content(&$a) { if(argc() > 1) @@ -83,12 +84,12 @@ function filestorage_content(&$a) { ); if(! $r) { notice( t('File not found.') . EOL); - goaway(z_root() . '/filestorage/' . $which); + goaway(z_root() . '/cloud/' . $which); } attach_delete($owner,$r[0]['hash']); - goaway(z_root() . '/filestorage/' . $which); + goaway(z_root() . '/cloud/' . $which); } @@ -139,45 +140,6 @@ function filestorage_content(&$a) { return $o; } - $r = q("select * from attach where uid = %d order by edited desc", - intval($owner) - ); - - $files = null; - - if($r) { - $files = array(); - foreach($r as $rr) { - $files[$rr['id']][] = array( - 'id' => $rr['id'], - 'download' => $rr['hash'], - 'title' => $rr['filename'], - 'size' => $rr['filesize'], - 'rev' => $rr['revision'], - 'dir' => (($rr['flags'] & ATTACH_FLAG_DIR) ? true : false) - ); - } - } - - $limit = service_class_fetch ($owner,'attach_upload_limit'); - $r = q("select sum(filesize) as total from attach where aid = %d ", - intval($channel['channel_account_id']) - ); - $used = $r[0]['total']; - - $url = z_root() . "/filestorage/" . $which; - return $o . replace_macros(get_markup_template("filestorage.tpl"), array( - '$baseurl' => $url, - '$download' => t('Download'), - '$files' => $files, - '$channel' => $which, - '$edit' => t('Edit'), - '$delete' => t('Delete'), - '$used' => $used, - '$usedlabel' => t('Used: '), - '$directory' => t('[directory]'), - '$limit' => $limit, - '$limitlabel' => t('Limit: '), - )); + goaway(z_root() . '/cloud/' . $which); } diff --git a/view/tpl/attach_edit.tpl b/view/tpl/attach_edit.tpl index 68b44c65c..0d3d2c571 100644 --- a/view/tpl/attach_edit.tpl +++ b/view/tpl/attach_edit.tpl @@ -1,4 +1,4 @@ - +

{{$header}}

-- cgit v1.2.3