--- C:/Documents and Settings/Administrator/Desktop/Andrea/patch/webfmOld.module	mer ago 19 17:44:14 2009
+++ C:/Documents and Settings/Administrator/Desktop/Andrea/patch/webfm.module	sab set 19 14:03:21 2009
@@ -908,7 +908,9 @@
                   $err .= ' '.$sub_root_path.t(' root dir not found.');
                 }
               } else {
-                $err .= t('Root directory not set for @role role ', array('@role' => $webfm_access_roles[$key]));
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+                $err .= t('root directory not set for @role ', array('@role' => $webfm_access_roles[$key]));
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
               }
             }
           } else {
@@ -958,6 +960,16 @@
              (array_key_exists($root_role, $webfm_roots))) {
             $current = "/".$root;
           }
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+          else if(($root = variable_get('webfm_user_dir', '')) &&
+             (array_key_exists($root_role, $webfm_roots))) {
+            // User dir can be tokenized
+            if (function_exists('token_replace')) {
+              $root = token_replace($root, 'user', $user);
+            }
+            $current = "/".$root;
+          }
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
           if(module_exists('og')) {
             $webfm_group_roots = webfm_get_group_root_dirs();
             $root_group = trim(rawurldecode($_POST["param0"]));
@@ -1022,7 +1034,9 @@
 
             if(is_dir($source)) {
               //Only admins can delete directories (and contained files)
-              if($webfm_perm == WEBFM_ADMIN) {
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+              if($webfm_perm == WEBFM_ADMIN || webfm_path_access($source)) {
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
                 $err_arr[] = array();
                 $ret = webfm_delete_dir_recur($source, TRUE, $err_arr);
                 webfm_json(array('status' => $ret, 'data' => $err_arr));
@@ -1100,7 +1114,9 @@
         if(isset($_POST["param0"]) && isset($_POST["param1"])) {
           $source = $root_dir.trim(rawurldecode($_POST["param0"]));
           $dest = $root_dir.trim(rawurldecode($_POST["param1"]));
-          if(is_dir($source) && ($webfm_perm != WEBFM_ADMIN)) {
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+          if(is_dir($source) && !webfm_path_access($source)) {
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
             //Only admins can manipulate directories
             webfm_json(array('status' => FALSE, 'data' => t('permission denied')));
             exit();
@@ -1135,6 +1151,9 @@
             $err_arr[] = array();
             //rename permissions inside webfm_rename
             $ret = webfm_rename($source, $dest, ($webfm_perm == WEBFM_USER) ? $user->uid : 1, $err_arr);
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+            $ret = webfm_rename($source, $dest, $user->uid, $err_arr);
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
             webfm_json(array('status' => $ret, 'data' => $err_arr));
           } else {
             webfm_json(array('status' => FALSE, 'data' => t('illegal name')));
@@ -1810,6 +1829,25 @@
     }
   }
 
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    
+    // User directory
+    $path = variable_get('webfm_user_dir', '');
+    // Allow tokenized paths.
+    if (function_exists('token_replace')) {
+      $path = token_replace($path, 'user', $user);
+    }
+    if(!empty($path)) {
+      // Prevent redundant trees for user directory common with a role root dir
+      if(!in_array($path, $webfm_roots)) {
+        $webfm_roots[$user->name] = "/".$path;
+        // Create directory if neccesarry
+        $userdir = file_directory_path() . '/' . variable_get('webfm_root_dir', '') . '/' . $path;
+        file_check_directory($userdir, FILE_CREATE_DIRECTORY);
+      }
+    }
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
   return $webfm_roots;
 }
 
