X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fclasses%2Fcachesystem.class.php;h=4c4878aa574e6b4811b44e785b5b58d6dc2007e8;hp=69ce20fef1eecdde14c9a5d0180cdf00a2808831;hb=ad30a667fd8abeb576c04026b62c2e8a29d86f52;hpb=392c181338f84b2e0e0fdfbd304b1ca9d8da077e diff --git a/inc/classes/cachesystem.class.php b/inc/classes/cachesystem.class.php index 69ce20fef1..4c4878aa57 100644 --- a/inc/classes/cachesystem.class.php +++ b/inc/classes/cachesystem.class.php @@ -1,7 +1,7 @@ ret = $this->statusDone; - } else { - // Stop! Set a .htaccess file first - $this->ret = 'htaccess'; - } - } // END - if + // Is there a .htaccess file? + if (isFileReadable(getConfig('CACHE_PATH') . '.htaccess')) { + // All done! + $this->ret = $this->statusDone; + } else { + // Stop! Set a .htaccess file first + $this->ret = 'htaccess'; + } } // END - if } @@ -119,13 +108,13 @@ class CacheSystem { // Create file if ($this->isCacheReadable()) changeMode($this->fqfn, 0666); - $this->pointer = fopen($this->fqfn, 'w') or app_die(__METHOD__, __LINE__, "Cannot write to cache ".$this->fqfn." !"); + $this->pointer = fopen($this->fqfn, 'w') or debug_report_bug(__METHOD__, __LINE__, 'Cannot write to cache ' . $this->fqfn . ' !'); // Add open PHP tag fwrite($this->pointer, "".__LINE__."): ".getMessage('CACHE_PROBLEMS_DETECTED')); + addFatalMessage(__METHOD__, __LINE__, '(' . __LINE__ . '): {--CACHE_PROBLEMS_DETECTED'); } } @@ -149,19 +138,65 @@ class CacheSystem { $GLOBALS['cache_array']['extension'][$k][$data['ext_name']] = $v; } if (($k == 'ext_keep') && ($v == 'Y')) { - $GLOBALS['cache_array']['active_extensions'][$data['ext_name']] = $v; + $GLOBALS['cache_array']['always_active'][$data['ext_name']] = $v; } // END - if + } 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 == 'refsystem') { + // Referal system + $GLOBALS['cache_array']['refsystem'][$k][$data['id']] = $v; + } elseif ($this->name == 'revision') { + // Revision data + $GLOBALS['cache_array']['revision'][$k][0] = $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; + } + } elseif ($this->name == 'imprint') { + // Imprint + $GLOBALS['cache_array']['imprint'][$k][$data['imprint_id']] = $v; } elseif (is_array($v)) { // Serialize and BASE64-encode the array $v = base64_encode(serialize($v)); + } else { + // Finialize the cache and close it + $this->finalize(); + + // Remove cache + $this->removeCacheFile(true); + + // Unsupported cache found! + debug_report_bug(__METHOD__, __LINE__, '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')); + addFatalMessage(__METHOD__, __LINE__, '(' . __LINE__ . '): {--CACHE_PROBLEMS_DETECTED'); } } @@ -186,7 +221,7 @@ class CacheSystem { // Remove pointer and status unset($this->status[$this->name]); $this->pointer = false; - //* DEBUG: */ outputHtml(__METHOD__."(".__LINE__."): {$this->name} - FINALIZED!
"); + //* DEBUG: */ outputHtml(__METHOD__ . '(' . __LINE__."): {$this->name} - FINALIZED!
"); } // END - if } @@ -200,7 +235,7 @@ class CacheSystem { // Is the cache file there? if ($this->isCacheReadable()) { // Load cache file - require($this->fqfn); + include($this->fqfn); // Is there an array? if (isset($this->data[$this->name])) { @@ -225,8 +260,8 @@ 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)); + debug_report_bug(__METHOD__, __LINE__, $this->name); + addFatalMessage(__METHOD__, __LINE__, '(' . __LINE__ . '): ' . getMaskedMessage('CACHE_CANNOT_LOAD', $this->fqfn)); // Try to remove it $this->removeCacheFile(); @@ -237,7 +272,7 @@ class CacheSystem { } // Destroy an existing cache file - function removeCacheFile ($removeArray = false, $force = false) { + function removeCacheFile ($force = false) { // Reset read status $this->resetCacheReadStatus(); @@ -251,7 +286,7 @@ class CacheSystem { // Debug message if allowed if (isDebugModeEnabled()) { // Debug message - debug_report_bug('Not removing cache ' . $this->name . ' in output_mode=' . getOutputMode()); + logDebugMessage(__METHOD__, __LINE__, 'Not removing cache ' . $this->name . ' in output_mode=' . getOutputMode()); } // END - if // Abort here @@ -273,18 +308,6 @@ class CacheSystem { // Reset read status $this->resetCacheReadStatus(); - // 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 - // Is the file there? if (!$this->isCacheReadable()) { // The cache does no longer exist so kill the content @@ -293,7 +316,7 @@ class CacheSystem { $this->rebuilt[$this->name] = true; } else { // Not removed! - addFatalMessage(__METHOD__, __LINE__, "(".__LINE__."): ".sprintf(getMessage('CACHE_CANNOT_UNLINK'), $this->fqfn)); + addFatalMessage(__METHOD__, __LINE__, '(' . __LINE__ . '): ' . getMaskedMessage('CACHE_CANNOT_UNLINK', $this->fqfn)); } } // END - if } @@ -324,7 +347,7 @@ class CacheSystem { } } else { // Cannot write to cache! - addFatalMessage(__METHOD__, __LINE__, "(".__LINE__."): ".getMessage('CACHE_PROBLEMS_DETECTED')); + addFatalMessage(__METHOD__, __LINE__, '(' . __LINE__ . '): {--CACHE_PROBLEMS_DETECTED'); } } @@ -348,7 +371,7 @@ class CacheSystem { } // END - foreach } else { // Cannot write array! - addFatalMessage(__METHOD__, __LINE__, "(".__LINE__."): ".getMessage('CACHE_PROBLEMS_DETECTED')); + addFatalMessage(__METHOD__, __LINE__, '(' . __LINE__ . '): {--CACHE_PROBLEMS_DETECTED'); } } @@ -385,7 +408,7 @@ class CacheSystem { } // END - if } else { // Cannot write to cache! - addFatalMessage(__METHOD__, __LINE__, "(".__LINE__."): ".getMessage('CACHE_PROBLEMS_DETECTED')); + addFatalMessage(__METHOD__, __LINE__, '(' . __LINE__ . '): {--CACHE_PROBLEMS_DETECTED'); } } @@ -398,47 +421,53 @@ class CacheSystem { // Get extension version $ext_ver = getExtensionVersion($ext_name); - // Write cache line to file - fwrite($this->pointer, $this->rewriteEntry($ext_name, $ext_ver, 'version', true)); - // Add the extension version to object (DO NOT REMOVE IT! Endless loop...) $this->version[$this->name][$ext_name] = $ext_ver; + + // Write cache line to file + fwrite($this->pointer, $this->rewriteEntry($ext_name, $ext_ver, 'version', true)); } // END - if - //* DEBUG: */ outputHtml(__METHOD__."(".__LINE__."): {$this->name} - {$ext_name}={$ext_ver}
"); + //* DEBUG: */ outputHtml(__METHOD__ . '(' . __LINE__."): {$this->name} - {$ext_name}={$ext_ver}
"); } else { // Cannot create file - addFatalMessage(__METHOD__, __LINE__, "(".__LINE__."): ".getMessage('CACHE_PROBLEMS_DETECTED')); + addFatalMessage(__METHOD__, __LINE__, '(' . __LINE__ . '): {--CACHE_PROBLEMS_DETECTED'); } } // Checks wether versions from cache and extension matches function extensionVersionMatches ($ext_name) { - // Default is not matching - $matches = false; - - // Compare only if installed - if (isExtensionInstalled($ext_name)) { - // Get extension version - $ext_ver = getExtensionVersion($ext_name); - - // Debug messages - if (isset($this->version[$this->name][$ext_name])) { - // Does it match? - $matches = ((isset($this->version[$this->name][$ext_name])) && ($this->version[$this->name][$ext_name] == $ext_ver)); - } elseif ($this->isCacheReadable()) { - // No cache version found! - logDebugMessage(__METHOD__, __LINE__, "Cache {$this->name} has missing version entry for extension {$ext_name}! Purging cache..."); - - // Remove the cache file - $this->removeCacheFile(false, true); + // Check cache + if (!isset($GLOBALS[__METHOD__][$ext_name])) { + // Does never match by default + $GLOBALS[__METHOD__][$ext_name] = false; + + // Compare only if installed + if (isExtensionInstalled($ext_name)) { + // Get extension version + $ext_ver = getExtensionVersion($ext_name); + + // Debug messages + if (isset($this->version[$this->name][$ext_name])) { + // Does it match? + $GLOBALS[__METHOD__][$ext_name] = ((isset($this->version[$this->name][$ext_name])) && ($this->version[$this->name][$ext_name] == $ext_ver)); + } elseif ($this->isCacheReadable()) { + // No cache version found! + logDebugMessage(__METHOD__, __LINE__, "Cache {$this->name} has missing version entry for extension {$ext_name}! Purging cache..."); + + // Remove the cache file + $this->removeCacheFile(true); + } + } else { + // Not installed, does always match + $GLOBALS[__METHOD__][$ext_name] = true; } } else { - // Not installed, does always match - $matches = true; + // Cache entry found, log debug message + //* DEBUG: */ logDebugMessage(__METHOD__, __LINE__, 'ext_name=' . $ext_name . ', matches=' . intval($GLOBALS[__METHOD__][$ext_name])); } // Compare both - return $matches; + return $GLOBALS[__METHOD__][$ext_name]; } // Rewrit the entry so it can be stored in cache file @@ -456,22 +485,25 @@ class CacheSystem { // String or non-string? ;-) if (is_string($value)) { // String... - $line = '$this->' . $prefix . "['".$this->name."']['" . $key . "']" . $extender . " = '" . smartAddSlashes($value) . "';\n"; + $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . " = '" . escapeQuotes($value) . "';\n"; } elseif (is_null($value)) { // Null - $line = '$this->' . $prefix . "['".$this->name."']['" . $key . "']" . $extender . " = null;\n"; + $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . " = null;\n"; } elseif (is_bool($value)) { // Boolean value if ($value === true) { // True - $line = '$this->' . $prefix . "['".$this->name."']['" . $key . "']" . $extender . " = true;\n"; + $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . " = true;\n"; } else { // False - $line = '$this->' . $prefix . "['".$this->name."']['" . $key . "']" . $extender . " = false;\n"; + $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . " = false;\n"; } + } elseif (isset($value[0])) { + // These lines needs fixing + debug_report_bug(__METHOD__, __LINE__, 'Invalid entry with [0] found. key=' . $key); } else { // Non-string - $line = '$this->' . $prefix . "['".$this->name."']['" . $key . "']" . $extender . " = " . $value . ";\n"; + $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . ' = ' . $value . ";\n"; } // Return line