1 <!-- $Id: wiki_setupwiki.php3,v 1.15 2000-08-29 02:37:42 aredridel Exp $ -->
3 require 'wiki_ziplib.php3';
5 function SavePage ($dbi, $page, $source)
8 $pagename = $page['pagename'];
9 $version = $page['version'];
11 if (is_array($current = RetrievePage($dbi, $pagename, $WikiPageStore)))
13 if ($version <= $current['version'])
15 $page['version'] = $current['version'] + 1;
16 $version = $page['version'] . " [was $version]";
18 SaveCopyToArchive($dbi, $pagename, $current);
21 printf("Inserting page <b>%s</b>, version %s from %s<br>\n",
22 htmlspecialchars($pagename), $version, $source);
24 InsertPage($dbi, $pagename, $page);
27 function LoadFile ($dbi, $filename, $text, $mtime)
29 set_time_limit(30); // Reset watchdog.
31 $mtime = time(); // Last resort.
33 $defaults = array('author' => 'The PhpWiki programming team',
34 'pagename' => rawurldecode($filename),
37 'lastmodified' => $mtime,
41 if (!($parts = ParseMimeifiedPages($text)))
43 // Can't parse MIME: assume plain text file.
45 $page['pagename'] = rawurldecode($filename);
46 $page['content'] = preg_split('/[ \t\r]*\n/', chop($text));
47 SavePage($dbi, $page, "text file");
51 for (reset($parts); $page = current($parts); next($parts))
53 // Fill in defaults for missing values?
54 // Should we do more sanity checks here?
56 while (list($key, $val) = each($defaults))
57 if (!isset($page[$key]))
60 if ($page['pagename'] != rawurldecode($filename))
61 printf("<b>Warning:</b> "
62 . "pagename (%s) doesn't match filename (%s)"
63 . " (using pagename)<br>\n",
64 htmlspecialchars($page['pagename']),
65 htmlspecialchars(rawurldecode($filename)));
67 SavePage($dbi, $page, "MIME file");
72 function LoadZipOrDir ($dbi, $zip_or_dir)
74 $type = filetype($zip_or_dir);
78 $zip = new ZipReader($zip_or_dir);
79 while (list ($fn, $data, $attrib) = $zip->readFile())
80 LoadFile($dbi, $fn, $data, $attrib['mtime']);
82 else if ($type == 'dir')
84 $handle = opendir($dir = $zip_or_dir);
87 while ($fn = readdir($handle))
89 if (filetype("$dir/$fn") != 'file')
91 $stat = stat("$dir/$fn");
93 LoadFile($dbi, $fn, implode("", file("$dir/$fn")), $mtime);
99 LoadZipOrDir($dbi, WIKI_PGSRC);