X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=api.php;h=74ee775bbe9f8021b1f4e52370cea090c058d9ac;hb=9d0f0119c6fd98ae7736c8b11a38fed989b3209d;hp=e8a911e3a10784a83e7e3c18781b8f4b56e93e0a;hpb=e4fc0b772130dd520f98b1db9e9313215569239e;p=lhc%2Fweb%2Fwiklou.git diff --git a/api.php b/api.php index e8a911e3a1..74ee775bbe 100644 --- a/api.php +++ b/api.php @@ -34,7 +34,7 @@ define( 'MW_API', true ); // Bail if PHP is too low -if ( !function_exists( 'version_compare' ) || version_compare( PHP_VERSION, '5.3.2' ) < 0 ) { +if ( !function_exists( 'version_compare' ) || version_compare( PHP_VERSION, '5.3.3' ) < 0 ) { // We need to use dirname( __FILE__ ) here cause __DIR__ is PHP5.3+ require dirname( __FILE__ ) . '/includes/PHPVersionError.php'; wfPHPVersionError( 'api.php' ); @@ -62,14 +62,14 @@ if ( !$wgEnableAPI ) { // In a perfect world this wouldn't be necessary $wgTitle = Title::makeTitle( NS_MAIN, 'API' ); -/* 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 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' ); @@ -104,12 +104,17 @@ if ( $wgAPIRequestLog ) { wfTimestamp( TS_MW ), $endtime - $starttime, $wgRequest->getIP(), - $_SERVER['HTTP_USER_AGENT'] + $wgRequest->getHeader( 'User-agent' ) ); $items[] = $wgRequest->wasPosted() ? 'POST' : 'GET'; if ( $processor ) { - $module = $processor->getModule(); - if ( $module->mustBePosted() ) { + try { + $manager = $processor->getModuleManager(); + $module = $manager->getModule( $wgRequest->getVal( 'action' ), 'action' ); + } catch ( Exception $ex ) { + $module = null; + } + if ( !$module || $module->mustBePosted() ) { $items[] = "action=" . $wgRequest->getVal( 'action' ); } else { $items[] = wfArrayToCgi( $wgRequest->getValues() );