extractRequestParams(); $title = Title::newFromText( $params['page'] ); $result = null; if ( !$title ) { $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $params['page'] ) ] ); return; } switch ( $params['paction'] ) { case 'transcludedfrom': $response = $this->requestRestbasePageHtml( $this->getValidRevision( $title, $params['oldid'] ?? null ) ); $doc = DOMUtils::parseHTML( $response['body'] ); $container = $doc->getElementsByTagName( 'body' )->item( 0 ); '@phan-var DOMElement $container'; CommentUtils::unwrapParsoidSections( $container ); $parser = CommentParser::newFromGlobalState( $container ); $comments = $parser->getCommentItems(); $transcludedFrom = []; foreach ( $comments as $comment ) { $from = $comment->getTranscludedFrom(); $transcludedFrom[ $comment->getId() ] = $from; $legacyId = $comment->getLegacyId(); if ( $legacyId ) { $transcludedFrom[ $legacyId ] = $from; } } $result = $transcludedFrom; break; } $this->getResult()->addValue( null, $this->getModuleName(), $result ); } /** * @inheritDoc */ public function getAllowedParams() { return [ 'paction' => [ ParamValidator::PARAM_REQUIRED => true, ParamValidator::PARAM_TYPE => [ 'transcludedfrom', ], ApiBase::PARAM_HELP_MSG => 'apihelp-visualeditoredit-param-paction', ApiBase::PARAM_HELP_MSG_PER_VALUE => [], ], 'page' => [ ParamValidator::PARAM_REQUIRED => true, ApiBase::PARAM_HELP_MSG => 'apihelp-visualeditoredit-param-page', ], 'oldid' => null, ]; } /** * @inheritDoc */ public function needsToken() { return false; } /** * @inheritDoc */ public function isInternal() { return true; } /** * @inheritDoc */ public function isWriteMode() { return false; } }