X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fcache_functions.php;h=f6bcdfcb5dc0d4ce6551f1454350f3f74481267b;hp=d1cc8d28537b2d760adfe3e112f5e371cfd0af1a;hb=a090e351c49fe021fb3064325694da03402332e0;hpb=3af8b17c962e094e3eaffbd6d111290cdb286c92 diff --git a/inc/libs/cache_functions.php b/inc/libs/cache_functions.php index d1cc8d2853..f6bcdfcb5d 100644 --- a/inc/libs/cache_functions.php +++ b/inc/libs/cache_functions.php @@ -45,47 +45,54 @@ if (!defined('__SECURITY')) { // Caching class class CacheSystem { // Define variables - var $ret = "init"; - var $path = ""; - var $inc = ""; - var $fqfn = ""; + var $ret = 'init'; + var $path = ''; + var $inc = ''; + var $fqfn = ''; var $pointer = false; var $data = array(); var $version = array(); - var $name = ""; + var $name = ''; var $rebuilt = array(); + var $extension = '.cache'; + var $statusDone = 'done'; // Constructor function CacheSystem ($interval, $path, $tested) { // Failed is the default - $this->ret = "failed"; + $this->ret = 'failed'; // Remeber path $this->path = $path; // Check if path exists if ((isDirectory($path)) && (!$tested)) { + // Make FQFN for dummy file + $fqfn = $path . 'dummy.tmp'; + // Check if we can create a file inside the path - touch($path."dummy.tmp", 'w'); - if (FILE_READABLE($path."dummy.tmp")) { + touch($fqfn, 'w'); + + // Is the file there? + if (FILE_READABLE($fqfn)) { // Yes, we can do. So let's remove it - unlink($path."dummy.tmp"); + unlink($fqfn); // Is there a .htaccess file? - if (FILE_READABLE($path.".htaccess")) { + if (FILE_READABLE($path . '.htaccess')) { // Update database that we have tested it - UPDATE_CONFIG("cache_tested", 1); + UPDATE_CONFIG('cache_tested', 1); // All done! - $this->ret = "done"; + $this->ret = $this->statusDone; } else { // Stop! Set a .htaccess file first - $this->ret = "htaccess"; + $this->ret = 'htaccess'; } } } elseif ($tested) { // System already tested - $this->ret = "done"; + $this->ret = $this->statusDone; } } @@ -95,13 +102,13 @@ class CacheSystem { $this->name = $cacheName; // Construct include filename for LOAD_INC_ONCE() call - $this->inc = $this->path . $cacheName . ".cache"; + $this->inc = $this->path . $cacheName . $this->extension; // Construct FQFN (full qualified file name) $this->fqfn = constant('PATH') . $this->inc; // Check if file exists and if version matches - $status = ($this->isCacheReadable() && (is_writeable($this->fqfn)) && ($this->extensionVersionMatches("cache"))); + $status = ($this->isCacheReadable() && (is_writeable($this->fqfn)) && ($this->extensionVersionMatches('cache'))); // Return status return $status; @@ -110,7 +117,7 @@ class CacheSystem { // Initializes the cache file function init () { // This will destory an existing cache file! - if ($this->ret == "done") { + if ($this->ret == $this->statusDone) { // Create file if ($this->isCacheReadable()) chmod($this->fqfn, 0666); $this->pointer = fopen($this->fqfn, 'w') or app_die(__METHOD__, __LINE__, "Cannot write to cache ".$this->fqfn." !"); @@ -119,7 +126,7 @@ class CacheSystem { fwrite($this->pointer, "storeExtensionVersion("cache"); + $this->storeExtensionVersion('cache'); } else { // Cannot create file addFatalMessage(__METHOD__, __LINE__, "(".__LINE__."): ".getMessage('CACHE_PROBLEMS_DETECTED')); @@ -132,13 +139,13 @@ class CacheSystem { // Write every array element to cache file foreach ($data as $k => $v) { // Write global cache array for immediate access - if ((substr($k, 0, 4) == "ext_") && (isset($data['ext_name'])) && (isset($data['ext_id']))) { - if ($k != "ext_name") { + if ((substr($k, 0, 4) == 'ext_') && (isset($data['ext_name'])) && (isset($data['ext_id']))) { + if ($k != 'ext_name') { $GLOBALS['cache_array']['extensions'][$k][$data['ext_name']] = $v; } else { $GLOBALS['cache_array']['extensions'][$k][$data['ext_id']] = $v; } - if (($k == "ext_keep") && ($v == "Y")) { + if (($k == 'ext_keep') && ($v == 'Y')) { $GLOBALS['cache_array']['active_extensions'][$data['ext_name']] = $v; } // END - if } elseif (is_array($v)) { @@ -278,7 +285,7 @@ class CacheSystem { foreach ($array as $k => $v) { if (is_array($v)) { // Multi line(s) found - $LINE = ""; + $LINE = ''; foreach($v as $k2 => $v2) { // Put every array element in a row... $LINE .= $this->rewriteEntry($k, $v2); @@ -377,7 +384,7 @@ class CacheSystem { // @TODO Add support for more types which break in last else-block function rewriteEntry ($key, $value) { // Init line - $line = ""; + $line = ''; // String or non-string? ;-) if (is_string($value)) { @@ -418,10 +425,13 @@ class CacheSystem { // Destroy the cache on extension changes function FILTER_CACHE_DESTROY_ON_EXT_CHANGE ($data) { + // Return the data anyway if there is no cache extension + 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(); + if ($GLOBALS['cache_instance']->loadCacheFile('extensions')) $GLOBALS['cache_instance']->destroyCacheFile(); + if ($GLOBALS['cache_instance']->loadCacheFile('modreg')) $GLOBALS['cache_instance']->destroyCacheFile(); // Return it return $data; @@ -429,22 +439,28 @@ function FILTER_CACHE_DESTROY_ON_EXT_CHANGE ($data) { // Destroy the cache on changing admin function FILTER_CACHE_DESTROY_ON_ADMIN_CHANGE () { + // Skip this step if the cache instance is not there + 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(); } // Destroy all cache files function FILTER_CACHE_DESTROY_ALL () { + // Skip this step if the cache instance is not there + 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(); + 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(); } // Filter for purging entire admin menu cache