diff options
author | redmatrix <git@macgirvin.com> | 2016-04-06 19:56:38 -0700 |
---|---|---|
committer | redmatrix <git@macgirvin.com> | 2016-04-06 19:56:38 -0700 |
commit | 861f5232d3b6c5bd2cf8bd895f57424b730ce270 (patch) | |
tree | 8094192667b1863f78d2baf15e57a209cee4996b /include | |
parent | 9831ad515d7963bcfe1f6298a5176fa29bc28f14 (diff) | |
download | volse-hubzilla-861f5232d3b6c5bd2cf8bd895f57424b730ce270.tar.gz volse-hubzilla-861f5232d3b6c5bd2cf8bd895f57424b730ce270.tar.bz2 volse-hubzilla-861f5232d3b6c5bd2cf8bd895f57424b730ce270.zip |
more work on file sync to clones, 60-70% test coverage, mostly working but many changes made during testing which themselves have not yet been tested
Diffstat (limited to 'include')
-rw-r--r-- | include/import.php | 56 | ||||
-rw-r--r-- | include/photos.php | 8 | ||||
-rw-r--r-- | include/text.php | 10 |
3 files changed, 62 insertions, 12 deletions
diff --git a/include/import.php b/include/import.php index 332571c27..c5c7a47f7 100644 --- a/include/import.php +++ b/include/import.php @@ -899,10 +899,60 @@ function sync_files($channel,$files) { $att['aid'] = $channel['channel_account_id']; $att['uid'] = $channel['channel_id']; + + // check for duplicate folder names with the same parent. + // If we have a duplicate that doesn't match this hash value + // change the name so that the contents won't be "covered over" + // by the existing directory. Use the same logic we use for + // duplicate files. + + if(strpos($att['filename'],'.') !== false) { + $basename = substr($att['filename'],0,strrpos($att['filename'],'.')); + $ext = substr($att['filename'],strrpos($att['filename'],'.')); + } + else { + $basename = $att['filename']; + $ext = ''; + } + + $r = q("select filename from attach where ( filename = '%s' OR filename like '%s' ) and folder == '%s' and hash != '%s' ", + dbesc($basename . $ext), + dbesc($basename . '(%)' . $ext), + dbesc($att['folder']), + dbesc($att['hash']) + ); + + if($r) { + $x = 1; + + do { + $found = false; + foreach($r as $rr) { + if($rr['filename'] === $basename . '(' . $x . ')' . $ext) { + $found = true; + break; + } + } + if($found) + $x++; + } + while($found); + $att['filename'] = $basename . '(' . $x . ')' . $ext; + } + else + $att['filename'] = $basename . $ext; + + // end duplicate detection + + + // is this a directory? + if($att['filetype'] === 'multipart/mixed' && $att['is_dir']) { os_mkdir($newfname, STORAGE_DEFAULT_PERMISSIONS,true); $att['data'] = $newfname; + dbesc_array($att); + $r = dbq("INSERT INTO attach (`" . implode("`, `", array_keys($att)) . "`) VALUES ('" @@ -912,13 +962,16 @@ function sync_files($channel,$files) { continue; } else { + + // it's a file + $time = datetime_convert(); $parr = array('hash' => $channel['channel_hash'], 'time' => $time, 'resource' => $att['hash'], 'revision' => 0, - 'sig' => rsa_sign($channel['channel_hash'] . '.' . $time, $channel['channel_prvkey']) + 'signature' => base64url_encode(rsa_sign($channel['channel_hash'] . '.' . $time, $channel['channel_prvkey'])) ); $store_path = $newfname; @@ -944,7 +997,6 @@ function sync_files($channel,$files) { } continue; } - } } if(! $attachment_stored) { diff --git a/include/photos.php b/include/photos.php index 312ea18d3..943d7d503 100644 --- a/include/photos.php +++ b/include/photos.php @@ -194,7 +194,7 @@ function photo_upload($channel, $observer, $args) { $link[0] = array( 'rel' => 'alternate', 'type' => 'text/html', - 'href' => $url = rawurlencode(z_root() . '/photo/' . $photo_hash . '-0.' . $ph->getExt()), + 'href' => z_root() . '/photo/' . $photo_hash . '-0.' . $ph->getExt(), 'width' => $ph->getWidth(), 'height' => $ph->getHeight() ); @@ -212,7 +212,7 @@ function photo_upload($channel, $observer, $args) { $link[1] = array( 'rel' => 'alternate', 'type' => 'text/html', - 'href' => $url = rawurlencode(z_root() . '/photo/' . $photo_hash . '-1.' . $ph->getExt()), + 'href' => z_root() . '/photo/' . $photo_hash . '-1.' . $ph->getExt(), 'width' => $ph->getWidth(), 'height' => $ph->getHeight() ); @@ -227,7 +227,7 @@ function photo_upload($channel, $observer, $args) { $link[2] = array( 'rel' => 'alternate', 'type' => 'text/html', - 'href' => $url = rawurlencode(z_root() . '/photo/' . $photo_hash . '-2.' . $ph->getExt()), + 'href' => z_root() . '/photo/' . $photo_hash . '-2.' . $ph->getExt(), 'width' => $ph->getWidth(), 'height' => $ph->getHeight() ); @@ -242,7 +242,7 @@ function photo_upload($channel, $observer, $args) { $link[3] = array( 'rel' => 'alternate', 'type' => 'text/html', - 'href' => $url = rawurlencode(z_root() . '/photo/' . $photo_hash . '-3.' . $ph->getExt()), + 'href' => z_root() . '/photo/' . $photo_hash . '-3.' . $ph->getExt(), 'width' => $ph->getWidth(), 'height' => $ph->getHeight() ); diff --git a/include/text.php b/include/text.php index d38f4f7c4..0a7f84b01 100644 --- a/include/text.php +++ b/include/text.php @@ -2753,15 +2753,13 @@ function item_url_replace($channel,&$item,$old,$new,$oldnick = '') { $item['item_verified'] = 1; } - // @fixme item['plink'] and item['llink'] - - str_replace($old,$new,$item['plink']); + $item['plink'] = str_replace($old,$new,$item['plink']); if($oldnick) - str_replace('/' . $oldnick . '/' ,'/' . $channel['channel_address'] . '/' ,$item['plink']); + $item['plink'] = str_replace('/' . $oldnick . '/' ,'/' . $channel['channel_address'] . '/' ,$item['plink']); - str_replace($old,$new,$item['llink']); + $item['llink'] = str_replace($old,$new,$item['llink']); if($oldnick) - str_replace('/' . $oldnick . '/' ,'/' . $channel['channel_address'] . '/' ,$item['llink']); + $item['llink'] = str_replace('/' . $oldnick . '/' ,'/' . $channel['channel_address'] . '/' ,$item['llink']); } |