1 <!-- $Id: setupwiki.php,v 1.3.2.3 2005-01-07 14:02:28 rurban Exp $ -->
3 require "lib/ziplib.php";
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 (gettext ("Inserting page %s, version %s from %s"),
22 "<b>" . htmlspecialchars ($pagename) . "</b>", $version, $source);
26 InsertPage($dbi, $pagename, $page);
29 function LoadFile ($dbi, $filename, $text, $mtime)
31 set_time_limit(30); // Reset watchdog.
33 $mtime = time(); // Last resort.
35 $defaults = array('author' => 'The PhpWiki programming team',
36 'pagename' => rawurldecode($filename),
39 'lastmodified' => $mtime,
43 if (!($parts = ParseMimeifiedPages($text)))
45 // Can't parse MIME: assume plain text file.
47 $page['pagename'] = rawurldecode($filename);
48 $page['content'] = preg_split('/[ \t\r]*\n/', chop($text));
49 SavePage($dbi, $page, "text file");
53 for (reset($parts); $page = current($parts); next($parts))
55 // Fill in defaults for missing values?
56 // Should we do more sanity checks here?
58 while (list($key, $val) = each($defaults))
59 if (!isset($page[$key]))
62 if ($page['pagename'] != rawurldecode($filename))
63 printf("<b>Warning:</b> "
64 . "pagename (%s) doesn't match filename (%s)"
65 . " (using pagename)<br>\n",
66 htmlspecialchars($page['pagename']),
67 htmlspecialchars(rawurldecode($filename)));
69 SavePage($dbi, $page, "MIME file");
74 function LoadZipOrDir ($dbi, $zip_or_dir)
76 global $LANG, $genericpages;
78 $type = filetype($zip_or_dir);
82 $zip = new ZipReader($zip_or_dir);
83 while (list ($fn, $data, $attrib) = $zip->readFile())
84 LoadFile($dbi, $fn, $data, $attrib['mtime']);
86 else if ($type == 'dir')
88 $handle = opendir($dir = $zip_or_dir);
91 while ($fn = readdir($handle))
93 if ($fn[0] == '.' || filetype("$dir/$fn") != 'file')
95 $stat = stat("$dir/$fn");
97 LoadFile($dbi, $fn, implode("", file("$dir/$fn")), $mtime);
101 if ($LANG != "C") { // if language is not default, then insert
102 // generic pages from the English ./pgsrc
103 reset($genericpages);
104 $dir = DEFAULT_WIKI_PGSRC;
105 while (list(, $fn) = each($genericpages))
106 LoadFile($dbi, $fn, implode("", file("$dir/$fn")), $mtime);
111 $genericpages = array(
117 LoadZipOrDir($dbi, WIKI_PGSRC);