$lastchange) { if ($CacheAuthCheck) { $authok = true; foreach ($cachedata["included"] as $readpage) if (!$CacheSavedAuth($readpage, "read", false)) { $authok = false; break; } if (!$authok) { Lock(0); return $CacheSavedBrowseAction($pagename); } } $contents = $cachedata["html"]; if ($contents) { // Send our own headers, not the PHP default. PrintFmt("headers:", $pagename); if ($DebugCache) $contents = str_replace("", " [Cached]", $contents); print $contents; Lock(-1); return; } } // We have to drop back to Lock(0) to avoid a deadlock. Lock(0); ob_start(); register_shutdown_function("FlushOutputBuffer"); $CacheSavedBrowseAction($pagename); if ($EnableCache && !$CacheFailedAuth) { Lock(2); $fp = fopen($CacheFile, "w"); $cachedata = array("time" => $Now, "included" => $CacheReadAuthPages, "html" => ob_get_contents()); fwrite($fp, serialize($cachedata)); fclose($fp); } Lock(-1); } function FlushOutputBuffer() { ob_end_flush(); } function ResetCache($pagename) { global $HTMLTitleFmt, $CacheSavedBrowseAction; $HTMLTitleFmt = str_replace("", " [Cache Reset]", $HTMLTitleFmt); InvalidateCache(); $CacheSavedBrowseAction($pagename); } function CacheAuthHook($pagename, $level, $authprompt=true) { global $CacheSavedAuth, $CacheReadAuthPages, $CacheFailedAuth; if ($level == "read") $CacheReadAuthPages[] = $pagename; $result = $CacheSavedAuth($pagename, $level, $authprompt); if (!$result && $level == "read") $CacheFailedAuth = true; return $result; } ?>