$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';
// 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')) {
// 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
fclose($this->pointer);
// Set rights
- if ($this->isCacheReadable()) chmod($this->fqfn, 0666);
+ if ($this->isCacheReadable()) changeMode($this->fqfn, 0666);
// Remove pointer
$this->pointer = false;
}
// 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__."(<font color=\"#0000aa\">".__LINE__."</font>): {$this->name} - DESTROYED!<br />\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()) {
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;
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