X-Git-Url: https://git.heureux-cyclage.org/index.php?a=blobdiff_plain;f=includes%2Fapi%2FApiErrorFormatter.php;h=5484a78efe0359840c906b504fa27b2a3f46ee04;hb=9def51e9d63bf0031bb6ef94ee5ab8b8846bd1e4;hp=814004a67362e9aab242766984db2ceb2422b5da;hpb=c3bdadc7a6d2634462a226e928af0df1d3034540;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiErrorFormatter.php b/includes/api/ApiErrorFormatter.php index 814004a673..5484a78efe 100644 --- a/includes/api/ApiErrorFormatter.php +++ b/includes/api/ApiErrorFormatter.php @@ -176,7 +176,8 @@ class ApiErrorFormatter { } else { $msg = new RawMessage( '$1' ); if ( !isset( $options['code'] ) ) { - $options['code'] = 'internal_api_error_' . get_class( $exception ); + $class = preg_replace( '#^Wikimedia\\\Rdbms\\\#', '', get_class( $exception ) ); + $options['code'] = 'internal_api_error_' . $class; } } $params = [ wfEscapeWikiText( $exception->getMessage() ) ]; @@ -414,12 +415,17 @@ class ApiErrorFormatter_BackCompat extends ApiErrorFormatter { if ( $tag === 'error' ) { // In BC mode, only one error - $value = [ - 'code' => $msg->getApiCode(), - 'info' => $value, - ] + $msg->getApiData(); - $this->result->addValue( null, 'error', $value, - ApiResult::OVERRIDE | ApiResult::ADD_ON_TOP | ApiResult::NO_SIZE_CHECK ); + $existingError = $this->result->getResultData( [ 'error' ] ); + if ( !is_array( $existingError ) || + !isset( $existingError['code'] ) || !isset( $existingError['info'] ) + ) { + $value = [ + 'code' => $msg->getApiCode(), + 'info' => $value, + ] + $msg->getApiData(); + $this->result->addValue( null, 'error', $value, + ApiResult::OVERRIDE | ApiResult::ADD_ON_TOP | ApiResult::NO_SIZE_CHECK ); + } } else { if ( $modulePath === null ) { $moduleName = 'unknown';