X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fclasses%2Fcachesystem.class.php;h=bee80767ac0581e642d07d739a122fb64e47f2db;hb=34b1f5b69205b08c760d6dcc87ef6a2d1c291261;hp=63d458b082cbf22a26ea15d10fcc02fbf0370ced;hpb=c72268213d4d4829d845d39c101bb08fbe4ed79a;p=mailer.git diff --git a/inc/classes/cachesystem.class.php b/inc/classes/cachesystem.class.php index 63d458b082..bee80767ac 100644 --- a/inc/classes/cachesystem.class.php +++ b/inc/classes/cachesystem.class.php @@ -14,11 +14,9 @@ * $Date:: $ * * $Tag:: 0.2.1-FINAL $ * * $Author:: $ * - * Needs to be in all Files and every File needs "svn propset * - * svn:keywords Date Revision" (autoprobset!) at least!!!!!! * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009, 2010 by Mailer Developer Team * + * Copyright (c) 2009 - 2011 by Mailer Developer Team * * For more information visit: http://www.mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -44,35 +42,48 @@ if (!defined('__SECURITY')) { // Caching class class CacheSystem { - // Define variables - var $ret = 'init'; + // Status code + var $statusCode = 'init'; + + // Full-qualified filename var $fqfn = ''; + + // Resource to cache file var $pointer = false; + + // Data array from cache var $data = array(); + + // Version data from cache var $version = array(); + + // Cache name var $name = ''; var $rebuilt = array(); + + // File extension var $extension = '.cache'; - var $statusDone = 'done'; var $status = array(); var $readable = array(); + var $fullPath = ''; // Constructor function CacheSystem () { - // Failed is the default - $this->ret = 'failed'; + // Construct full path + $this->fullPath = getPath() . getCachePath(); - // Remeber path + // Failed is the default + $this->setStatusCode('failed'); // Check if path exists - if (isDirectory(getCachePath())) { + if (isDirectory($this->fullPath)) { // Is there a .htaccess file? - if (isFileReadable(getCachePath() . '.htaccess')) { + if (isFileReadable($this->fullPath . '.htaccess')) { // All done! - $this->ret = $this->statusDone; + $this->setStatusCode('done'); } else { // Stop! Set a .htaccess file first - $this->ret = 'htaccess'; + $this->setStatusCode('htaccess'); } } // END - if } @@ -83,7 +94,7 @@ class CacheSystem { $this->name = $cacheName; // Construct FQFN (full qualified file name) - $this->fqfn = getCachePath() . $cacheName . $this->extension; + $this->fqfn = $this->fullPath . $cacheName . $this->extension; // Check if file exists and if version matches if (!isset($this->status[$cacheName])) { @@ -102,7 +113,7 @@ class CacheSystem { // Initializes the cache file function init () { // This will destory an existing cache file! - if ($this->ret == $this->statusDone) { + if ($this->getStatusCode() == 'done') { // Reset read status $this->resetCacheReadStatus(); @@ -111,13 +122,29 @@ class CacheSystem { $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, "writeLine('' . __LINE__ . '): {--CACHE_PROBLEMS_DETECTED'); } } + /** + * Writes a line to the pointer and adds a \n (new-line) to the end + * + * @access private + */ + function writeLine ($line) { + // Is the pointer a valid resource? + if (is_resource($this->pointer)) { + // Write the line + fwrite($this->pointer, $line . "\n"); + } else { + // Something bad happened + debug_report_bug(__METHOD__, __LINE__, 'Pointer type is ' . gettype($this->pointer) . ', expected is resource.'); + } + } + // Reset the read status function resetCacheReadStatus () { unset($this->readable[$this->name]); @@ -187,12 +214,12 @@ class CacheSystem { // Remove cache $this->removeCacheFile(true); - // Unsupported cache found! + // Unsupported/unhandled cache detected debug_report_bug(__METHOD__, __LINE__, 'Unsupported cache ' . $this->name . ' detected.'); } // Write cache line to file - fwrite($this->pointer, $this->rewriteEntry($k, $v)); + $this->writeLine($this->rewriteEntry($k, $v)); } // END - foreach } else { // Cannot create file @@ -207,7 +234,7 @@ class CacheSystem { $this->storeExtensionVersion('cache'); // Write footer - fwrite($this->pointer, "?>\n"); + $this->writeLine('?>'); // Close file add destroy handler fclose($this->pointer); @@ -277,12 +304,12 @@ class CacheSystem { $this->resetCacheReadStatus(); // Debug message - /* DEBUG: */ logDebugMessage(__METHOD__, __LINE__, sprintf("%s should be removed.", $this->name)); + //* DEBUG: */ logDebugMessage(__METHOD__, __LINE__, sprintf("%s should be removed.", $this->name)); // Is the cache file not yet rebuilt? if ((!isset($this->rebuilt[$this->name])) && ($this->isCacheReadable())) { // Only run in regular output mode - if ((getScriptOutputMode() != 0) && ($force === false)) { + if ((!isHtmlOutputMode()) && ($force === false)) { // Debug message if allowed if (isDebugModeEnabled()) { // Debug message @@ -323,7 +350,7 @@ class CacheSystem { // Unused method: function removeEntry ($search, $data, $array) { - if ($this->status[$this->name] == $this->statusDone) { + if ($this->status[$this->name] == 'done') { // Load cache into dummy array $dummy = $this->getArrayFromCache(); @@ -357,17 +384,17 @@ class CacheSystem { if (is_array($v)) { // Multi line(s) found $LINE = ''; - foreach($v as $k2 => $v2) { + foreach ($v as $k2 => $v2) { // Put every array element in a row... $LINE .= $this->rewriteEntry($k, $v2); - } + } // END - foreach } else { // Single line found $LINE = $this->rewriteEntry($k, $v); } // Write line(s) - fwrite($this->pointer, $LINE); + $this->writeLine($LINE); } // END - foreach } else { // Cannot write array! @@ -377,7 +404,7 @@ class CacheSystem { // Unused method function replaceEntry ($search, $replace, $search_key, $array) { - if ($this->status[$this->name] == $this->statusDone) { + if ($this->status[$this->name] == 'done') { // Load cache into dummy array $dummy = $this->getArrayFromCache(); @@ -425,7 +452,7 @@ class CacheSystem { $this->version[$this->name][$ext_name] = $ext_ver; // Write cache line to file - fwrite($this->pointer, $this->rewriteEntry($ext_name, $ext_ver, 'version', true)); + $this->writeLine($this->rewriteEntry($ext_name, $ext_ver, 'version', true)); } // END - if //* DEBUG: */ debugOutput(__METHOD__ . '(' . __LINE__ . '): '.$this->name.' - '.$ext_name.'='.$ext_ver); } else { @@ -451,8 +478,8 @@ class CacheSystem { // 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..."); + // 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); @@ -477,7 +504,9 @@ class CacheSystem { $extender = '[]'; // Add only for single array entry? - if ($single === true) $extender = ''; + if ($single === true) { + $extender = ''; + } // END - if // Init line $line = ''; @@ -485,34 +514,39 @@ class CacheSystem { // String or non-string? ;-) if (is_string($value)) { // String... - $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . " = '" . escapeQuotes($value) . "';\n"; + $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . " = '" . escapeQuotes($value) . "';"; } elseif (is_null($value)) { // Null - $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . " = null;\n"; + $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . ' = null;'; } 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;'; } else { // False - $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . " = false;\n"; + $line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . ' = false;'; } } 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 . ';'; } // Return line return $line; } - // Getter for cache status - function getStatus () { - return $this->ret; + // Getter for cache status code + function getStatusCode () { + return $this->statusCode; + } + + // Setter for cache status code + function setStatusCode ($status) { + $this->statusCode = $status; } // Checks wether the current cache file is readable @@ -527,6 +561,11 @@ class CacheSystem { return $this->readable[$this->name]; } + // Cloning not allowed + function __clone () { + // Please do not clone this class + debug_report_bug(__METHOD__, __LINE__, 'Cloning of this class is not allowed.'); + } } // END - class // [EOF]