From 69289bf9438f11df8d75fd034776983b997aa7b0 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sat, 16 Apr 2011 10:23:15 +0200 Subject: [PATCH] move chmodr to OC_HELPER --- lib/base.php | 27 ++------------------------- lib/helper.php | 29 +++++++++++++++++++++++++++++ 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
"; - 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; + } } ?> -- 2.39.5