<!-- $Id$ --> <?php /* Write out all pages from the database to a user-specified directory as serialized data structures. */ if (!defined('WIKI_ADMIN')) die("You must be logged in as the administrator to dump serialized pages."); $directory = $dumpserial; $pages = GetAllWikiPagenames($dbi); // see if we can access the directory the user wants us to use if (! file_exists($directory)) { if (! mkdir($directory, 0755)) ExitWiki("Cannot create directory '$directory'<br>\n"); else $html = "Created directory '$directory' for the page dump...<br>\n"; } else { $html = "Using directory '$directory'<br>\n"; } $numpages = count($pages); for ($x = 0; $x < $numpages; $x++) { $pagename = htmlspecialchars($pages[$x]); $filename = preg_replace('/^\./', '%2e', rawurlencode($pages[$x])); $html .= "<br>$pagename ... "; if($pagename != $filename) $html .= "<small>saved as $filename</small> ... "; $data = serialize(RetrievePage($dbi, $pages[$x], $WikiPageStore)); if ($fd = fopen("$directory/$filename", "w")) { $num = fwrite($fd, $data, strlen($data)); $html .= "<small>$num bytes written</small>\n"; } else { ExitWiki("<b>couldn't open file '$directory/$filename' for writing</b>\n"); } } $html .= "<p><b>Dump complete.</b>"; GeneratePage('MESSAGE', $html, 'Dump serialized pages', 0); ExitWiki(''); ?>