Skip to content

Commit

Permalink
Move delete files and folders functions from clear cache to lib-common
Browse files Browse the repository at this point in the history
Added functions COM_cleanDirectory and COM_deleteFiles to lib-common to allow plugins access to functions to easily delete any files needed (like file caches). Used by Geeklog Clear Cache feature.
  • Loading branch information
eSilverStrike committed Dec 18, 2017
1 parent 755469d commit 2028270
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 33 deletions.
39 changes: 6 additions & 33 deletions public_html/admin/clearctl.php
Expand Up @@ -40,33 +40,6 @@
exit;
}

// Clean directory
function clean_directory($dir, $leave_dirs = array(), $leave_files = array()) {

foreach( glob("$dir/*") as $file ) {
if (is_dir($file)) {
if (!in_array(basename($file), $leave_dirs)) {
delete_files($file); // delete all sub directories and files in those directories
}
} elseif( !in_array(basename($file), $leave_files) ) {
unlink($file);
}
}
}

// Delete all files in a directory and any sub directory
function delete_files($dir) {

foreach(glob($dir . '/*') as $file) {
if (is_dir($file)) {
delete_files($file);
} else {
unlink($file);
}
}
rmdir($dir);
}

/*
* Main processing
*/
Expand All @@ -80,28 +53,28 @@ function delete_files($dir) {
// Clean out Data directory (includes things like temp uploaded plugin files, user batch files, etc...)
$leave_dirs = array('cache', 'layout_cache', 'layout_css');
$leave_files = array('cacert.pem', 'README');
clean_directory($_CONF['path_data'], $leave_dirs, $leave_files);
COM_cleanDirectory($_CONF['path_data'], $leave_dirs, $leave_files);

// Clean out File Manager Thumbnail Files
$leave_dirs = array();
$leave_files = array('index.html');
clean_directory($_CONF['path_images'] . '_thumbs/articles/', $leave_dirs, $leave_files);
COM_cleanDirectory($_CONF['path_images'] . '_thumbs/articles/', $leave_dirs, $leave_files);

$leave_dirs = array();
$leave_files = array('index.html');
clean_directory($_CONF['path_images'] . '_thumbs/userphotos/', $leave_dirs, $leave_files);
COM_cleanDirectory($_CONF['path_images'] . '_thumbs/userphotos/', $leave_dirs, $leave_files);

$leave_dirs = array();
$leave_files = array('index.html');
clean_directory($_CONF['path_images'] . '_thumbs/library/image/', $leave_dirs, $leave_files);
COM_cleanDirectory($_CONF['path_images'] . '_thumbs/library/image/', $leave_dirs, $leave_files);

$leave_dirs = array('Image');
$leave_files = array();
clean_directory($_CONF['path_images'] . '_thumbs/library/', $leave_dirs, $leave_files);
COM_cleanDirectory($_CONF['path_images'] . '_thumbs/library/', $leave_dirs, $leave_files);

$leave_dirs = array('articles', 'library', 'userphotos');
$leave_files = array();
clean_directory($_CONF['path_images'] . '_thumbs/', $leave_dirs, $leave_files);
COM_cleanDirectory($_CONF['path_images'] . '_thumbs/', $leave_dirs, $leave_files);

// Allow Plugins to clear any cached items
PLG_clearCache();
Expand Down
41 changes: 41 additions & 0 deletions public_html/lib-common.php
Expand Up @@ -6233,6 +6233,47 @@ function COM_dateDiff($interval, $date1, $date2)
return $diff;
}

/**
* Delete all files and folders in a folder except those specified otherwise
*
* @since Geeklog-2.2.0
* @param string $dir Directory to clean of files and folders
* @param array $leave_dirs Array of directory names to not delete
* @param array $leave_files Array of file names to not delete
* @return nothing
*/
function COM_cleanDirectory($dir, $leave_dirs = array(), $leave_files = array()) {

foreach( glob("$dir/*") 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);
}
}
}

/**
* Delete all files and folders including original folder (recursive calls)
*
* @since Geeklog-2.2.0
* @param string $dir Directory to clean of files and folders
* @return nothing
*/
function COM_deleteFiles($dir) {

foreach(glob($dir . '/*') as $file) {
if (is_dir($file)) {
COM_deleteFiles($file);
} else {
unlink($file);
}
}
rmdir($dir);
}

/**
* Determine if running via AJAX call
*
Expand Down

0 comments on commit 2028270

Please sign in to comment.