From 2a1854a5ae5104861a4166f43dfd89d54e4e9f17 Mon Sep 17 00:00:00 2001 From: Banana Date: Tue, 19 Feb 2013 09:06:08 +0100 Subject: [PATCH] delete recursive a dir --- single-functions/recursive-remove-dir.php | 95 +++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 single-functions/recursive-remove-dir.php diff --git a/single-functions/recursive-remove-dir.php b/single-functions/recursive-remove-dir.php new file mode 100644 index 0000000..a6f8fa6 --- /dev/null +++ b/single-functions/recursive-remove-dir.php @@ -0,0 +1,95 @@ + empty the diretory but do not delete it + * + * @param string $directory + * @param boolean $empty + * @param int $fTime If not false remove files older then this value in sec. + * @return boolean + */ +function recursive_remove_directory($directory, $empty=false,$fTime=false) { + // if the path has a slash at the end we remove it here + if(substr($directory,-1) == '/') { + $directory = substr($directory,0,-1); + } + + // if the path is not valid or is not a directory ... + if(!file_exists($directory) || !is_dir($directory)) { + // ... we return false and exit the function + return false; + + // ... if the path is not readable + }elseif(!is_readable($directory)) { + // ... we return false and exit the function + return false; + + // ... else if the path is readable + } + else { + // we open the directory + $handle = opendir($directory); + + // and scan through the items inside + while (false !== ($item = readdir($handle))) { + // if the filepointer is not the current directory + // or the parent directory + //if($item != '.' && $item != '..' && $item != '.svn') { + if($item[0] != '.') { + // we build the new path to delete + $path = $directory.'/'.$item; + + // if the new path is a directory + if(is_dir($path)) { + // we call this function with the new path + recursive_remove_directory($path); + + // if the new path is a file + } + else { + // we remove the file + if($fTime !== false && is_int($fTime)) { + // check filemtime + $ft = filemtime($path); + $offset = time()-$fTime; + if($ft <= $offset) { + unlink($path); + } + } + else { + unlink($path); + } + } + } + } + // close the directory + closedir($handle); + + // if the option to empty is not set to true + if($empty == false) { + // try to delete the now empty directory + if(!rmdir($directory)) { + // return false if not possible + return false; + } + } + // return success + return true; + } +} + +?> -- 2.39.5