From 549f7a53b11d014993fbb550de97b6cdf45e0843 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 11 Apr 2018 22:27:59 -0700 Subject: util/dcp (server to cloud file copy) better handling when destination directory is the channel root --- util/dcp | 64 ++++++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 26 deletions(-) (limited to 'util') 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']; + } } } -- cgit v1.2.3