X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fclasses%2Fcachesystem.class.php;h=e19c9e8f7809b23227a70d7e60cc5602e3f50b36;hp=6a1992dd9d371e5145304a1a3ad7473df0a69a54;hb=7fabfadce30a7bea7ce3ad1f1e2e7e5e616f2669;hpb=ab82613b0100336c0966a742c986874ec1692672 diff --git a/inc/classes/cachesystem.class.php b/inc/classes/cachesystem.class.php index 6a1992dd9d..e19c9e8f78 100644 --- a/inc/classes/cachesystem.class.php +++ b/inc/classes/cachesystem.class.php @@ -101,7 +101,7 @@ class CacheSystem { // Pre-fetch cache here if found if ($this->isCacheReadable()) $this->getArrayFromCache(); - //* DEBUG: */ print($cacheName.'='.intval($this->isCacheReadable()).'/'.(is_writeable($this->fqfn)).'/'.($this->extensionVersionMatches('cache')).'
'); + //* DEBUG: */ print($cacheName.'='.intval($this->isCacheReadable()).'/'.intval(is_writeable($this->fqfn)).'/'.intval($this->extensionVersionMatches('cache')).'
'); $this->status[$cacheName] = ($this->isCacheReadable() && (is_writeable($this->fqfn)) && ($this->extensionVersionMatches('cache'))); } // END - if //* DEBUG: */ print($cacheName.'='.intval($this->status[$cacheName]).'
'); @@ -114,8 +114,8 @@ class CacheSystem { function init () { // This will destory an existing cache file! if ($this->ret == $this->statusDone) { - // Mark it as no longer readable - $this->markCacheAsUnreadable(); + // Reset read status + $this->resetCacheReadStatus(); // Create file if ($this->isCacheReadable()) changeMode($this->fqfn, 0666); @@ -129,10 +129,11 @@ class CacheSystem { } } - // Mark the cache as unreadable - function markCacheAsUnreadable () { + // Reset the read status + function resetCacheReadStatus () { unset($this->readable[$this->name]); unset($GLOBALS['file_readable'][$this->fqfn]); + unset($this->status[$this->name]); } function addRow ($data) { @@ -153,11 +154,51 @@ class CacheSystem { } elseif (is_array($v)) { // Serialize and BASE64-encode the array $v = base64_encode(serialize($v)); + } elseif ($this->name == 'config') { + // Configuration + $GLOBALS['cache_array']['config'][$data['config']][$k] = $v; + } elseif ($this->name == 'filter') { + // Filter + $GLOBALS['cache_array']['filter']['chains'][$data['filter_name']][$data['filter_function']] = $data['filter_active']; + $GLOBALS['cache_array']['filter']['counter'][$data['filter_name']][$data['filter_function']] = $data['filter_counter']; + $GLOBALS['cache_array']['filter']['loaded'][$data['filter_name']][$data['filter_function']] = true; + } elseif ($this->name == 'modules') { + // Modules + $GLOBALS['cache_array']['modules'][$k][$data['module']] = $v; + } elseif ($this->name == 'admin') { + // Modules + if ($k == 'login') { + $GLOBALS['cache_array']['admin'][$k][$data['admin_id']] = $v; + } else { + $GLOBALS['cache_array']['admin'][$k][$data['login']] = $v; + } + } elseif ($this->name == 'refdepths') { + // Referal levels + $GLOBALS['cache_array']['refdepths'][$k][$data['id']] = $v; + } elseif ($this->name == 'revision') { + // Revision data + $GLOBALS['cache_array']['revision'][$k] = $v; + } elseif ($this->name == 'themes') { + // Themes + if ($k == 'theme_path') { + $GLOBALS['cache_array']['themes'][$k][$data['id']] = $v; + } else { + $GLOBALS['cache_array']['themes'][$k][$data['theme_path']] = $v; + } + } else { + // Finialize the cache and close it + $this->finialize(); + + // Remove cache + $this->removeCacheFile(true); + + // Unsupported cache found! + debug_report_bug('Unsupported cache ' . $this->name . ' detected.'); } // Write cache line to file fwrite($this->pointer, $this->rewriteEntry($k, $v)); - } + } // END - foreach } else { // Cannot create file addFatalMessage(__METHOD__, __LINE__, "(".__LINE__."): ".getMessage('CACHE_PROBLEMS_DETECTED')); @@ -176,6 +217,9 @@ class CacheSystem { // Close file add destroy handler fclose($this->pointer); + // Reset readable status + $this->resetCacheReadStatus(); + // Set rights if ($this->isCacheReadable()) changeMode($this->fqfn, 0666); @@ -221,17 +265,21 @@ class CacheSystem { } // END - if } else { // Cache file not found or not readable + debug_report_bug($this->name); addFatalMessage(__METHOD__, __LINE__, "(".__LINE__."): ".sprintf(getMessage('CACHE_CANNOT_LOAD'), $this->fqfn)); // Try to remove it $this->removeCacheFile(); } + + // Always return an empty array if we have trouble or no data + return array(); } // Destroy an existing cache file - function removeCacheFile ($removeArray = false, $force = false) { - // Remove cached value of readable cache - $this->markCacheAsUnreadable(); + function removeCacheFile ($force = false) { + // Reset read status + $this->resetCacheReadStatus(); // Debug message /* DEBUG: */ logDebugMessage(__METHOD__, __LINE__, sprintf("%s should be removed.", $this->name)); @@ -262,17 +310,8 @@ class CacheSystem { // Remove cache file from system removeFile($this->fqfn); - // Shall we remove the array from memory? - if ($removeArray === true) { - // Debug message if allowed - if (isDebugModeEnabled()) { - // Debug message - logDebugMessage(__METHOD__, __LINE__, 'removing array!'); - } // END - if - - // Remove it from memory - unset($GLOBALS['cache_array'][$this->name]); - } // END - if + // Reset read status + $this->resetCacheReadStatus(); // Is the file there? if (!$this->isCacheReadable()) { @@ -419,7 +458,7 @@ class CacheSystem { logDebugMessage(__METHOD__, __LINE__, "Cache {$this->name} has missing version entry for extension {$ext_name}! Purging cache..."); // Remove the cache file - $this->removeCacheFile(false, true); + $this->removeCacheFile(true); } } else { // Not installed, does always match