]> source.dussan.org Git - nextcloud-server.git/commitdiff
add directory while creating mount point
authorBjörn Schießle <schiessle@owncloud.com>
Tue, 9 Oct 2012 13:05:49 +0000 (15:05 +0200)
committerBjörn Schießle <schiessle@owncloud.com>
Tue, 9 Oct 2012 13:18:21 +0000 (15:18 +0200)
apps/files_external/lib/config.php

index f87a042b38600f4d1bfecd2b90119499e8cff4ac..f770bfe0756cefaa02a53b31234c89513d1ccd33 100755 (executable)
@@ -109,6 +109,21 @@ class OC_Mount_Config {
                return $personal;
        }
 
+       /**\r
+        * Add directory for mount point to the filesystem\r
+        * @param OC_Fileview instance $view\r
+        * @param string path to mount point\r
+        */
+       private static function addMountPointDirectory($view, $path) {
+               $dir = '';
+               foreach ( explode('/', $path) as $pathPart) {
+                       $dir = $dir.'/'.$pathPart;
+                       if ( !$view->file_exists($dir)) {
+                               $view->mkdir($dir);
+                       }               
+               }
+       }
+       
 
        /**
        * Add a mount point to the filesystem
@@ -127,8 +142,33 @@ class OC_Mount_Config {
                        if ($applicable != OCP\User::getUser() || $class == 'OC_Filestorage_Local') {
                                return false;
                        }
+                       $view = new OC_FilesystemView('/'.OCP\User::getUser().'/files');
+                       self::addMountPointDirectory($view, ltrim($mountPoint, '/'));
                        $mountPoint = '/'.$applicable.'/files/'.ltrim($mountPoint, '/');
                } else {
+                       $view = new OC_FilesystemView('/');
+                       switch ($mountType) {
+                               case 'user':
+                                       if ($applicable == "all") {
+                                               $users = OCP\User::getUsers();
+                                               foreach ( $users as $user ) {
+                                                       $path = $user.'/files/'.ltrim($mountPoint, '/');
+                                                       self::addMountPointDirectory($view, $path);
+                                               }
+                                       } else {
+                                               $path = $applicable.'/files/'.ltrim($mountPoint, '/');
+                                               self::addMountPointDirectory($view, $path);
+                                       }
+                                       break;
+                               case 'group' : 
+                                       $groupMembers = OC_Group::usersInGroups(array($applicable));
+                                       foreach ( $groupMembers as $user ) {
+                                               $path =  $user.'/files/'.ltrim($mountPoint, '/');
+                                               self::addMountPointDirectory($view, $path);
+                                       }
+                                       break;
+                       }
+
                        $mountPoint = '/$user/files/'.ltrim($mountPoint, '/');
                }
                $mount = array($applicable => array($mountPoint => array('class' => $class, 'options' => $classOptions)));