diff options
author | Tim Starling <tstarling@wikimedia.org> | 2025-02-17 12:36:00 +1100 |
---|---|---|
committer | Tim Starling <tstarling@wikimedia.org> | 2025-02-21 12:01:38 +1100 |
commit | 1edccf294ac00b304400738a812358e6da252403 (patch) | |
tree | 0f414904640a00b0739fae9a83226c2f640f1eb3 /includes/specials | |
parent | c40e70a6f8368fc6785c35c739748e5e8d83a47d (diff) | |
download | mediawikicore-1edccf294ac00b304400738a812358e6da252403.tar.gz mediawikicore-1edccf294ac00b304400738a812358e6da252403.zip |
Split MessageParser out of MessageCache
MessageCache has enough to do without also being a parser. Split a
MessageParser class out of MessageCache and make it a service.
* MessageCache::parseWithPostprocessing() becomes MessageParser::parse()
because every caller wants postprocessing so it makes sense to use the
shorter name for this.
* MessageCache::parse() becomes MessageParser
::parseWithoutPostprocessing(). I changed the return type from
ParserOutput|string to ParserOutput, which is a followup to
I8a1fa84e650d920d07d74722d8059d5afeedec6b. Narrowing the return type
does not break b/c so it is possible to make this change for both
variants.
* In the new methods, a null title is always a convenience alias for a
placeholder title (Special:Badtitle). This reflects the convention in
Parser::setPage(). The old MessageCache::parse() retains its b/c
fallback to $wgTitle. MessageCache::transform() had the potential to
fall back to the title used in the previous call, a fragile mechanism
which I removed without deprecation.
* For consistency, allow a string language in all new methods.
* In EmailNotification, clean up an early attempt at global state
avoidance.
Change-Id: I05ab21508d5f8394189fd41ac6a2254ac0e0d785
Diffstat (limited to 'includes/specials')
-rw-r--r-- | includes/specials/SpecialExpandTemplates.php | 1 | ||||
-rw-r--r-- | includes/specials/SpecialRecentChanges.php | 10 | ||||
-rw-r--r-- | includes/specials/SpecialRecentChangesLinked.php | 6 |
3 files changed, 8 insertions, 9 deletions
diff --git a/includes/specials/SpecialExpandTemplates.php b/includes/specials/SpecialExpandTemplates.php index aadf89286b4e..e7bc4e944776 100644 --- a/includes/specials/SpecialExpandTemplates.php +++ b/includes/specials/SpecialExpandTemplates.php @@ -133,7 +133,6 @@ class SpecialExpandTemplates extends SpecialPage { $rawhtml = MediaWikiServices::getInstance()->getDefaultOutputPipeline() ->run( $pout, $options, [ 'enableSectionEditLinks' => false ] )->getContentHolderText(); if ( $generateRawHtml && $rawhtml !== '' ) { - // @phan-suppress-next-line SecurityCheck-DoubleEscaped Wanted here to display the html $out->addHTML( $this->makeOutput( $rawhtml, 'expand_templates_html_output' ) ); } diff --git a/includes/specials/SpecialRecentChanges.php b/includes/specials/SpecialRecentChanges.php index 3c9544238fc7..e3796c1d849e 100644 --- a/includes/specials/SpecialRecentChanges.php +++ b/includes/specials/SpecialRecentChanges.php @@ -29,6 +29,7 @@ use MediaWiki\ChangeTags\ChangeTagsStore; use MediaWiki\Context\IContextSource; use MediaWiki\Html\FormOptions; use MediaWiki\Html\Html; +use MediaWiki\Language\MessageParser; use MediaWiki\MainConfigNames; use MediaWiki\MediaWikiServices; use MediaWiki\SpecialPage\ChangesListSpecialPage; @@ -39,7 +40,6 @@ use MediaWiki\User\UserIdentityUtils; use MediaWiki\Utils\MWTimestamp; use MediaWiki\Watchlist\WatchedItemStoreInterface; use MediaWiki\Xml\Xml; -use MessageCache; use OOUI\ButtonWidget; use OOUI\HtmlSnippet; use RecentChange; @@ -59,7 +59,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { private $watchlistFilterGroupDefinition; private WatchedItemStoreInterface $watchedItemStore; - private MessageCache $messageCache; + private MessageParser $messageParser; private UserOptionsLookup $userOptionsLookup; /** @var int */ @@ -68,7 +68,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { public function __construct( ?WatchedItemStoreInterface $watchedItemStore = null, - ?MessageCache $messageCache = null, + ?MessageParser $messageParser = null, ?UserOptionsLookup $userOptionsLookup = null, ?ChangeTagsStore $changeTagsStore = null, ?UserIdentityUtils $userIdentityUtils = null, @@ -84,7 +84,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $tempUserConfig ?? $services->getTempUserConfig() ); $this->watchedItemStore = $watchedItemStore ?? $services->getWatchedItemStore(); - $this->messageCache = $messageCache ?? $services->getMessageCache(); + $this->messageParser = $messageParser ?? $services->getMessageParser(); $this->userOptionsLookup = $userOptionsLookup ?? $services->getUserOptionsLookup(); $this->changeTagsStore = $changeTagsStore ?? $services->getChangeTagsStore(); @@ -724,7 +724,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { // Parse the message in this weird ugly way to preserve the ability to include interlanguage // links in it (T172461). In the future when T66969 is resolved, perhaps we can just use // $message->parse() instead. This code is copied from Message::parseText(). - $parserOutput = $this->messageCache->parseWithPostprocessing( + $parserOutput = $this->messageParser->parse( $message->plain(), $this->getPageTitle(), /*linestart*/ true, diff --git a/includes/specials/SpecialRecentChangesLinked.php b/includes/specials/SpecialRecentChangesLinked.php index bc0a90e9ad79..693b738ec92c 100644 --- a/includes/specials/SpecialRecentChangesLinked.php +++ b/includes/specials/SpecialRecentChangesLinked.php @@ -23,6 +23,7 @@ namespace MediaWiki\Specials; use MediaWiki\ChangeTags\ChangeTagsStore; use MediaWiki\Html\FormOptions; use MediaWiki\Html\Html; +use MediaWiki\Language\MessageParser; use MediaWiki\MainConfigNames; use MediaWiki\Title\Title; use MediaWiki\User\Options\UserOptionsLookup; @@ -30,7 +31,6 @@ use MediaWiki\User\TempUser\TempUserConfig; use MediaWiki\User\UserIdentityUtils; use MediaWiki\Watchlist\WatchedItemStoreInterface; use MediaWiki\Xml\Xml; -use MessageCache; use RecentChange; use SearchEngineFactory; use Wikimedia\Rdbms\SelectQueryBuilder; @@ -51,7 +51,7 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges { public function __construct( WatchedItemStoreInterface $watchedItemStore, - MessageCache $messageCache, + MessageParser $messageParser, UserOptionsLookup $userOptionsLookup, SearchEngineFactory $searchEngineFactory, ChangeTagsStore $changeTagsStore, @@ -60,7 +60,7 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges { ) { parent::__construct( $watchedItemStore, - $messageCache, + $messageParser, $userOptionsLookup, $changeTagsStore, $userIdentityUtils, |