wiki.techinc.nl/includes/Setup.php
Tim Starling e174a4ddfb Abolished $wgDBname as a unique wiki identifier, it doesn't work with the new-fangled feature we call "table prefixes". Instead use wfWikiID() for an identifier containing the DB name and the prefix if there is one, and wfMemcKey() for cache key construction.
Caches for wikis with table prefixes will be lost on upgrade, caches for wikis without table prefixes will be preserved. Custom cache keys in extensions can be migrated at leisure. Extensions which write to core cache keys should be migrated ASAP, as I have done with Special:Makesysop.
2006-10-04 09:06:18 +00:00

205 lines
5.8 KiB
PHP

<?php
/**
* Include most things that's need to customize the site
* @package MediaWiki
*/
/**
* This file is not a valid entry point, perform no further processing unless
* MEDIAWIKI is defined
*/
if( !defined( 'MEDIAWIKI' ) ) {
echo "This file is part of MediaWiki, it is not a valid entry point.\n";
exit( 1 );
}
# The main wiki script and things like database
# conversion and maintenance scripts all share a
# common setup of including lots of classes and
# setting up a few globals.
#
$fname = 'Setup.php';
wfProfileIn( $fname );
// Check to see if we are at the file scope
if ( !isset( $wgVersion ) ) {
echo "Error, Setup.php must be included from the file scope, after DefaultSettings.php\n";
die( 1 );
}
require_once( "$IP/includes/AutoLoader.php" );
wfProfileIn( $fname.'-exception' );
require_once( "$IP/includes/Exception.php" );
wfInstallExceptionHandler();
wfProfileOut( $fname.'-exception' );
wfProfileIn( $fname.'-includes' );
require_once( "$IP/includes/GlobalFunctions.php" );
require_once( "$IP/includes/Hooks.php" );
require_once( "$IP/includes/Namespace.php" );
require_once( "$IP/includes/ProxyTools.php" );
require_once( "$IP/includes/ObjectCache.php" );
require_once( "$IP/includes/ImageFunctions.php" );
require_once( "$IP/includes/StubObject.php" );
wfProfileOut( $fname.'-includes' );
wfProfileIn( $fname.'-misc1' );
$wgIP = false; # Load on demand
# Can't stub this one, it sets up $_GET and $_REQUEST in its constructor
$wgRequest = new WebRequest;
if ( function_exists( 'posix_uname' ) ) {
$wguname = posix_uname();
$wgNodeName = $wguname['nodename'];
} else {
$wgNodeName = '';
}
# Useful debug output
if ( $wgCommandLineMode ) {
wfDebug( "\n\nStart command line script $self\n" );
} elseif ( function_exists( 'getallheaders' ) ) {
wfDebug( "\n\nStart request\n" );
wfDebug( $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . "\n" );
$headers = getallheaders();
foreach ($headers as $name => $value) {
wfDebug( "$name: $value\n" );
}
wfDebug( "\n" );
} elseif( isset( $_SERVER['REQUEST_URI'] ) ) {
wfDebug( $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . "\n" );
}
if ( $wgSkipSkin ) {
$wgSkipSkins[] = $wgSkipSkin;
}
$wgUseEnotif = $wgEnotifUserTalk || $wgEnotifWatchlist;
if($wgMetaNamespace === FALSE) {
$wgMetaNamespace = str_replace( ' ', '_', $wgSitename );
}
# These are now the same, always
# To determine the user language, use $wgLang->getCode()
$wgContLanguageCode = $wgLanguageCode;
wfProfileOut( $fname.'-misc1' );
wfProfileIn( $fname.'-memcached' );
$wgMemc =& wfGetMainCache();
$messageMemc =& wfGetMessageCacheStorage();
$parserMemc =& wfGetParserCacheStorage();
wfDebug( 'Main cache: ' . get_class( $wgMemc ) .
"\nMessage cache: " . get_class( $messageMemc ) .
"\nParser cache: " . get_class( $parserMemc ) . "\n" );
wfProfileOut( $fname.'-memcached' );
wfProfileIn( $fname.'-SetupSession' );
if ( $wgDBprefix ) {
$wgCookiePrefix = $wgDBname . '_' . $wgDBprefix;
} elseif ( $wgSharedDB ) {
$wgCookiePrefix = $wgSharedDB;
} else {
$wgCookiePrefix = $wgDBname;
}
# If session.auto_start is there, we can't touch session name
#
if( !ini_get( 'session.auto_start' ) )
session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' );
if( !$wgCommandLineMode && ( isset( $_COOKIE[session_name()] ) || isset( $_COOKIE[$wgCookiePrefix.'Token'] ) ) ) {
wfIncrStats( 'request_with_session' );
wfSetupSession();
$wgSessionStarted = true;
} else {
wfIncrStats( 'request_without_session' );
$wgSessionStarted = false;
}
wfProfileOut( $fname.'-SetupSession' );
wfProfileIn( $fname.'-globals' );
if ( !$wgDBservers ) {
$wgDBservers = array(array(
'host' => $wgDBserver,
'user' => $wgDBuser,
'password' => $wgDBpassword,
'dbname' => $wgDBname,
'type' => $wgDBtype,
'load' => 1,
'flags' => ($wgDebugDumpSql ? DBO_DEBUG : 0) | DBO_DEFAULT
));
}
$wgLoadBalancer = new StubObject( 'wgLoadBalancer', 'LoadBalancer',
array( $wgDBservers, false, $wgMasterWaitTimeout, true ) );
$wgContLang = new StubContLang;
$wgUser = new StubUser;
$wgLang = new StubUserLang;
$wgOut = new StubObject( 'wgOut', 'OutputPage' );
$wgParser = new StubObject( 'wgParser', 'Parser' );
$wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache',
array( $parserMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry, wfWikiID() ) );
wfProfileOut( $fname.'-globals' );
wfProfileIn( $fname.'-User' );
# Skin setup functions
# Entries can be added to this variable during the inclusion
# of the extension file. Skins can then perform any necessary initialisation.
#
foreach ( $wgSkinExtensionFunctions as $func ) {
call_user_func( $func );
}
if( !is_object( $wgAuth ) ) {
$wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
}
wfProfileOut( $fname.'-User' );
wfProfileIn( $fname.'-misc2' );
$wgDeferredUpdateList = array();
$wgPostCommitUpdateList = array();
if ( $wgAjaxSearch ) $wgAjaxExportList[] = 'wfSajaxSearch';
wfSeedRandom();
# Placeholders in case of DB error
$wgTitle = null;
$wgArticle = null;
wfProfileOut( $fname.'-misc2' );
wfProfileIn( $fname.'-extensions' );
# Extension setup functions for extensions other than skins
# Entries should be added to this variable during the inclusion
# of the extension file. This allows the extension to perform
# any necessary initialisation in the fully initialised environment
foreach ( $wgExtensionFunctions as $func ) {
$profName = $fname.'-extensions-'.strval( $func );
wfProfileIn( $profName );
call_user_func( $func );
wfProfileOut( $profName );
}
// For compatibility
wfRunHooks( 'LogPageValidTypes', array( &$wgLogTypes ) );
wfRunHooks( 'LogPageLogName', array( &$wgLogNames ) );
wfRunHooks( 'LogPageLogHeader', array( &$wgLogHeaders ) );
wfRunHooks( 'LogPageActionText', array( &$wgLogActions ) );
wfDebug( "Fully initialised\n" );
$wgFullyInitialised = true;
wfProfileOut( $fname.'-extensions' );
wfProfileOut( $fname );
?>