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