X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fcache_functions.php;h=0c342e1257ca8c78736ee2fde8e246c214a52337;hp=1a7a5f14e59515f3838dee68e6d7fecd9abd5bd4;hb=e3934352dffa6eb9da59a137ae1a9414e5b4d80b;hpb=4ef4c88fc481335dc0631b223111c15a84cccb51 diff --git a/inc/libs/cache_functions.php b/inc/libs/cache_functions.php index 1a7a5f14e5..0c342e1257 100644 --- a/inc/libs/cache_functions.php +++ b/inc/libs/cache_functions.php @@ -1,7 +1,7 @@ update_interval=$interval; - - // Remeber path - $this->cache_path=$path; - - // Check if path exists - if ((is_dir($path)) && (!$tested)) { - // Check if we can create a file inside the path - @touch($path."dummy.tmp", 'w'); - if (FILE_READABLE($path."dummy.tmp")) { - // Yes, we can do. So let's remove it - @unlink($path."dummy.tmp"); - - // Is there a .htaccess file? - if (FILE_READABLE($path.".htaccess")) { - // Update database that we have tested it - UPDATE_CONFIG("cache_tested", 1); - - // All done! - return "done"; - } else { - // Stop! Set a .htaccess file first - $this->ret="htaccess"; - return "htaccess"; - } - } - } elseif ($tested) { - // System already tested - $this->ret="done"; - return "done"; - } - - // Something goes wrong here! - $this->ret="failed"; - return "failed"; - } - - function cache_file($file, $ignore_ctime=false) { - global $INC; - // Construct FQFN (full qualified file name) - $inc = $this->cache_path.$file.".cache"; - - // Rember it + filename in class - $this->cache_inc = $inc; - - // Check if file exists - $status = (FILE_READABLE($inc) && (is_writeable($inc))); - if ($status) { - // Yes, it does. So let's get it's last changed date/time - $ctime = filectime($inc); - } else { - // No, it doesn't. Zero date/time - $ctime = "0"; - } - - // Remember change date/time in class - $this->cache_ctime = $ctime; - - // Is the cache file outdated? - if (((time() - $ctime) >= $this->update_interval) && (!$ignore_ctime)) { - // Ok, we need an update! - $status = false; - } - - // Return status - return $status; - } - - function cache_init($array) { - // 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." !"); - - // Begin of cache file - fwrite($fp, "\$ARRAY = \"".$array."\";\n\n"); - - // Remember file pointer - $this->cache_pointer = $fp; - } else { - // Cannot create file - ADD_FATAL(__FILE__."(".__LINE__."): ".CACHE_PROBLEMS_DETECTED); - } - } - - function add_row ($data) { - global $cacheArray; - - if (is_resource($this->cache_pointer)) { - // 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") { - $cacheArray['extensions'][$k][$data['ext_name']] = $v; - } else { - $cacheArray['extensions'][$k][$data['ext_id']] = $v; - } - if (($k == "ext_keep") && ($v == "Y")) { - $cacheArray['active_extensions'][$data['ext_name']] = $v; - } // END - if - } // END - if - - // Write cache line to file - @fwrite($this->cache_pointer, "\$data['".$k."'][] = \"".$v."\";\n"); - } - } else { - // Cannot create file - ADD_FATAL(__FILE__."(".__LINE__."): ".CACHE_PROBLEMS_DETECTED); - } - } - - function cache_close() - { - // Quit function when no pointer is set - if (empty($this->cache_pointer)) return; - if ($this->cache_pointer) - { - // Close file add destroy handler - @fclose($this->cache_pointer); - - // Set rights - if (FILE_READABLE($this->cache_inc)) @chmod($this->cache_inc, 0666); - - // Remove pointer - unset($this->cache_pointer); - } - else - { - // Cannot create file - ADD_FATAL(__FILE__."(".__LINE__."): ".CACHE_PROBLEMS_DETECTED); - } - } - - function cache_load() - { - if (FILE_READABLE($this->cache_inc)) { - // Prepare temporary array - $data = array(); - - // Load cache file - $cache = implode("", file($this->cache_inc)); - - // Execute cache file - eval($cache); - if (is_array($data)) { - // Return cache - return $data; - } else { - // Cache problem detected! - $this->cache_destroy(); - } - } - else - { - // Cache file not found or not readable - ADD_FATAL(__FILE__."(".__LINE__."): ".CACHE_CANNOT_LOAD_1.$this->cache_inc.CACHE_CANNOT_LOAD_2); - } - } - - function cache_destroy() - { - if (FILE_READABLE($this->cache_inc)) - { - // Remove cache file from system - @unlink($this->cache_inc); - if (!FILE_READABLE($this->cache_inc)) - { - // Close cache automatically (we don't need it anymore!) - $this->cache_close(); - } - else - { - // Not removed! - ADD_FATAL(__FILE__."(".__LINE__."): ".CACHE_CANNOT_UNLINK_1.$this->cache_inc.CACHE_CANNOT_UNLINK_2); - } - } - else - { - // Does not exist! - ADD_FATAL(__FILE__."(".__LINE__."): ".CACHE_CANNOT_UNLINK_1.$this->cache_inc.CACHE_CANNOT_UNLINK_2); - } - } - - function cache_remove($search, $data, $array) - { - global $ARRAY; - if ((FILE_READABLE($this->cache_inc)) && (is_writeable($this->cache_inc))) - { - // Load cache into dummy array - $dummy = $this->cache_load(); - - // Search for key in array - $key = array_search($data, $dummy[$search]); - if (!empty($key)) - { - // Key (hopefully) found? - foreach ($array as $a) - { - // So we can remove all elements as requested - unset($dummy[$a][$key]); - } - - // 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 .= "\$data['".$k."'][] = \"".$v2."\";\n"; - } - } - else - { - // Single line found - $LINE = "\$data['".$k."'] = \"".$v."\";\n"; - } - - // Write line(s) - fwrite($fp, $LINE); - } - - // Close cache file - fclose($fp); - } - } - else - { - // Cannot write to cache! - ADD_FATAL(__FILE__."(".__LINE__."): ".CACHE_PROBLEMS_DETECTED); - } - } - - function cache_replace($search, $replace, $search_key, $array) - { - global $ARRAY; - if ((FILE_READABLE($this->cache_inc)) && (is_writeable($this->cache_inc))) - { - // Load cache into dummy array - $dummy = $this->cache_load(); - - // Check if $dummy is valid (prevents some errors) - if ((is_array($dummy)) && (isset($dummy[$search])) && (is_array($dummy[$search]))) - { - // Search for key in array - $key_found = array_key_exists($search_key, $dummy[$search]); - if ($key_found == true) - { - $key = $search_key; - // Key (hopefully) found? - foreach ($dummy as $a=>$v) - { - // So we can update all entries - if ($a == $search) - { - // Update now... - $dummy[$a][$search_key] = $replace; - } - } - - // 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 .= "\$data['".$k."'][] = \"".$v2."\";\n"; - } - } - else - { - // Single line found - $LINE = "\$data['".$k."'] = \"".$v."\";\n"; - } - - // Write line(s) - fwrite($fp, $LINE); - } +if (!defined('__SECURITY')) { + die(); +} // END - if - // Close cache file - fclose($fp); - } - } - } - else - { - // Cannot write to cache! - ADD_FATAL(__FILE__."(".__LINE__."): ".CACHE_PROBLEMS_DETECTED); - } - } -} -// +// [EOF] ?>