summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/base.php27
-rw-r--r--lib/helper.php29
2 files changed, 31 insertions, 25 deletions
diff --git a/lib/base.php b/lib/base.php
index 9df61da78c3..c84d61b3214 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -256,7 +256,7 @@ class OC_UTIL {
}
$prems=substr(decoct(fileperms($CONFIG_DATADIRECTORY_ROOT)),-3);
if(substr($prems,-1)!='0'){
- chmodr($CONFIG_DATADIRECTORY_ROOT,0770);
+ OC_HELPER::chmodr($CONFIG_DATADIRECTORY_ROOT,0770);
clearstatcache();
$prems=substr(decoct(fileperms($CONFIG_DATADIRECTORY_ROOT)),-3);
if(substr($prems,2,1)!='0'){
@@ -266,7 +266,7 @@ class OC_UTIL {
if($CONFIG_ENABLEBACKUP){
$prems=substr(decoct(fileperms($CONFIG_BACKUPDIRECTORY)),-3);
if(substr($prems,-1)!='0'){
- chmodr($CONFIG_BACKUPDIRECTORY,0770);
+ OC_HELPER::chmodr($CONFIG_BACKUPDIRECTORY,0770);
clearstatcache();
$prems=substr(decoct(fileperms($CONFIG_BACKUPDIRECTORY)),-3);
if(substr($prems,2,1)!='0'){
@@ -349,27 +349,4 @@ class OC_HOOK{
return true;
}
}
-
-function chmodr($path, $filemode) {
-// echo "$path<br/>";
- if (!is_dir($path))
- return chmod($path, $filemode);
- $dh = opendir($path);
- while (($file = readdir($dh)) !== false) {
- if($file != '.' && $file != '..') {
- $fullpath = $path.'/'.$file;
- if(is_link($fullpath))
- return FALSE;
- elseif(!is_dir($fullpath) && !chmod($fullpath, $filemode))
- return FALSE;
- elseif(!chmodr($fullpath, $filemode))
- return FALSE;
- }
- }
- closedir($dh);
- if(chmod($path, $filemode))
- return TRUE;
- else
- return FALSE;
-}
?>
diff --git a/lib/helper.php b/lib/helper.php
index 982da7b6cc3..c51629f21cb 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -113,6 +113,35 @@ class OC_HELPER {
$bytes = round( $bytes / 1024, 1 );
return "$bytes GB";
}
+
+ /**
+ * @brief Recusive editing of file permissions
+ * @param $path path to file or folder
+ * @param $filemode unix style file permissions as integer
+ *
+ * Makes 2048 to 2 kB.
+ */
+ function chmodr($path, $filemode) {
+ if (!is_dir($path))
+ return chmod($path, $filemode);
+ $dh = opendir($path);
+ while (($file = readdir($dh)) !== false) {
+ if($file != '.' && $file != '..') {
+ $fullpath = $path.'/'.$file;
+ if(is_link($fullpath))
+ return FALSE;
+ elseif(!is_dir($fullpath) && !chmod($fullpath, $filemode))
+ return FALSE;
+ elseif(!chmodr($fullpath, $filemode))
+ return FALSE;
+ }
+ }
+ closedir($dh);
+ if(chmod($path, $filemode))
+ return TRUE;
+ else
+ return FALSE;
+ }
}
?>