X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fcache_functions.php;h=a34313d1eb37053b5b06f6e32856b185d86909ad;hp=b5804821a5c00cb58aadc714b154d2156b655b87;hb=f928ad2bed60fa256d0641eaf6d2c027a2944688;hpb=7b0f17cd637e388049d2167811e4332cec1e979b diff --git a/inc/libs/cache_functions.php b/inc/libs/cache_functions.php index b5804821a5..a34313d1eb 100644 --- a/inc/libs/cache_functions.php +++ b/inc/libs/cache_functions.php @@ -66,7 +66,7 @@ class CacheSystem { $this->path = $path; // Check if path exists - if ((isDirectory($path)) && (!$tested)) { + if ((isDirectory($path)) && ($tested === false)) { // Make FQFN for dummy file $fqfn = $path . 'dummy.tmp'; @@ -76,7 +76,7 @@ class CacheSystem { // Is the file there? if (isFileReadable($fqfn)) { // Yes, we can do. So let's remove it - unlink($fqfn); + removeFile($fqfn); // Is there a .htaccess file? if (isFileReadable($path . '.htaccess')) { @@ -119,7 +119,7 @@ class CacheSystem { // This will destory an existing cache file! if ($this->ret == $this->statusDone) { // Create file - if ($this->isCacheReadable()) chmod($this->fqfn, 0666); + if ($this->isCacheReadable()) changeMode($this->fqfn, 0666); $this->pointer = fopen($this->fqfn, 'w') or app_die(__METHOD__, __LINE__, "Cannot write to cache ".$this->fqfn." !"); // Add open PHP tag @@ -172,7 +172,7 @@ class CacheSystem { fclose($this->pointer); // Set rights - if ($this->isCacheReadable()) chmod($this->fqfn, 0666); + if ($this->isCacheReadable()) changeMode($this->fqfn, 0666); // Remove pointer $this->pointer = false; @@ -226,16 +226,44 @@ class CacheSystem { } // Destroy an existing cache file - function destroyCacheFile () { + function destroyCacheFile ($removeArray = false, $force = false) { + // Only run in regular output mode + if ((getOutputMode() != 0) && ($force === false)) { + // Debug message if allowed + if (isDebugModeEnabled()) { + // Debug message + debug_report_bug('Not removing cache ' . $this->name . ' in output_mode=' . getOutputMode()); + } // END - if + + // Abort here + return; + } // END - if + // Is the cache file there? if ((!isset($this->rebuilt[$this->name])) && ($this->isCacheReadable())) { // Close cache $this->finalize(); + // Debug-mode enabled? + if (isDebugModeEnabled()) { + // Log removal of cache + DEBUG_LOG(__METHOD__, __LINE__, 'removing cache: ' . $this->name); + } // END - if + // Remove cache file from system - //* DEBUG: */ print __METHOD__."(".__LINE__."): {$this->name} - DESTROYED!
\n"; - unlink($this->fqfn); - // @TODO remove from $GLOBALS['cache_array']!!! + removeFile($this->fqfn); + + // Shall we remove the array from memory? + if ($removeArray === true) { + // Debug message if allowed + if (isDebugModeEnabled()) { + // Debug message + DEBUG_LOG(__METHOD__, __LINE__, 'removing array!'); + } // END - if + + // Remove it from memory + unset($GLOBALS['cache_array'][$this->name]); + } // END - if // Is the file there? if (!$this->isCacheReadable()) { @@ -429,9 +457,9 @@ function FILTER_CACHE_DESTROY_ON_EXT_CHANGE ($data) { if (!isCacheInstanceValid()) return $data; // Remove cache - if ($GLOBALS['cache_instance']->loadCacheFile('config')) $GLOBALS['cache_instance']->destroyCacheFile(); - if ($GLOBALS['cache_instance']->loadCacheFile('extensions')) $GLOBALS['cache_instance']->destroyCacheFile(); - if ($GLOBALS['cache_instance']->loadCacheFile('modreg')) $GLOBALS['cache_instance']->destroyCacheFile(); + if ($GLOBALS['cache_instance']->loadCacheFile('config')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('extensions')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('modreg')) $GLOBALS['cache_instance']->destroyCacheFile(false); // Return it return $data; @@ -443,24 +471,36 @@ function FILTER_CACHE_DESTROY_ON_ADMIN_CHANGE () { if (!isCacheInstanceValid()) return false; // Remove cache - if ($GLOBALS['cache_instance']->loadCacheFile('admins')) $GLOBALS['cache_instance']->destroyCacheFile(); + if ($GLOBALS['cache_instance']->loadCacheFile('admins')) $GLOBALS['cache_instance']->destroyCacheFile(false); } // Destroy all cache files function FILTER_CACHE_DESTROY_ALL () { // Skip this step if the cache instance is not there + //* DEBUG: */ DEBUG_LOG(__FUNCTION__, __LINE__, 'Called!'); if (!isCacheInstanceValid()) return false; // Remove cache files - if ($GLOBALS['cache_instance']->loadCacheFile('admins')) $GLOBALS['cache_instance']->destroyCacheFile(); - if ($GLOBALS['cache_instance']->loadCacheFile('admins_acls')) $GLOBALS['cache_instance']->destroyCacheFile(); - if ($GLOBALS['cache_instance']->loadCacheFile('config')) $GLOBALS['cache_instance']->destroyCacheFile(); - if ($GLOBALS['cache_instance']->loadCacheFile('extensions')) $GLOBALS['cache_instance']->destroyCacheFile(); - if ($GLOBALS['cache_instance']->loadCacheFile('modreg')) $GLOBALS['cache_instance']->destroyCacheFile(); - if ($GLOBALS['cache_instance']->loadCacheFile('refdepths')) $GLOBALS['cache_instance']->destroyCacheFile(); - if ($GLOBALS['cache_instance']->loadCacheFile('refsystem')) $GLOBALS['cache_instance']->destroyCacheFile(); - if ($GLOBALS['cache_instance']->loadCacheFile('themes')) $GLOBALS['cache_instance']->destroyCacheFile(); - if ($GLOBALS['cache_instance']->loadCacheFile('revision')) $GLOBALS['cache_instance']->destroyCacheFile(); + if ($GLOBALS['cache_instance']->loadCacheFile('admins')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('admins_acls')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('config')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('extensions')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('modreg')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('refdepths')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('refsystem')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('themes')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('revision')) $GLOBALS['cache_instance']->destroyCacheFile(false); + if ($GLOBALS['cache_instance']->loadCacheFile('filter')) $GLOBALS['cache_instance']->destroyCacheFile(false); + //* DEBUG: */ DEBUG_LOG(__FUNCTION__, __LINE__, 'Done!'); +} + +// Filter for purging 'filter' cache +function FILTER_CACHE_DESTROY_FILTER () { + // Skip this step if the cache instance is not there + if ((!isCacheInstanceValid()) || (getConfig('update_filter_usage') == 'N')) return false; + + // Remove cache files + if ($GLOBALS['cache_instance']->loadCacheFile('filter')) $GLOBALS['cache_instance']->destroyCacheFile(false); } // Filter for purging entire admin menu cache