// Check if path exists
if ((is_dir($path)) && (!$tested)) {
// Check if we can create a file inside the path
- @touch($path."dummy.tmp", 'w');
+ touch($path."dummy.tmp", 'w');
if (FILE_READABLE($path."dummy.tmp")) {
// Yes, we can do. So let's remove it
- @unlink($path."dummy.tmp");
+ unlink($path."dummy.tmp");
// Is there a .htaccess file?
if (FILE_READABLE($path.".htaccess")) {
if (($status) && ((time() - $ctime) >= $this->update_interval)) {
// Ok, we need an update!
$status = false;
- } // END - if
+ } elseif ($status) {
+ // Check on 'cache' extension
+ $status = $this->ext_version_matches("cache");
+ }
// Return status
return $status;
// This will destory an existing cache file!
if ($this->ret == "done") {
// Create file
- if (FILE_READABLE($this->cache_inc)) @chmod($this->cache_inc, 0666);
- $fp = @fopen($this->cache_inc, 'w') or mxchange_die("Cannot write to cache ".$this->cache_inc." !");
+ if (FILE_READABLE($this->cache_inc)) chmod($this->cache_inc, 0666);
+ $this->cache_pointer = fopen($this->cache_inc, 'w') or mxchange_die("Cannot write to cache ".$this->cache_inc." !");
// Begin of cache file
- fwrite($fp, "\$ARRAY = \"".$array."\";\n\n");
+ fwrite($this->cache_pointer, "<?php\n\$ARRAY = \"".$array."\";\n\n");
- // Remember file pointer
- $this->cache_pointer = $fp;
+ // Add default depency
+ $this->store_extension_version("cache");
} else {
// Cannot create file
ADD_FATAL(__FILE__."(<font color=\"#0000aa\">".__LINE__."</font>): ".CACHE_PROBLEMS_DETECTED);
}
// Write cache line to file
- @fwrite($this->cache_pointer, $this->add_raw_row($k, $v));
+ fwrite($this->cache_pointer, $this->add_raw_row($k, $v));
}
} else {
// Cannot create file
}
}
- function cache_close()
- {
+ function cache_close() {
// Quit function when no pointer is set
if (empty($this->cache_pointer)) return;
- if ($this->cache_pointer)
- {
+ if (is_resource($this->cache_pointer)) {
+ // Write footer
+ fwrite($this->cache_pointer, "?>\n");
+
// Close file add destroy handler
- @fclose($this->cache_pointer);
+ fclose($this->cache_pointer);
// Set rights
- if (FILE_READABLE($this->cache_inc)) @chmod($this->cache_inc, 0666);
+ if (FILE_READABLE($this->cache_inc)) chmod($this->cache_inc, 0666);
// Remove pointer
unset($this->cache_pointer);
- }
- else
- {
+ } else {
// Cannot create file
ADD_FATAL(__FILE__."(<font color=\"#0000aa\">".__LINE__."</font>): ".CACHE_PROBLEMS_DETECTED);
}
}
function cache_load() {
+ // Is the cache already loaded?
+ if (isset($this->cache_data[$this->cache_file])) {
+ // Return it's content!
+ return $this->cache_data[$this->cache_file];
+ } // END - if
+
// Is the cache file there?
if (FILE_READABLE($this->cache_inc)) {
// Prepare temporary array
$cache_version = null;
// Load cache file
- $this->cache_data[$this->cache_file] = implode("", file($this->cache_inc));
-
- // Execute cache file
- eval($this->cache_data[$this->cache_file]);
+ require_once($this->cache_inc);
+ // Is there an array?
if (is_array($data)) {
// Cache data
$this->cache_data[$this->cache_file] = $data;
// Is the cache file there?
if (FILE_READABLE($this->cache_inc)) {
// Remove cache file from system
- @unlink($this->cache_inc);
+ unlink($this->cache_inc);
if (!FILE_READABLE($this->cache_inc)) {
// Close cache automatically (we don't need it anymore!)
$this->cache_close();
}
// Flush array to cache file
- $fp = fopen($this->cache_inc, 'w');
- fwrite($fp, "\$ARRAY = \"".$ARRAY."\";\n");
- foreach ($dummy as $k => $v) {
- if (is_array($v)) {
- // Multi line(s) found
- $LINE = "";
- foreach($v as $k2 => $v2) {
- // Put every array element in a row...
- $LINE .= $this->add_raw_row($k, $v2);
- }
- } else {
- // Single line found
- $LINE = $this->add_raw_row($k, $v);
- }
+ $this->cache_init($ARRAY);
- // Write line(s)
- fwrite($fp, $LINE);
- }
+ // Write array out
+ $this->cache_write_array($dummy);
// Close cache file
- fclose($fp);
+ $this->cache_close();
}
} else {
// Cannot write to cache!
}
}
+ function cache_write_array ($array) {
+ if (is_resource($this->cache_pointer)) {
+ foreach ($array as $k => $v) {
+ if (is_array($v)) {
+ // Multi line(s) found
+ $LINE = "";
+ foreach($v as $k2 => $v2) {
+ // Put every array element in a row...
+ $LINE .= $this->add_raw_row($k, $v2);
+ }
+ } else {
+ // Single line found
+ $LINE = $this->add_raw_row($k, $v);
+ }
+
+ // Write line(s)
+ fwrite($this->cache_pointer, $LINE);
+ } // END - foreach
+ } else {
+ // Cannot write array!
+ ADD_FATAL(__FILE__."(<font color=\"#0000aa\">".__LINE__."</font>): ".CACHE_PROBLEMS_DETECTED);
+ }
+ }
+
function cache_replace($search, $replace, $search_key, $array) {
global $ARRAY;
- if ((FILE_READABLE($this->cache_inc)) && (is_writeable($this->cache_inc)))
- {
+ if ((FILE_READABLE($this->cache_inc)) && (is_writeable($this->cache_inc))) {
// Load cache into dummy array
$dummy = $this->cache_load();
}
// Flush array to cache file
- $fp = fopen($this->cache_inc, 'w');
- fwrite($fp, "\$dummy = \"".$ARRAY."\";\n");
- foreach ($dummy as $k => $v) {
- if (is_array($v)) {
- // Multi line(s) found
- $LINE = "";
- foreach($v as $k2 => $v2) {
- // Put every array element in a row...
- $LINE .= $this->add_raw_row($k, $v2);
- }
- } else {
- // Single line found
- $LINE = $this->add_raw_row($k, $v);
- }
+ $this->cache_init($ARRAY);
- // Write line(s)
- fwrite($fp, $LINE);
- }
+ // Write array out
+ $this->cache_write_array($dummy);
// Close cache file
- fclose($fp);
+ $this->cache_close();
}
}
} else {
$ext_ver = GET_EXT_VERSION($ext_name);
// Write cache line to file
- @fwrite($this->cache_pointer, "\$cache_version['".$ext_name."'] = \"".$ext_ver."\";\n");
+ fwrite($this->cache_pointer, "\$cache_version['".$ext_name."'] = \"".$ext_ver."\";\n");
} else {
// Cannot create file
ADD_FATAL(__FILE__."(<font color=\"#0000aa\">".__LINE__."</font>): ".CACHE_PROBLEMS_DETECTED);