diff options
author | Mario Vavti <mario@mariovavti.com> | 2016-08-03 21:17:08 +0200 |
---|---|---|
committer | Mario Vavti <mario@mariovavti.com> | 2016-08-03 21:17:08 +0200 |
commit | b959641ca82d45f641a803b58dcfb91a90274956 (patch) | |
tree | fa658a7f3a8ab4f862e503ad2113fc24bffd0304 /include/attach.php | |
parent | c50bfa07ca3a456d69d73988f42e58e3282879e9 (diff) | |
parent | 416adeb169f16fd25f7dbf54232451d8647cc999 (diff) | |
download | volse-hubzilla-b959641ca82d45f641a803b58dcfb91a90274956.tar.gz volse-hubzilla-b959641ca82d45f641a803b58dcfb91a90274956.tar.bz2 volse-hubzilla-b959641ca82d45f641a803b58dcfb91a90274956.zip |
Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev
Diffstat (limited to 'include/attach.php')
-rw-r--r-- | include/attach.php | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/include/attach.php b/include/attach.php index 7123d59fe..f3fb12293 100644 --- a/include/attach.php +++ b/include/attach.php @@ -1911,3 +1911,70 @@ function get_attach_binname($s) { } return $p; } + + +function get_dirpath_by_cloudpath($channel, $path) { + + // Warning: Do not edit the following line. The first symbol is UTF-8 @ + $path = str_replace('@','@',notags(trim($path))); + + $h = @parse_url($path); + + if(! $h || !x($h, 'path')) { + return null; + } + if(substr($h['path'],-1,1) === '/') { + $h['path'] = substr($h['path'],0,-1); + } + if(substr($h['path'],0,1) === '/') { + $h['path'] = substr($h['path'],1); + } + $folders = explode('/', $h['path']); + $f = array_shift($folders); + + $nick = $channel['channel_address']; + //check to see if the absolute path was provided (/cloud/channelname/path/to/folder) + if($f === 'cloud' ) { + $g = array_shift($folders); + if( $g !== $nick) { + // if nick does not follow "cloud", then the top level folder must be called "cloud" + // and the given path must be relative to "/cloud/channelname/". + $folders = array_unshift(array_unshift($folders, $g), $f); + } + } else { + array_unshift($folders, $f); + } + $clouddir = 'store/' . $nick . '/' ; + $subdir = '/'; + $valid = true; + while($folders && $valid && is_dir($clouddir . $subdir) && is_readable($clouddir . $subdir)) { + $valid = false; + $f = array_shift($folders); + $items = array_diff(scandir($clouddir . $subdir), array('.', '..')); // hashed names + foreach($items as $item) { + $filename = find_filename_by_hash($channel['channel_id'], $item); + if($filename === $f) { + $subdir .= $item . '/'; + $valid = true; + } + } + } + if(!$valid) { + return null; + } else { + return $clouddir . $subdir; + } + + +} + +function get_filename_by_cloudname($cloudname, $channel, $storepath) { + $items = array_diff(scandir($storepath), array('.', '..')); // hashed names + foreach($items as $item) { + $filename = find_filename_by_hash($channel['channel_id'], $item); + if($filename === $cloudname) { + return $item; + } + } + return null; +}
\ No newline at end of file |