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