prune_super_cache()WPSCache 1.0

No Hooks.

Return

null. Nothing (null).

Usage

prune_super_cache( $directory, $force, $rename );
$directory (required)
-
$force **
-
Default: false
$rename **
-
Default: false

prune_super_cache() code WPSCache 1.12.0

function prune_super_cache( $directory, $force = false, $rename = false ) {

	// Don't prune a NULL/empty directory.
	if ( null === $directory || '' === $directory ) {
		wp_cache_debug( 'prune_super_cache: directory is blank' );
		return false;
	}

	global $cache_max_time, $cache_path, $blog_cache_dir;
	static $log                   = 0;
	static $protected_directories = '';

	$dir       = $directory;
	$directory = wpsc_get_realpath( $directory );
	if ( $directory == '' ) {
		wp_cache_debug( "prune_super_cache: exiting as file/directory does not exist : $dir" );
		return false;
	}
	if ( ! wpsc_is_in_cache_directory( $directory ) ) {
		wp_cache_debug( "prune_super_cache: exiting as directory is not in cache path: *$directory* (was $dir before realpath)" );
		return false;
	}

	if ( false == @file_exists( $directory ) ) {
		wp_cache_debug( "prune_super_cache: exiting as file/dir does not exist: $directory" );
		return $log;
	}
	if ( ! isset( $cache_max_time ) ) {
		$cache_max_time = 3600;
	}

	$now = time();

	if ( $protected_directories == '' ) {
		$protected_directories = wpsc_get_protected_directories();
	}

	if ( is_dir( $directory ) ) {
		if ( $dh = @opendir( $directory ) ) {
			$directory = trailingslashit( $directory );
			while ( ( $entry = @readdir( $dh ) ) !== false ) {
				if ( $entry == '.' || $entry == '..' ) {
					continue;
				}
				$entry = $directory . $entry;
				prune_super_cache( $entry, $force, $rename );
				// If entry is a directory, AND it's not a protected one, AND we're either forcing the delete, OR the file is out of date,
				if ( is_dir( $entry ) && ! in_array( $entry, $protected_directories ) && ( $force || @filemtime( $entry ) + $cache_max_time <= $now ) ) {
					$donotdelete = false;
					// if the directory isn't empty can't delete it
					if ( $handle = @opendir( $entry ) ) {
						while ( ! $donotdelete && ( $file = @readdir( $handle ) ) !== false ) {
							if ( $file == '.' || $file == '..' ) {
								continue;
							}
							$donotdelete = true;
							wp_cache_debug( "gc: could not delete $entry as it's not empty: $file", 2 );
						}
						closedir( $handle );
					}
					if ( $donotdelete ) {
						continue;
					}
					if ( ! $rename ) {
						@rmdir( $entry );
						++$log;
						if ( $force ) {
							wp_cache_debug( "gc: deleted $entry, forced delete", 2 );
						} else {
							wp_cache_debug( "gc: deleted $entry, older than $cache_max_time seconds", 2 );
						}
					}
				} elseif ( in_array( $entry, $protected_directories ) ) {
					wp_cache_debug( "gc: could not delete $entry as it's protected.", 2 );
				}
			}
			closedir( $dh );
		}
	} elseif ( is_file( $directory ) && ( $force || @filemtime( $directory ) + $cache_max_time <= $now ) ) {
		$oktodelete = true;
		if ( in_array( $directory, $protected_directories ) ) {
			wp_cache_debug( "gc: could not delete $directory as it's protected.", 2 );
			$oktodelete = false;
		}
		if ( $oktodelete && ! $rename ) {
			wp_cache_debug( "prune_super_cache: deleted $directory", 5 );
			@unlink( $directory );
			++$log;
		} elseif ( $oktodelete && $rename ) {
			wp_cache_debug( "prune_super_cache: wp_cache_rebuild_or_delete( $directory )", 5 );
			wp_cache_rebuild_or_delete( $directory );
			++$log;
		} else {
			wp_cache_debug( "prune_super_cache: did not delete file: $directory" );
		}
	} else {
			wp_cache_debug( "prune_super_cache: did not delete file as it wasn't a directory or file and not forced to delete new file: $directory" );
	}
	return $log;
}