Merge "Add stats for block errors on create/edit actions"

This commit is contained in:
jenkins-bot 2018-11-29 01:04:38 +00:00 committed by Gerrit Code Review
commit d2b7662bba

View file

@ -21,6 +21,7 @@
*/
use Wikimedia\Rdbms\IDatabase;
use MediaWiki\MediaWikiServices;
/**
* This abstract class implements many basic API functions, and is the base of
@ -2069,11 +2070,41 @@ abstract class ApiBase extends ContextSource {
foreach ( (array)$actions as $action ) {
$errors = array_merge( $errors, $title->getUserPermissionsErrors( $action, $user ) );
}
if ( $errors ) {
// track block notices
if ( $this->getConfig()->get( 'EnableBlockNoticeStats' ) ) {
$this->trackBlockNotices( $errors );
}
$this->dieStatus( $this->errorArrayToStatus( $errors, $user ) );
}
}
/**
* Keep track of errors messages resulting from a block
*
* @param array $errors
*/
private function trackBlockNotices( array $errors ) {
$errorMessageKeys = [
'blockedtext',
'blockedtext-partial',
'autoblockedtext',
'systemblockedtext',
];
$statsd = MediaWikiServices::getInstance()->getStatsdDataFactory();
foreach ( $errors as $error ) {
if ( in_array( $error[0], $errorMessageKeys ) ) {
$wiki = $this->getConfig()->get( 'DBname' );
$statsd->increment( 'BlockNotices.' . $wiki . '.MediaWikiApi.returned' );
break;
}
}
}
/**
* Will only set a warning instead of failing if the global $wgDebugAPI
* is set to true. Otherwise behaves exactly as self::dieWithError().