diff --git a/html/inc/cache.inc b/html/inc/cache.inc index a3a8ea786c..48f10555d4 100644 --- a/html/inc/cache.inc +++ b/html/inc/cache.inc @@ -73,11 +73,9 @@ function clean_cache($max_age, $dir) { chdir($start_dir); } -function start_cache($max_age, $params=""){ - $path = get_path($params); - // check free disk space every once in a while - // +// check free disk space every once in a while +function cache_check_diskspace(){ if (!(rand() % CACHE_SIZE_CHECK_FREQ)) { $too_old=86400; while ((disk_free_space("../cache") < MIN_FREE_SPACE) || @@ -86,9 +84,10 @@ function start_cache($max_age, $params=""){ $too_old/=2; } } +} +function cache_need_to_regenerate($path, $max_age){ $regenerate = false; - if ($max_age) { $request = getallheaders(); clearstatcache(); @@ -123,7 +122,29 @@ function start_cache($max_age, $params=""){ } else { $regenerate = true; } + return $regenerate; +} +// Returns cached data or false if nothing was found +function get_cached_data($max_age,$params=""){ + $path = get_path($params); + cache_check_diskspace(); + if ($max_age) { + $regenerate=cache_need_to_regenerate($path, $max_age); + if (!$regenerate){ + return file_get_contents($path); + } + } + return false; //No data was cached, just return +} + +function start_cache($max_age, $params=""){ + $path = get_path($params); + + cache_check_diskspace(); //Check free disk space once in a while + + if ($max_age) { + $regenerate = cache_need_to_regenerate($path, $max_age); //Is the stored version too old, do we need to regenerate it? if ($regenerate){ // If cached version is too old (or non-existent) // generate the page and write to cache @@ -171,4 +192,15 @@ function end_cache($max_age,$params=""){ fclose($fhandle); } } -?> + +function set_cache_data($data,$params=""){ + // for the benefit of hackers + if (strstr($params, "..")) { + return; + } + $path = get_path($params); + //echo $path; + $fhandle=fopen($path, "w"); + fwrite($fhandle, $data); + fclose($fhandle); +}?>