$status = Status::newGood();
foreach ( $errors as $error ) {
- if ( is_array( $error ) && isset( self::$blockMsgMap[$error[0]] ) && $user->getBlock() ) {
+ if ( !is_array( $error ) ) {
+ $error = [ $error ];
+ }
+ if ( is_string( $error[0] ) && isset( self::$blockMsgMap[$error[0]] ) && $user->getBlock() ) {
list( $msg, $code ) = self::$blockMsgMap[$error[0]];
$status->fatal( ApiMessage::create( $msg, $code,
[ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $user->getBlock() ) ]
) );
} else {
- $status->fatal( ...(array)$error );
+ $status->fatal( ...$error );
}
}
return $status;
* @param string $feature Feature being used.
*/
public function logFeatureUsage( $feature ) {
+ static $loggedFeatures = [];
+
+ // Only log each feature once per request. We can get multiple calls from calls to
+ // extractRequestParams() with different values for 'parseLimit', for example.
+ if ( isset( $loggedFeatures[$feature] ) ) {
+ return;
+ }
+ $loggedFeatures[$feature] = true;
+
$request = $this->getRequest();
$ctx = [
'feature' => $feature,