Merge "Update PsySh from 0.8.5 to 0.8.11"
[lhc/web/wiklou.git] / includes / api / ApiMain.php
index f6dd524..aea441b 100644 (file)
@@ -1054,13 +1054,14 @@ class ApiMain extends ApiBase {
                        if ( ( $e instanceof DBQueryError ) && !$config->get( 'ShowSQLErrors' ) ) {
                                $params = [ 'apierror-databaseerror', WebRequest::getRequestId() ];
                        } else {
-                               $params = [
-                                       'apierror-exceptioncaught',
-                                       WebRequest::getRequestId(),
-                                       $e instanceof ILocalizedException
-                                               ? $e->getMessageObject()
-                                               : wfEscapeWikiText( $e->getMessage() )
-                               ];
+                               if ( $e instanceof ILocalizedException ) {
+                                       $msg = $e->getMessageObject();
+                               } elseif ( $e instanceof MessageSpecifier ) {
+                                       $msg = Message::newFromSpecifier( $e );
+                               } else {
+                                       $msg = wfEscapeWikiText( $e->getMessage() );
+                               }
+                               $params = [ 'apierror-exceptioncaught', WebRequest::getRequestId(), $msg ];
                        }
                        $messages[] = ApiMessage::create( $params, $code );
                }
@@ -1870,7 +1871,7 @@ class ApiMain extends ApiBase {
                ];
        }
 
-       /** @see ApiBase::getExamplesMessages() */
+       /** @inheritDoc */
        protected function getExamplesMessages() {
                return [
                        'action=help'
@@ -1933,14 +1934,18 @@ class ApiMain extends ApiBase {
 
                        $id = Sanitizer::escapeIdForAttribute( 'main/datatypes', Sanitizer::ID_PRIMARY );
                        $idFallback = Sanitizer::escapeIdForAttribute( 'main/datatypes', Sanitizer::ID_FALLBACK );
-
-                       $help['datatypes'] .= Linker::makeHeadline( min( 6, $level ),
+                       $headline = Linker::makeHeadline( min( 6, $level ),
                                ' class="apihelp-header"',
                                $id,
                                $header,
                                '',
                                $idFallback
                        );
+                       // Ensure we have a sane anchor
+                       if ( $id !== 'main/datatypes' && $idFallback !== 'main/datatypes' ) {
+                               $headline = '<div id="main/datatypes"></div>' . $headline;
+                       }
+                       $help['datatypes'] .= $headline;
                        $help['datatypes'] .= $this->msg( 'api-help-datatypes' )->parseAsBlock();
                        if ( !isset( $tocData['main/datatypes'] ) ) {
                                $tocnumber[$level]++;
@@ -1957,13 +1962,18 @@ class ApiMain extends ApiBase {
                        $header = $this->msg( 'api-credits-header' )->parse();
                        $id = Sanitizer::escapeIdForAttribute( 'main/credits', Sanitizer::ID_PRIMARY );
                        $idFallback = Sanitizer::escapeIdForAttribute( 'main/credits', Sanitizer::ID_FALLBACK );
-                       $help['credits'] .= Linker::makeHeadline( min( 6, $level ),
+                       $headline = Linker::makeHeadline( min( 6, $level ),
                                ' class="apihelp-header"',
                                $id,
                                $header,
                                '',
                                $idFallback
                        );
+                       // Ensure we have a sane anchor
+                       if ( $id !== 'main/credits' && $idFallback !== 'main/credits' ) {
+                               $headline = '<div id="main/credits"></div>' . $headline;
+                       }
+                       $help['credits'] .= $headline;
                        $help['credits'] .= $this->msg( 'api-credits' )->useDatabase( false )->parseAsBlock();
                        if ( !isset( $tocData['main/credits'] ) ) {
                                $tocnumber[$level]++;