summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorMorris Jobke <morris.jobke@gmail.com>2013-08-17 08:09:07 -0700
committerMorris Jobke <morris.jobke@gmail.com>2013-08-17 08:09:07 -0700
commit6ae6dc00e5758a7c08cc1e45ba75ca5835a9d22c (patch)
treead30de7b67e8613232578615c5924e8353551f54 /apps
parenta1128aadd020df9cfd98597c39ab639f10b425b0 (diff)
parentf28f528431fceca7daa3b27edcd1f564ad152086 (diff)
downloadnextcloud-server-6ae6dc00e5758a7c08cc1e45ba75ca5835a9d22c.tar.gz
nextcloud-server-6ae6dc00e5758a7c08cc1e45ba75ca5835a9d22c.zip
Merge pull request #4427 from owncloud/fix_4425
use OC files API to create missing directory
Diffstat (limited to 'apps')
-rw-r--r--apps/files_versions/lib/versions.php30
1 files changed, 21 insertions, 9 deletions
diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php
index 2886a202be5..0b4699dc5c0 100644
--- a/apps/files_versions/lib/versions.php
+++ b/apps/files_versions/lib/versions.php
@@ -109,11 +109,7 @@ class Storage {
}
// create all parent folders
- $info=pathinfo($filename);
- $versionsFolderName=$versions_view->getLocalFolder('');
- if(!file_exists($versionsFolderName.'/'.$info['dirname'])) {
- mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true);
- }
+ self::createMissingDirectories($filename, $users_view);
$versionsSize = self::getVersionsSize($uid);
if ( $versionsSize === false || $versionsSize < 0 ) {
@@ -182,13 +178,12 @@ class Storage {
self::expire($newpath);
- $abs_newpath = $versions_view->getLocalFile($newpath);
-
if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) {
$versions_view->rename($oldpath, $newpath);
} else if ( ($versions = Storage::getVersions($uid, $oldpath)) ) {
- $info=pathinfo($abs_newpath);
- if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
+ // create missing dirs if necessary
+ self::createMissingDirectories($newpath, new \OC\Files\View('/'. $uidn));
+
foreach ($versions as $v) {
$versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']);
}
@@ -567,4 +562,21 @@ class Storage {
return $size;
}
+ /**
+ * @brief create recursively missing directories
+ * @param string $filename $path to a file
+ * @param \OC\Files\View $view view on data/user/
+ */
+ private static function createMissingDirectories($filename, $view) {
+ $dirname = \OC_Filesystem::normalizePath(dirname($filename));
+ $dirParts = explode('/', $dirname);
+ $dir = "/files_versions";
+ foreach ($dirParts as $part) {
+ $dir = $dir . '/' . $part;
+ if (!$view->file_exists($dir)) {
+ $view->mkdir($dir);
+ }
+ }
+ }
+
}