]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/main.php
log
[SourceForge/phpwiki.git] / lib / main.php
1 <?php $RCS_IDS[] = '$Id: main.php,v 1.1 2001-02-12 01:43:10 dairiki Exp $';
2 function rcs_id($id) { $GLOBALS['RCS_IDS'][] = $id; }
3 include "lib/config.php";
4 include "lib/stdlib.php";
5 include "lib/userauth.php";
6
7
8 function DeducePagename () 
9 {
10    global $pagename, $PATH_INFO;
11    
12    if (isset($pagename))
13       return fix_magic_quotes_gpc($pagename);
14
15    if (USE_PATH_INFO)
16       if (ereg('^' . PATH_INFO_PREFIX . '(.*)$', $PATH_INFO, $m))
17          return $m[1];
18
19    return gettext("FrontPage");
20 }
21
22 $pagename = DeducePagename();
23
24 if (!empty($action))
25 {
26    $action = trim(fix_magic_quotes_gpc($action));
27 }
28 else if (isset($diff))
29 {
30    // Fix for compatibility with very old diff links in RecentChanges.
31    // (The [phpwiki:?diff=PageName] style links are fixed elsewhere.)
32    $action = 'diff';
33    $pagename = fix_magic_quotes_gpc($diff);
34    unset($diff);
35 }
36 else
37 {
38    $action = 'browse';
39 }
40
41
42 function IsSafeAction ($action)
43 {
44    if (! ZIPDUMP_AUTH and $action == 'zip')
45       return true;
46    return in_array ( $action, array('browse',
47                                     'info', 'diff', 'search',
48                                     'edit', 'save',
49                                     'login', 'logout') );
50 }
51
52 function get_auth_mode ($action) 
53 {
54    switch ($action) {
55       case 'logout':
56          return  'LOGOUT';
57       case 'login':
58          return 'LOGIN';
59       default:
60          if (IsSafeAction($action))
61             return 'ANON_OK';
62          else
63             return 'REQUIRE_AUTH';
64    }
65 }
66
67 $user = new WikiUser(get_auth_mode($action));
68
69 // All requests require the database
70 $dbi = OpenDataBase($WikiPageStore);
71
72 // if there is no FrontPage, create a basic set of Wiki pages
73 if ( ! IsWikiPage($dbi, gettext("FrontPage")) )
74 {
75    include_once("lib/loadsave.php");
76    SetupWiki($dbi);
77    CloseDataBase($dbi);
78    exit;
79 }
80
81 // FIXME: I think this is redundant.
82 if (!IsSafeAction($action))
83    $user->must_be_admin($action);
84
85
86 switch ($action) {
87    case 'edit':
88       include "lib/editpage.php";
89       break;
90
91    case 'search':
92       if (isset($searchtype) && ($searchtype == 'full')) {
93          include "lib/fullsearch.php";
94       }
95       else {
96          include "lib/search.php";
97       }
98       break;
99       
100    case 'save':
101       include "lib/savepage.php";
102       break;
103    case 'info':
104       include "lib/pageinfo.php";
105       break;
106    case 'diff':
107       include "lib/diff.php";
108       break;
109       
110    case 'zip':
111       include_once("lib/loadsave.php");
112       MakeWikiZip($dbi, isset($include) && $include == 'all');
113       break;
114
115    case 'upload':
116       include_once("lib/loadsave.php");
117       LoadPostFile($dbi, 'file');
118       break;
119    
120    case 'dumpserial':
121       if (empty($directory))
122          ExitWiki(gettext("You must specify a directory to dump to"));
123
124       include_once("lib/loadsave.php");
125       DumpToDir($dbi, fix_magic_quotes_gpc($directory));
126       break;
127
128    case 'loadfile':
129       if (empty($source))
130          ExitWiki(gettext("You must specify a source to read from"));
131
132       include_once("lib/loadsave.php");
133       LoadFileOrDir($dbi, fix_magic_quotes_gpc($source));
134       break;
135
136    case 'remove':
137       include 'admin/removepage.php';
138       break;
139     
140    case 'lock':
141    case 'unlock':
142       include "admin/lockpage.php";
143       include "lib/display.php";
144       break;
145
146    case 'browse':
147    case 'login':
148    case 'logout':
149       include "lib/display.php"; // defaults to FrontPage
150       break;
151
152    default:
153       echo QElement('p', sprintf("Bad action: '%s'", urlencode($action)));
154       break;
155 }
156
157 CloseDataBase($dbi);
158 // For emacs users
159 // Local Variables:
160 // mode: php
161 // c-file-style: "ellemtel"
162 // End:   
163 ?>