Newer
Older
ubixos-web / docroot / phpwiki / admin / dumpserial.php
@reddawg reddawg on 29 Jun 2004 1 KB UbixOS Web Site
<!-- $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('');
?>