aboutsummaryrefslogtreecommitdiffstats
path: root/util/dcp
diff options
context:
space:
mode:
authorzotlabs <mike@macgirvin.com>2018-04-11 22:27:59 -0700
committerzotlabs <mike@macgirvin.com>2018-04-11 22:27:59 -0700
commit549f7a53b11d014993fbb550de97b6cdf45e0843 (patch)
tree807d8aeb0e499707ed4beebe0ff03ef007e066a6 /util/dcp
parent739a6128247d55cdab9a6432e28f5710310951b3 (diff)
downloadvolse-hubzilla-549f7a53b11d014993fbb550de97b6cdf45e0843.tar.gz
volse-hubzilla-549f7a53b11d014993fbb550de97b6cdf45e0843.tar.bz2
volse-hubzilla-549f7a53b11d014993fbb550de97b6cdf45e0843.zip
util/dcp (server to cloud file copy) better handling when destination directory is the channel root
Diffstat (limited to 'util/dcp')
-rwxr-xr-xutil/dcp64
1 files changed, 38 insertions, 26 deletions
diff --git a/util/dcp b/util/dcp
index 677882193..ecef67804 100755
--- a/util/dcp
+++ b/util/dcp
@@ -28,9 +28,14 @@ if($argc < 3) {
if(strpos($dstfile,'store/') === 0)
$dstfile = substr($dstfile,6);
- $nick = substr($dstfile,0,strpos($dstfile,'/'));
-
- $dstfile = substr($dstfile,strlen($nick)+1);
+ if(strpos($dstfile,'/'))
+ $nick = substr($dstfile,0,strpos($dstfile,'/'));
+ $dstfile = substr($dstfile,strlen($nick)+1);
+ }
+ else {
+ $nick = $dstfile;
+ $dstfile = '';
+ }
$channel = channelx_by_nick($nick);
if(! $channel)
@@ -43,38 +48,45 @@ if($argc < 3) {
}
}
-
+ $rootdir = ((strlen(trim($dstfile,'/'))) ? false : true);
+
$isadir = false;
if(($recursive) || ($argc > 3))
$isadir = true;
- $r = q("select * from attach where display_path = '%s' and uid = %d limit 1",
- dbesc($dstfile),
- intval($channel['channel_id'])
- );
-
- if($r && $r[0]['is_dir']) {
- $isadir = true;
- $basepath = $dstfile;
- $folder = $r[0]['hash'];
+ if($rootdir) {
+ $folder = '';
}
else {
- $pathname = (($isadir) ? $dstfile : dirname($dstfile));
- $arr = [
- 'pathname' => $pathname,
- 'allow_cid' => $channel['channel_allow_cid'],
- 'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid'],
- ];
- $folder = '';
- if($pathname && $isadir) {
- $x = attach_mkdirp($channel,$channel['channel_hash'],$arr);
- if($x['success'])
- $folder = $x['data']['hash'];
+ $r = q("select * from attach where display_path = '%s' and uid = %d limit 1",
+ dbesc($dstfile),
+ intval($channel['channel_id'])
+ );
+
+ if($r && $r[0]['is_dir']) {
+ $isadir = true;
+ $basepath = $dstfile;
+ $folder = $r[0]['hash'];
+ }
+ else {
+ $pathname = (($isadir) ? $dstfile : dirname($dstfile));
+ $arr = [
+ 'pathname' => $pathname,
+ 'allow_cid' => $channel['channel_allow_cid'],
+ 'allow_gid' => $channel['channel_allow_gid'],
+ 'deny_cid' => $channel['channel_deny_cid'],
+ 'deny_gid' => $channel['channel_deny_gid'],
+ ];
+
+ $folder = '';
+ if($pathname && $isadir) {
+ $x = attach_mkdirp($channel,$channel['channel_hash'],$arr);
+ if($x['success'])
+ $folder = $x['data']['hash'];
+ }
}
}