]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - wiki_setupwiki.php3
bringing documentation up to date
[SourceForge/phpwiki.git] / wiki_setupwiki.php3
1 <!-- $Id: wiki_setupwiki.php3,v 1.15 2000-08-29 02:37:42 aredridel Exp $ -->
2 <?php
3 require 'wiki_ziplib.php3';
4
5 function SavePage ($dbi, $page, $source)
6 {
7   global $WikiPageStore;
8   $pagename = $page['pagename'];
9   $version = $page['version'];
10   
11   if (is_array($current = RetrievePage($dbi, $pagename, $WikiPageStore)))
12     {
13       if ($version <= $current['version'])
14         {
15           $page['version'] = $current['version'] + 1;
16           $version = $page['version'] . " [was $version]";
17         }
18       SaveCopyToArchive($dbi, $pagename, $current);
19     }
20
21   printf("Inserting page <b>%s</b>, version %s from %s<br>\n",
22          htmlspecialchars($pagename), $version, $source);
23   flush();
24   InsertPage($dbi, $pagename, $page);
25 }
26       
27 function LoadFile ($dbi, $filename, $text, $mtime)
28 {
29   set_time_limit(30);   // Reset watchdog.
30   if (!$mtime)
31       $mtime = time();  // Last resort.
32
33   $defaults = array('author' => 'The PhpWiki programming team',
34                     'pagename' => rawurldecode($filename),
35                     'created' => $mtime,
36                     'flags' => 0,
37                     'lastmodified' => $mtime,
38                     'refs' => array(),
39                     'version' => 1);
40   
41   if (!($parts = ParseMimeifiedPages($text)))
42     {
43       // Can't parse MIME: assume plain text file.
44       $page = $defaults;
45       $page['pagename'] = rawurldecode($filename);
46       $page['content'] = preg_split('/[ \t\r]*\n/', chop($text));
47       SavePage($dbi, $page, "text file");
48     }
49   else
50     {
51       for (reset($parts); $page = current($parts); next($parts))
52         {
53           // Fill in defaults for missing values?
54           // Should we do more sanity checks here?
55           reset($defaults);
56           while (list($key, $val) = each($defaults))
57               if (!isset($page[$key]))
58                   $page[$key] = $val;
59
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)));
66
67           SavePage($dbi, $page, "MIME file");
68         }
69     }
70 }
71
72 function LoadZipOrDir ($dbi, $zip_or_dir)
73 {
74   $type = filetype($zip_or_dir);
75   
76   if ($type == 'file')
77     {
78       $zip = new ZipReader($zip_or_dir);
79       while (list ($fn, $data, $attrib) = $zip->readFile())
80           LoadFile($dbi, $fn, $data, $attrib['mtime']);
81     }
82   else if ($type == 'dir')
83     {
84       $handle = opendir($dir = $zip_or_dir);
85
86       // load default pages
87       while ($fn = readdir($handle))
88         {
89           if (filetype("$dir/$fn") != 'file')
90               continue;
91           $stat = stat("$dir/$fn");
92           $mtime = $stat[9];
93           LoadFile($dbi, $fn, implode("", file("$dir/$fn")), $mtime);
94         }
95       closedir($handle); 
96     }
97 }
98
99 LoadZipOrDir($dbi, WIKI_PGSRC);
100 ?>