Skip to content
Snippets Groups Projects
Commit 70969154 authored by Björn Schießle's avatar Björn Schießle
Browse files

always use oc filesystem for rename operation

parent 89f26915
Branches
No related tags found
No related merge requests found
...@@ -464,53 +464,37 @@ class Hooks { ...@@ -464,53 +464,37 @@ class Hooks {
$newShareKeyPath = $ownerNew . '/files_encryption/share-keys/' . $pathNew; $newShareKeyPath = $ownerNew . '/files_encryption/share-keys/' . $pathNew;
} }
// add key ext if this is not an folder // create new key folders if it doesn't exists
if (!$view->file_exists(dirname($newShareKeyPath))) {
$view->mkdir(dirname($newShareKeyPath));
}
if (!$view->file_exists(dirname($newKeyfilePath))) {
$view->mkdir(dirname($newKeyfilePath));
}
// handle share keys
if (!$view->is_dir($oldKeyfilePath)) { if (!$view->is_dir($oldKeyfilePath)) {
$oldKeyfilePath .= '.key'; $oldKeyfilePath .= '.key';
$newKeyfilePath .= '.key'; $newKeyfilePath .= '.key';
// handle share-keys // handle share-keys
$localKeyPath = $view->getLocalFile($oldShareKeyPath); $matches = Helper::findShareKeys($oldShareKeyPath, $view);
$escapedPath = Helper::escapeGlobPattern($localKeyPath);
$matches = glob($escapedPath . '*.shareKey');
foreach ($matches as $src) { foreach ($matches as $src) {
$dst = \OC\Files\Filesystem::normalizePath(str_replace($pathOld, $pathNew, $src)); $dst = \OC\Files\Filesystem::normalizePath(str_replace($pathOld, $pathNew, $src));
$view->rename($src, $dst);
// create destination folder if not exists
if (!file_exists(dirname($dst))) {
mkdir(dirname($dst), 0750, true);
}
rename($src, $dst);
} }
} else { } else {
// handle share-keys folders // handle share-keys folders
// create destination folder if not exists
if (!$view->file_exists(dirname($newShareKeyPath))) {
mkdir($view->getLocalFile($newShareKeyPath), 0750, true);
}
$view->rename($oldShareKeyPath, $newShareKeyPath); $view->rename($oldShareKeyPath, $newShareKeyPath);
} }
// Rename keyfile so it isn't orphaned // Rename keyfile so it isn't orphaned
if ($view->file_exists($oldKeyfilePath)) { if ($view->file_exists($oldKeyfilePath)) {
// create destination folder if not exists
if (!$view->file_exists(dirname($newKeyfilePath))) {
mkdir(dirname($view->getLocalFile($newKeyfilePath)), 0750, true);
}
$view->rename($oldKeyfilePath, $newKeyfilePath); $view->rename($oldKeyfilePath, $newKeyfilePath);
} }
// build the path to the file // update share keys
$newPath = '/' . $ownerNew . '/files' . $pathNew;
if ($util->fixFileSize($newPath)) {
// get sharing app state
$sharingEnabled = \OCP\Share::isEnabled(); $sharingEnabled = \OCP\Share::isEnabled();
// get users // get users
...@@ -518,7 +502,6 @@ class Hooks { ...@@ -518,7 +502,6 @@ class Hooks {
// update sharing-keys // update sharing-keys
$util->setSharedFileKeyfiles($session, $usersSharing, $pathNew); $util->setSharedFileKeyfiles($session, $usersSharing, $pathNew);
}
\OC_FileProxy::$enabled = $proxyStatus; \OC_FileProxy::$enabled = $proxyStatus;
} }
......
...@@ -438,6 +438,30 @@ class Helper { ...@@ -438,6 +438,30 @@ class Helper {
return preg_replace('/(\*|\?|\[)/', '[$1]', $path); return preg_replace('/(\*|\?|\[)/', '[$1]', $path);
} }
/**
* find all share keys for a given file
* @param string $path to the file
* @param \OC\Files\View $view view, relative to data/
*/
public static function findShareKeys($path, $view) {
$result = array();
$pathinfo = pathinfo($path);
$dirContent = $view->opendir($pathinfo['dirname']);
if (is_resource($dirContent)) {
while (($file = readdir($dirContent)) !== false) {
if (!\OC\Files\Filesystem::isIgnoredDir($file)) {
if (preg_match("/" . $pathinfo['filename'] . ".(.*).shareKey/", $file)) {
$result[] = $pathinfo['dirname'] . '/' . $file;
}
}
}
closedir($dirContent);
}
return $result;
}
/** /**
* remember from which file the tmp file (getLocalFile() call) was created * remember from which file the tmp file (getLocalFile() call) was created
* @param string $tmpFile path of tmp file * @param string $tmpFile path of tmp file
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment