]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/setupwiki.php
PhpWiki 1.2.7 backport cvs release-1_2-branch enhancements never released with 1...
[SourceForge/phpwiki.git] / lib / setupwiki.php
1 <!-- $Id: setupwiki.php,v 1.3.2.4 2005-01-07 14:23:05 rurban Exp $ -->
2 <?php
3 require "lib/ziplib.php";
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 (gettext ("Inserting page %s, version %s from %s"),
22          "<b>" . htmlspecialchars ($pagename) . "</b>", $version, $source);
23   print ("<br />\n");
24
25   flush();
26   InsertPage($dbi, $pagename, $page);
27 }
28       
29 function LoadFile ($dbi, $filename, $text, $mtime)
30 {
31   set_time_limit(30);   // Reset watchdog.
32   if (!$mtime)
33       $mtime = time();  // Last resort.
34
35   $defaults = array('author' => 'The PhpWiki programming team',
36                     'pagename' => rawurldecode($filename),
37                     'created' => $mtime,
38                     'flags' => 0,
39                     'lastmodified' => $mtime,
40                     'refs' => array(),
41                     'version' => 1);
42   
43   if (!($parts = ParseMimeifiedPages($text)))
44     {
45       // Can't parse MIME: assume plain text file.
46       $page = $defaults;
47       $page['pagename'] = rawurldecode($filename);
48       $page['content'] = preg_split('/[ \t\r]*\n/', chop($text));
49       SavePage($dbi, $page, "text file");
50     }
51   else
52     {
53       for (reset($parts); $page = current($parts); next($parts))
54         {
55           // Fill in defaults for missing values?
56           // Should we do more sanity checks here?
57           reset($defaults);
58           while (list($key, $val) = each($defaults))
59               if (!isset($page[$key]))
60                   $page[$key] = $val;
61
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)));
68
69           SavePage($dbi, $page, "MIME file");
70         }
71     }
72 }
73
74 function LoadZipOrDir ($dbi, $zip_or_dir)
75 {
76   global $LANG, $genericpages;
77
78   $type = filetype($zip_or_dir);
79   
80   if ($type == 'file')
81     {
82       $zip = new ZipReader($zip_or_dir);
83       while (list ($fn, $data, $attrib) = $zip->readFile())
84           LoadFile($dbi, $fn, $data, $attrib['mtime']);
85     }
86   else if ($type == 'dir')
87     {
88       $handle = opendir($dir = $zip_or_dir);
89
90       // load default pages
91       while ($fn = readdir($handle))
92         {
93           if ($fn[0] == '.' || filetype("$dir/$fn") != 'file')
94               continue;
95           $stat = stat("$dir/$fn");
96           $mtime = $stat[9];
97           LoadFile($dbi, $fn, implode("", file("$dir/$fn")), $mtime);
98         }
99       closedir($handle);
100
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);
107         }
108     }
109 }
110
111 $genericpages = array(
112         "ReleaseNotes",
113         "SteveWainstead",
114         "TestPage"
115         );
116
117 LoadZipOrDir($dbi, WIKI_PGSRC);
118 ?>