From a8c736cdb74a12103b5af42fecb2a1cfa60f595a Mon Sep 17 00:00:00 2001 From: Tom Homer Date: Wed, 6 Feb 2019 11:37:56 -0500 Subject: [PATCH] Clear Cache will now delete hidden files if present Fix for #910 --- public_html/lib-common.php | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/public_html/lib-common.php b/public_html/lib-common.php index 803ae717b..3bdbd16a3 100644 --- a/public_html/lib-common.php +++ b/public_html/lib-common.php @@ -6469,15 +6469,19 @@ function COM_dateDiff($interval, $date1, $date2) * @param array $leave_dirs Array of directory names to not delete * @param array $leave_files Array of file names to not delete */ -function COM_cleanDirectory($dir, $leave_dirs = array(), $leave_files = array()) { - - foreach (glob("$dir/*") as $file) { +function COM_cleanDirectory($dir, $leave_dirs = array(), $leave_files = array()) +{ + // Need to array merge glob to include regular file list AND hidden file lists (that ignore '.' and '..') + $merged = array_merge(glob(rtrim($dir, '/') . '/*'), glob(rtrim($dir, '/') . '/{*,.[!.]*,..?*}', GLOB_BRACE)); + foreach ($merged as $file) { if (is_dir($file)) { if (!in_array(basename($file), $leave_dirs)) { COM_deleteFiles($file); // delete all sub directories and files in those directories } } elseif (!in_array(basename($file), $leave_files) ) { - unlink($file); + if (is_file($file)) { + unlink($file); + } } } } @@ -6488,15 +6492,18 @@ function COM_cleanDirectory($dir, $leave_dirs = array(), $leave_files = array()) * @since Geeklog-2.2.0 * @param string $dir Directory to clean of files and folders */ -function COM_deleteFiles($dir) { - - foreach(glob($dir . '/*') as $file) { +function COM_deleteFiles($dir) +{ + $merged = array_merge(glob(rtrim($dir, '/') . '/*'), glob(rtrim($dir, '/') . '/{*,.[!.]*,..?*}', GLOB_BRACE)); + foreach ($merged as $file) { if (is_dir($file)) { COM_deleteFiles($file); } else { - unlink($file); + if (is_file($file)) { + unlink($file); + } } - } + } rmdir($dir); }