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