summaryrefslogtreecommitdiff
path: root/api.php
diff options
context:
space:
mode:
Diffstat (limited to 'api.php')
-rw-r--r--api.php36
1 files changed, 19 insertions, 17 deletions
diff --git a/api.php b/api.php
index 2a6a095d..615c71ca 100644
--- a/api.php
+++ b/api.php
@@ -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" );
}