A lot bugfixes for ext-cache and deprecated files removed:
[mailer.git] / inc / libs / cache_functions.php
index 4dfed15897d770f3a997001f0523f7fdba06c8de..ca0aee8331aebeb06611e7661d97b930e790755e 100644 (file)
@@ -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';
 
@@ -226,16 +226,44 @@ class CacheSystem {
        }
 
        // Destroy an existing cache file
-       function destroyCacheFile () {
+       function destroyCacheFile ($removeArray = false) {
+               // Only run in regular output mode
+               if (getOutputMode() != 0) {
+                       // Debug message if allowed
+                       if (isDebugModeEnabled()) {
+                               // Debug message
+                               DEBUG_LOG(__METHOD__, __LINE__, '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__."(<font color=\"#0000aa\">".__LINE__."</font>): {$this->name} - DESTROYED!<br />\n";
                        removeFile($this->fqfn);
-                       // @TODO remove from $GLOBALS['cache_array']!!!
+
+                       // 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,26 @@ 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_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);
+       DEBUG_LOG(__FUNCTION__, __LINE__, 'Done!');
 }
 
 // Filter for purging entire admin menu cache