From 19a7c94a36cf5989b183050eb86f5ae118b811e7 Mon Sep 17 00:00:00 2001 From: "C. Scott Ananian" Date: Fri, 13 Sep 2024 14:41:58 -0400 Subject: Use ParserOutput::getLinkList() internally This replaces the internal uses of the deprecated ParserOutput::get* methods and isolates the ParserOutput internal representation from most of the users. Change-Id: I32df68714ffdf2f0745b974f47bc3ccceef1f41c --- .../search/ParserOutputSearchDataExtractor.php | 35 +++++++++++++--------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'includes/search') diff --git a/includes/search/ParserOutputSearchDataExtractor.php b/includes/search/ParserOutputSearchDataExtractor.php index 4e75487d8c32..4bb0ebea545d 100644 --- a/includes/search/ParserOutputSearchDataExtractor.php +++ b/includes/search/ParserOutputSearchDataExtractor.php @@ -2,8 +2,8 @@ namespace MediaWiki\Search; -use MediaWiki\Category\Category; use MediaWiki\Parser\ParserOutput; +use MediaWiki\Parser\ParserOutputLinkTypes; use MediaWiki\Title\Title; /** @@ -37,9 +37,11 @@ class ParserOutputSearchDataExtractor { public function getCategories( ParserOutput $parserOutput ) { $categories = []; - foreach ( $parserOutput->getCategoryNames() as $key ) { - $name = Category::newFromName( $key )->getName(); - $categories[] = str_replace( '_', ' ', $name ); + foreach ( + $parserOutput->getLinkList( ParserOutputLinkTypes::CATEGORY ) + as [ 'link' => $link ] + ) { + $categories[] = $link->getText(); } return $categories; @@ -65,11 +67,14 @@ class ParserOutputSearchDataExtractor { public function getOutgoingLinks( ParserOutput $parserOutput ) { $outgoingLinks = []; - foreach ( $parserOutput->getLinks() as $linkedNamespace => $namespaceLinks ) { - foreach ( $namespaceLinks as $linkedDbKey => $_ ) { - $outgoingLinks[] = - Title::makeTitle( $linkedNamespace, $linkedDbKey )->getPrefixedDBkey(); - } + foreach ( + $parserOutput->getLinkList( ParserOutputLinkTypes::LOCAL ) + as [ 'link' => $link ] + ) { + // XXX should use a TitleFormatter + // XXX why is this a DBkey when all of the others are text? + $outgoingLinks[] = + Title::newFromLinkTarget( $link )->getPrefixedDBkey(); } return $outgoingLinks; @@ -84,11 +89,13 @@ class ParserOutputSearchDataExtractor { public function getTemplates( ParserOutput $parserOutput ) { $templates = []; - foreach ( $parserOutput->getTemplates() as $tNS => $templatesInNS ) { - foreach ( $templatesInNS as $tDbKey => $_ ) { - $templateTitle = Title::makeTitle( $tNS, $tDbKey ); - $templates[] = $templateTitle->getPrefixedText(); - } + foreach ( + $parserOutput->getLinkList( ParserOutputLinkTypes::TEMPLATE ) + as [ 'link' => $link ] + ) { + // XXX should use a TitleFormatter + $templates[] = + Title::newFromLinkTarget( $link )->getPrefixedText(); } return $templates; -- cgit v1.2.3