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 * @global Input $INPUT 9 */ 10 11// update message version 12$updateVersion = 44; 13 14// xdebug_start_profiling(); 15 16if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__).'/'); 17 18if(isset($_SERVER['HTTP_X_DOKUWIKI_DO'])) { 19 $ACT = trim(strtolower($_SERVER['HTTP_X_DOKUWIKI_DO'])); 20} elseif(!empty($_REQUEST['idx'])) { 21 $ACT = 'index'; 22} elseif(isset($_REQUEST['do'])) { 23 $ACT = $_REQUEST['do']; 24} else { 25 $ACT = 'show'; 26} 27 28// load and initialize the core system 29require_once(DOKU_INC.'inc/init.php'); 30 31//import variables 32$INPUT->set('id', str_replace("\xC2\xAD", '', $INPUT->str('id'))); //soft-hyphen 33$QUERY = trim($INPUT->str('id')); 34$ID = getID(); 35 36$REV = $INPUT->int('rev'); 37$IDX = $INPUT->str('idx'); 38$DATE = $INPUT->int('date'); 39$RANGE = $INPUT->str('range'); 40$HIGH = $INPUT->param('s'); 41if(empty($HIGH)) $HIGH = getGoogleQuery(); 42 43if($INPUT->post->has('wikitext')) { 44 $TEXT = cleanText($INPUT->post->str('wikitext')); 45} 46$PRE = cleanText(substr($INPUT->post->str('prefix'), 0, -1)); 47$SUF = cleanText($INPUT->post->str('suffix')); 48$SUM = $INPUT->post->str('summary'); 49 50//make info about the selected page available 51$INFO = pageinfo(); 52 53//export minimal info to JS, plugins can add more 54$JSINFO['id'] = $ID; 55$JSINFO['namespace'] = (string) $INFO['namespace']; 56 57// handle debugging 58if($conf['allowdebug'] && $ACT == 'debug') { 59 html_debug(); 60 exit; 61} 62 63//send 404 for missing pages if configured or ID has special meaning to bots 64if(!$INFO['exists'] && 65 ($conf['send404'] || preg_match('/^(robots\.txt|sitemap\.xml(\.gz)?|favicon\.ico|crossdomain\.xml)$/', $ID)) && 66 ($ACT == 'show' || (!is_array($ACT) && substr($ACT, 0, 7) == 'export_')) 67) { 68 header('HTTP/1.0 404 Not Found'); 69} 70 71//prepare breadcrumbs (initialize a static var) 72if($conf['breadcrumbs']) breadcrumbs(); 73 74// check upstream 75checkUpdateMessages(); 76 77$tmp = array(); // No event data 78trigger_event('DOKUWIKI_STARTED', $tmp); 79 80//close session 81session_write_close(); 82 83//do the work (picks up what to do from global env) 84act_dispatch(); 85 86$tmp = array(); // No event data 87trigger_event('DOKUWIKI_DONE', $tmp); 88 89// xdebug_dump_function_profile(1); 90