pagefile($pagename); if ($pagefile && ($fp=@gzopen($pagefile, "r"))) { while (!gzeof($fp)) { $line = gzgets($fp, 4096); while (substr($line, -1, 1) != "\n" && !gzeof($fp)) { $line .= gzgets($fp, 4096); } $line = rtrim($line); if ($urlencoded) $line = urldecode(str_replace('+', '%2b', $line)); @list($k,$v) = explode('=', $line, 2); if (!$k) continue; if ($k == 'version') { $ordered = (strpos($v, 'ordered=1') !== false); $urlencoded = (strpos($v, 'urlencoded=1') !== false); if (strpos($v, 'pmwiki-0.')!==false) $newline="\262"; } if ($k == 'newline') { $newline = $v; continue; } if ($since > 0 && preg_match('/:(\\d+)/', $k, $m) && $m[1] < $since) { if ($ordered) break; continue; } if ($newline) $v = str_replace($newline, "\n", $v); $page[$k] = $v; } gzclose($fp); } return @$page; } function write($pagename,$page) { global $Now,$Version, $EnablePageStoreGZ,$EnablePageStoreVerify; $page['name'] = $pagename; $page['time'] = $Now; $page['host'] = $_SERVER['REMOTE_ADDR']; $page['agent'] = @$_SERVER['HTTP_USER_AGENT']; $page['rev'] = @$page['rev']+1; unset($page['version']); unset($page['newline']); uksort($page, 'CmpPageAttr'); $s = false; $pagefile = $this->pagefile($pagename); $dir = dirname($pagefile); mkdirp($dir); if (!file_exists("$dir/.htaccess") && $fp = @fopen("$dir/.htaccess", "w")) { fwrite($fp, "Order Deny,Allow\nDeny from all\n"); fclose($fp); } if ($EnablePageStoreGZ) { ## save in compressed format if ($pagefile && ($fp=gzopen("$pagefile,new","w"))) { $r0 = array('%', "\n", '<'); $r1 = array('%25', '%0a', '%3c'); $x = "version=$Version ordered=1 urlencoded=1\n"; $s = true && gzputs($fp, $x); $sz = strlen($x); foreach($page as $k=>$v) if ($k > '' && $k{0} != '=') { $x = str_replace($r0, $r1, "$k=$v") . "\n"; $s = $s && gzputs($fp, $x); $sz += strlen($x); } $s = gzclose($fp) && $s; ## $s = $s && (filesize("$pagefile,new") > $sz * 0.95); /*** Checking code as suggested from Pm, reread the file, make sure it was not corrupted*/ if ($EnablePageStoreVerify) { $fp = gzopen("$pagefile,new", 'r'); $len = $sz * 0.95; while ($len > 0 && !gzeof($fp)) { $x = gzread($fp, 4096); $len -= strlen($x); } gzclose($fp); $s = $s && ($len <= 0); } /*** End of checking code*/ if (file_exists($pagefile)) $s = $s && unlink($pagefile); $s = $s && rename("$pagefile,new", $pagefile); } } else { ## save in uncompressed format, taken 1:1 from pmwiki.php if ($pagefile && ($fp=fopen("$pagefile,new","w"))) { $r0 = array('%', "\n", '<'); $r1 = array('%25', '%0a', '%3c'); $x = "version=$Version ordered=1 urlencoded=1\n"; $s = true && fputs($fp, $x); $sz = strlen($x); foreach($page as $k=>$v) if ($k > '' && $k{0} != '=') { $x = str_replace($r0, $r1, "$k=$v") . "\n"; $s = $s && fputs($fp, $x); $sz += strlen($x); } $s = fclose($fp) && $s; $s = $s && (filesize("$pagefile,new") > $sz * 0.95); if (file_exists($pagefile)) $s = $s && unlink($pagefile); $s = $s && rename("$pagefile,new", $pagefile); } } $s && fixperms($pagefile); if (!$s) Abort("Cannot write page to $pagename ($pagefile)...changes not saved"); PCache($pagename, $page); } } function ConvertGZ() { global $WikiDir,$EnablePageStoreGZ; $pagelist = $WikiDir->ls(); $pagelist = array_unique($pagelist); sort($pagelist); $pagecount = count($pagelist); echo " Compress/Uncompress pages

Compress/Uncompress existing pages

I'm now "; echo ($EnablePageStoreGZ) ? "compressing " : "uncompressing "; echo "the files (pages) you have stored in your wiki. When this is finished you can get rid of the ConvertGZ(); line in your local/config.php

"; if ($pagelist) { foreach($pagelist as $p) { echo ($EnablePageStoreGZ) ? "
  • Compressing $p
  • \n" : "
  • Uncompressing $p
  • \n"; $page = ReadPage($p); WritePage($p,$page); } } echo ($EnablePageStoreGZ) ? "

    Compressed" : "

    Uncompressed"; echo " ", $pagecount, " pages.

    \n"; echo "

    Now you can get rid of the ConvertGZ(); line in your local/config.php

    \n"; exit(0); } ?>