aboutsummaryrefslogtreecommitdiffstats
path: root/includes/specials
diff options
context:
space:
mode:
authorTim Starling <tstarling@wikimedia.org>2025-02-17 12:36:00 +1100
committerTim Starling <tstarling@wikimedia.org>2025-02-21 12:01:38 +1100
commit1edccf294ac00b304400738a812358e6da252403 (patch)
tree0f414904640a00b0739fae9a83226c2f640f1eb3 /includes/specials
parentc40e70a6f8368fc6785c35c739748e5e8d83a47d (diff)
downloadmediawikicore-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.php1
-rw-r--r--includes/specials/SpecialRecentChanges.php10
-rw-r--r--includes/specials/SpecialRecentChangesLinked.php6
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,