xref: /dokuwiki/doku.php (revision f3f0262c480d7e509b008d37c90aed884532bba8)
1*f3f0262cSandi<?php
2*f3f0262cSandi  define('DOKUWIKIVERSION','2004-01-12');
3*f3f0262cSandi
4*f3f0262cSandi  ini_set('short_open_tag',"1");
5*f3f0262cSandi  require_once("conf/dokuwiki.php");
6*f3f0262cSandi  require_once("inc/common.php");
7*f3f0262cSandi  require_once("inc/html.php");
8*f3f0262cSandi  require_once("inc/parser.php");
9*f3f0262cSandi  require_once("lang/en/lang.php");
10*f3f0262cSandi  require_once("lang/".$conf['lang']."/lang.php");
11*f3f0262cSandi  setCorrectLocale();
12*f3f0262cSandi  require_once("inc/auth.php");
13*f3f0262cSandi
14*f3f0262cSandi  //import variables
15*f3f0262cSandi  $QUERY = trim($_REQUEST['id']);
16*f3f0262cSandi  $ID    = cleanID($_REQUEST['id']);
17*f3f0262cSandi  $REV   = $_REQUEST['rev'];
18*f3f0262cSandi  $ACT   = $_REQUEST['do'];
19*f3f0262cSandi  $IDX   = $_REQUEST['idx'];
20*f3f0262cSandi  $DATE  = $_REQUEST['date'];
21*f3f0262cSandi  $RANGE = $_REQUEST['lines'];
22*f3f0262cSandi  $HIGH  = $_REQUEST['s'];
23*f3f0262cSandi  if(empty($HIGH)) $HIGH = getGoogleQuery();
24*f3f0262cSandi
25*f3f0262cSandi  $TEXT  = cleanText($_POST['wikitext']);
26*f3f0262cSandi  $PRE   = cleanText($_POST['prefix']);
27*f3f0262cSandi  $SUF   = cleanText($_POST['suffix']);
28*f3f0262cSandi  $SUM   = $_REQUEST['summary'];
29*f3f0262cSandi
30*f3f0262cSandi  //we accept the do param as HTTP header, too:
31*f3f0262cSandi  if(!empty($_SERVER['HTTP_X_DOKUWIKI_DO'])){
32*f3f0262cSandi    $ACT = trim(strtolower($_SERVER['HTTP_X_DOKUWIKI_DO']));
33*f3f0262cSandi  }
34*f3f0262cSandi
35*f3f0262cSandi  if(!empty($IDX)) $ACT='index';
36*f3f0262cSandi  //set defaults
37*f3f0262cSandi  if(empty($ID))  $ID  = $conf['start'];
38*f3f0262cSandi  if(empty($ACT)) $ACT = 'show';
39*f3f0262cSandi
40*f3f0262cSandi  header('Content-Type: text/html; charset='.$lang['encoding']);
41*f3f0262cSandi
42*f3f0262cSandi  if($ACT == 'debug'){
43*f3f0262cSandi    html_debug();
44*f3f0262cSandi    exit;
45*f3f0262cSandi  }
46*f3f0262cSandi
47*f3f0262cSandi  //already logged in?
48*f3f0262cSandi  if($_SERVER['REMOTE_USER'] && $ACT=='login') $ACT='show';
49*f3f0262cSandi  //handle logout
50*f3f0262cSandi  if($ACT=='logout'){
51*f3f0262cSandi    auth_logoff();
52*f3f0262cSandi    $ACT='login';
53*f3f0262cSandi  }
54*f3f0262cSandi
55*f3f0262cSandi  //handle register
56*f3f0262cSandi  if($ACT=='register' && register()){
57*f3f0262cSandi    $ACT='login';
58*f3f0262cSandi  }
59*f3f0262cSandi
60*f3f0262cSandi  //do saving after spam- and conflictcheck
61*f3f0262cSandi  if($ACT == $lang['btn_save'] && auth_quickaclcheck($ID)){
62*f3f0262cSandi    if(checkwordblock()){
63*f3f0262cSandi      //spam detected
64*f3f0262cSandi      $ACT = 'wordblock';
65*f3f0262cSandi    }elseif($DATE != 0 && @filemtime(wikiFN($ID)) > $DATE ){
66*f3f0262cSandi      //newer version available -> ask what to do
67*f3f0262cSandi      $ACT = 'conflict';
68*f3f0262cSandi    }else{
69*f3f0262cSandi      //save it
70*f3f0262cSandi      saveWikiText($ID,con($PRE,$TEXT,$SUF,1),$SUM); //use pretty mode for con
71*f3f0262cSandi      //unlock it
72*f3f0262cSandi      unlock($id);
73*f3f0262cSandi      //show it
74*f3f0262cSandi      header("Location: ".wl($ID, '','doku.php',true));
75*f3f0262cSandi      exit();
76*f3f0262cSandi    }
77*f3f0262cSandi  }
78*f3f0262cSandi
79*f3f0262cSandi  //make infos about current page available
80*f3f0262cSandi  $INFO = pageinfo();
81*f3f0262cSandi
82*f3f0262cSandi  //Editing: check if locked by anyone - if not lock for my self
83*f3f0262cSandi  if(($ACT == 'edit' || $ACT == $lang['btn_preview'])){# && $INFO['editable']){
84*f3f0262cSandi    $lockedby = checklock($ID);
85*f3f0262cSandi    if($lockedby){
86*f3f0262cSandi      $ACT = 'locked';
87*f3f0262cSandi    }else{
88*f3f0262cSandi      lock($ID);
89*f3f0262cSandi    }
90*f3f0262cSandi  }else{
91*f3f0262cSandi    //try to unlock
92*f3f0262cSandi    unlock($ID);
93*f3f0262cSandi  }
94*f3f0262cSandi
95*f3f0262cSandi
96*f3f0262cSandi  //display some infos
97*f3f0262cSandi  if($ACT == 'check'){
98*f3f0262cSandi    check();
99*f3f0262cSandi    $ACT = 'show';
100*f3f0262cSandi  }
101*f3f0262cSandi
102*f3f0262cSandi  //check which permission is needed
103*f3f0262cSandi  if(in_array($ACT,array('preview','wordblock','conflict','lockedby'))){
104*f3f0262cSandi    if($INFO['exists']){
105*f3f0262cSandi      $permneed = AUTH_EDIT;
106*f3f0262cSandi    }else{
107*f3f0262cSandi      $permneed = AUTH_CREATE;
108*f3f0262cSandi    }
109*f3f0262cSandi  }elseif(in_array($ACT,array('revisions','show','edit'))){
110*f3f0262cSandi    $permneed = AUTH_READ;
111*f3f0262cSandi  }else{
112*f3f0262cSandi    $permneed = AUTH_NONE;
113*f3f0262cSandi  }
114*f3f0262cSandi
115*f3f0262cSandi  //start output
116*f3f0262cSandi  if(substr($ACT,0,6) != 'export') html_header();
117*f3f0262cSandi  if(html_acl($permneed)){
118*f3f0262cSandi    if($ACT == 'edit'){
119*f3f0262cSandi      html_edit();
120*f3f0262cSandi    }elseif($ACT == $lang['btn_preview']){
121*f3f0262cSandi      html_edit($TEXT);
122*f3f0262cSandi      html_show($TEXT);
123*f3f0262cSandi    }elseif($ACT == 'wordblock'){
124*f3f0262cSandi      html_edit($TEXT,'wordblock');
125*f3f0262cSandi    }elseif($ACT == 'search' && !empty($QUERY)){
126*f3f0262cSandi      html_search();
127*f3f0262cSandi    }elseif($ACT == 'revisions'){
128*f3f0262cSandi      html_revisions();
129*f3f0262cSandi    }elseif($ACT == 'diff'){
130*f3f0262cSandi      html_diff();
131*f3f0262cSandi    }elseif($ACT == 'recent'){
132*f3f0262cSandi      html_recent();
133*f3f0262cSandi    }elseif($ACT == 'index'){
134*f3f0262cSandi      html_index($IDX);
135*f3f0262cSandi    }elseif($ACT == 'backlink'){
136*f3f0262cSandi      html_backlinks();
137*f3f0262cSandi    }elseif($ACT == 'conflict'){
138*f3f0262cSandi      html_conflict(con($PRE,$TEXT,$SUF),$SUM);
139*f3f0262cSandi      html_diff(con($PRE,$TEXT,$SUF),false);
140*f3f0262cSandi    }elseif($ACT == 'locked'){
141*f3f0262cSandi      html_locked($lockedby);
142*f3f0262cSandi    }elseif($ACT == 'login'){
143*f3f0262cSandi      html_login();
144*f3f0262cSandi    }elseif($ACT == 'register' && $conf['openregister']){
145*f3f0262cSandi      html_register();
146*f3f0262cSandi    }elseif($ACT == 'export_html'){
147*f3f0262cSandi      html_head();
148*f3f0262cSandi			print "<body>\n";
149*f3f0262cSandi			print parsedWiki($ID,$REV,false);
150*f3f0262cSandi			print "</body>\n</html>\n";
151*f3f0262cSandi		}elseif($ACT == 'export_raw'){
152*f3f0262cSandi			header("Content-Type: text/plain");
153*f3f0262cSandi      print rawWiki($ID,$REV);
154*f3f0262cSandi    }else{
155*f3f0262cSandi      $ACT='show';
156*f3f0262cSandi      html_show();
157*f3f0262cSandi    }
158*f3f0262cSandi  }
159*f3f0262cSandi  if(substr($ACT,0,6) != 'export') html_footer();
160*f3f0262cSandi
161*f3f0262cSandi?>
162