diff options
Diffstat (limited to 'api.php')
-rw-r--r-- | api.php | 36 |
1 files changed, 19 insertions, 17 deletions
@@ -30,19 +30,18 @@ * @file */ +use MediaWiki\Logger\LegacyLogger; + // So extensions (and other code) can check whether they're running in API mode define( 'MW_API', true ); -// Bail if PHP is too low -if ( !function_exists( 'version_compare' ) || version_compare( PHP_VERSION, '5.3.2' ) < 0 ) { - // We need to use dirname( __FILE__ ) here cause __DIR__ is PHP5.3+ - require dirname( __FILE__ ) . '/includes/PHPVersionError.php'; - wfPHPVersionError( 'api.php' ); -} +// Bail on old versions of PHP, or if composer has not been run yet to install +// dependencies. Using dirname( __FILE__ ) here because __DIR__ is PHP5.3+. +require_once dirname( __FILE__ ) . '/includes/PHPVersionCheck.php'; +wfEntryPointCheck( 'api.php' ); require __DIR__ . '/includes/WebStart.php'; -wfProfileIn( 'api.php' ); $starttime = microtime( true ); // URL safety checks @@ -60,19 +59,23 @@ if ( !$wgEnableAPI ) { // Set a dummy $wgTitle, because $wgTitle == null breaks various things // In a perfect world this wouldn't be necessary -$wgTitle = Title::makeTitle( NS_MAIN, 'API' ); +$wgTitle = Title::makeTitle( NS_SPECIAL, 'Badtitle/dummy title for API calls set in api.php' ); -/* Construct an ApiMain with the arguments passed via the URL. What we get back - * is some form of an ApiMain, possibly even one that produces an error message, - * but we don't care here, as that is handled by the ctor. - */ -$processor = new ApiMain( RequestContext::getMain(), $wgEnableWriteAPI ); +// RequestContext will read from $wgTitle, but it will also whine about it. +// In a perfect world this wouldn't be necessary either. +RequestContext::getMain()->setTitle( $wgTitle ); -// Last chance hook before executing the API try { + /* Construct an ApiMain with the arguments passed via the URL. What we get back + * is some form of an ApiMain, possibly even one that produces an error message, + * but we don't care here, as that is handled by the ctor. + */ + $processor = new ApiMain( RequestContext::getMain(), $wgEnableWriteAPI ); + + // Last chance hook before executing the API wfRunHooks( 'ApiBeforeMain', array( &$processor ) ); if ( !$processor instanceof ApiMain ) { - throw new MWException( 'ApiBeforMain hook set $processor to a non-ApiMain class' ); + throw new MWException( 'ApiBeforeMain hook set $processor to a non-ApiMain class' ); } } catch ( Exception $e ) { // Crap. Try to report the exception in API format to be friendly to clients. @@ -94,7 +97,6 @@ DeferredUpdates::doUpdates(); // Log what the user did, for book-keeping purposes. $endtime = microtime( true ); -wfProfileOut( 'api.php' ); wfLogProfilingData(); @@ -122,7 +124,7 @@ if ( $wgAPIRequestLog ) { } else { $items[] = "failed in ApiBeforeMain"; } - wfErrorLog( implode( ',', $items ) . "\n", $wgAPIRequestLog ); + LegacyLogger::emit( implode( ',', $items ) . "\n", $wgAPIRequestLog ); wfDebug( "Logged API request to $wgAPIRequestLog\n" ); } |