Replace internal Hooks::runner
The Hooks class contains deprecated functions and the whole class is going to get removed, so remove the convenience function and inline the code. Bug: T335536 Change-Id: I8ef3468a64a0199996f26ef293543fcacdf2797f
This commit is contained in:
parent
9878c4c67a
commit
e04d3a28f6
64 changed files with 321 additions and 192 deletions
4
api.php
4
api.php
|
|
@ -34,7 +34,9 @@
|
|||
* @ingroup API
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Logger\LegacyLogger;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Title\Title;
|
||||
|
||||
// So extensions (and other code) can check whether they're running in API mode
|
||||
|
|
@ -76,7 +78,7 @@ function wfApiMain() {
|
|||
$processor = new ApiMain( RequestContext::getMain(), true );
|
||||
|
||||
// Last chance hook before executing the API
|
||||
Hooks::runner()->onApiBeforeMain( $processor );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onApiBeforeMain( $processor );
|
||||
if ( !$processor instanceof ApiMain ) {
|
||||
throw new LogicException( 'ApiBeforeMain hook set $processor to a non-ApiMain class' );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
* @ingroup entrypoint
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\TemplateParser;
|
||||
use MediaWiki\Title\Title;
|
||||
|
||||
|
|
@ -149,6 +150,7 @@ function wfImageAuthMain() {
|
|||
|
||||
$title = Title::makeTitleSafe( NS_FILE, $name );
|
||||
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
if ( !$publicWiki ) {
|
||||
// For private wikis, run extra auth checks and set cache control headers
|
||||
$headers['Cache-Control'] = 'private';
|
||||
|
|
@ -162,7 +164,7 @@ function wfImageAuthMain() {
|
|||
// Run hook for extension authorization plugins
|
||||
/** @var array $result */
|
||||
$result = null;
|
||||
if ( !Hooks::runner()->onImgAuthBeforeStream( $title, $path, $name, $result ) ) {
|
||||
if ( !$hookRunner->onImgAuthBeforeStream( $title, $path, $name, $result ) ) {
|
||||
wfForbidden( $result[0], $result[1], array_slice( $result, 2 ) );
|
||||
return;
|
||||
}
|
||||
|
|
@ -188,7 +190,7 @@ function wfImageAuthMain() {
|
|||
}
|
||||
|
||||
// Allow modification of headers before streaming a file
|
||||
Hooks::runner()->onImgAuthModifyHeaders( $title->getTitleValue(), $headers );
|
||||
$hookRunner->onImgAuthModifyHeaders( $title->getTitleValue(), $headers );
|
||||
|
||||
// Stream the requested file
|
||||
[ $headers, $options ] = HTTPFileStreamer::preprocessHeaders( $headers );
|
||||
|
|
|
|||
|
|
@ -95,9 +95,10 @@ class GitInfo {
|
|||
*/
|
||||
public function __construct( $repoDir, $usePrecomputed = true ) {
|
||||
$this->repoDir = $repoDir;
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$this->options = new ServiceOptions(
|
||||
self::CONSTRUCTOR_OPTIONS,
|
||||
MediaWikiServices::getInstance()->getMainConfig()
|
||||
$services->getMainConfig()
|
||||
);
|
||||
$this->options->assertRequiredOptions( self::CONSTRUCTOR_OPTIONS );
|
||||
// $this->options must be set before using getCacheFilePath()
|
||||
|
|
@ -106,7 +107,7 @@ class GitInfo {
|
|||
$this->logger->debug(
|
||||
"Candidate cacheFile={$this->cacheFile} for {$repoDir}"
|
||||
);
|
||||
$this->hookRunner = Hooks::runner();
|
||||
$this->hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
if ( $usePrecomputed &&
|
||||
$this->cacheFile !== null &&
|
||||
is_readable( $this->cacheFile )
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\ProcOpenError;
|
||||
|
|
@ -1682,7 +1683,8 @@ function wfShellWikiCmd( $script, array $parameters = [], array $options = [] )
|
|||
global $wgPhpCli;
|
||||
// Give site config file a chance to run the script in a wrapper.
|
||||
// The caller may likely want to call wfBasename() on $script.
|
||||
Hooks::runner()->onWfShellWikiCmd( $script, $parameters, $options );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onWfShellWikiCmd( $script, $parameters, $options );
|
||||
$cmd = [ $options['php'] ?? $wgPhpCli ];
|
||||
if ( isset( $options['wrapper'] ) ) {
|
||||
$cmd[] = $options['wrapper'];
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
* @author Tyler Romeo, 2012
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Language\RawMessage;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -100,7 +101,7 @@ class MWTimestamp extends ConvertibleTimestamp {
|
|||
$diff = $this->diff( $relativeTo );
|
||||
|
||||
$user = User::newFromIdentity( $user ); // For compatibility with the hook signature
|
||||
if ( Hooks::runner()->onGetRelativeTimestamp(
|
||||
if ( ( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onGetRelativeTimestamp(
|
||||
$ts, $diff, $this, $relativeTo, $user, $lang )
|
||||
) {
|
||||
$seconds = ( ( ( $diff->days * 24 + $diff->h ) * 60 + $diff->i ) * 60 + $diff->s );
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@
|
|||
|
||||
namespace MediaWiki\Request;
|
||||
|
||||
use Hooks;
|
||||
use HttpStatus;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use RuntimeException;
|
||||
|
|
@ -145,7 +145,8 @@ class WebResponse {
|
|||
* @since 1.22 Replaced $prefix, $domain, and $forceSecure with $options
|
||||
*/
|
||||
public function setCookie( $name, $value, $expire = 0, $options = [] ) {
|
||||
$mainConfig = MediaWikiServices::getInstance()->getMainConfig();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$mainConfig = $services->getMainConfig();
|
||||
$cookiePath = $mainConfig->get( MainConfigNames::CookiePath );
|
||||
$cookiePrefix = $mainConfig->get( MainConfigNames::CookiePrefix );
|
||||
$cookieDomain = $mainConfig->get( MainConfigNames::CookieDomain );
|
||||
|
|
@ -200,7 +201,8 @@ class WebResponse {
|
|||
return;
|
||||
}
|
||||
|
||||
if ( !Hooks::runner()->onWebResponseSetCookie( $name, $value, $expire, $options ) ) {
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
if ( !$hookRunner->onWebResponseSetCookie( $name, $value, $expire, $options ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ use DeferredUpdates;
|
|||
use Exception;
|
||||
use ExtensionRegistry;
|
||||
use HashBagOStuff;
|
||||
use Hooks;
|
||||
use HttpStatus;
|
||||
use InvalidArgumentException;
|
||||
use Less_Environment;
|
||||
|
|
@ -2027,13 +2026,14 @@ MESSAGE;
|
|||
public static function getSiteConfigSettings(
|
||||
Context $context, Config $conf
|
||||
): array {
|
||||
$services = MediaWikiServices::getInstance();
|
||||
// Namespace related preparation
|
||||
// - wgNamespaceIds: Key-value pairs of all localized, canonical and aliases for namespaces.
|
||||
// - wgCaseSensitiveNamespaces: Array of namespaces that are case-sensitive.
|
||||
$contLang = MediaWikiServices::getInstance()->getContentLanguage();
|
||||
$contLang = $services->getContentLanguage();
|
||||
$namespaceIds = $contLang->getNamespaceIds();
|
||||
$caseSensitiveNamespaces = [];
|
||||
$nsInfo = MediaWikiServices::getInstance()->getNamespaceInfo();
|
||||
$nsInfo = $services->getNamespaceInfo();
|
||||
foreach ( $nsInfo->getCanonicalNamespaces() as $index => $name ) {
|
||||
$namespaceIds[$contLang->lc( $name )] = $index;
|
||||
if ( !$nsInfo->isCapitalized( $index ) ) {
|
||||
|
|
@ -2089,7 +2089,8 @@ MESSAGE;
|
|||
'wgIllegalFileChars' => Title::convertByteClassToUnicodeClass( $illegalFileChars ),
|
||||
];
|
||||
|
||||
Hooks::runner()->onResourceLoaderGetConfigVars( $vars, $skin, $conf );
|
||||
( new \MediaWiki\HookContainer\HookRunner( $services->getHookContainer() ) )
|
||||
->onResourceLoaderGetConfigVars( $vars, $skin, $conf );
|
||||
|
||||
return $vars;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
|
||||
// phpcs:disable MediaWiki.Usage.DeprecatedGlobalVariables
|
||||
use MediaWiki\HookContainer\FauxGlobalHookArray;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MainConfigSchema;
|
||||
|
|
@ -437,7 +438,7 @@ if ( $wgRequest->getCookie( 'UseDC', '' ) === 'master' ) {
|
|||
} )();
|
||||
|
||||
// Most of the config is out, some might want to run hooks here.
|
||||
Hooks::runner()->onSetupAfterCache();
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onSetupAfterCache();
|
||||
|
||||
// Now that variant lists may be available, parse any action paths and article paths
|
||||
// as query parameters.
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@
|
|||
|
||||
namespace MediaWiki\Block;
|
||||
|
||||
use Hooks;
|
||||
use InvalidArgumentException;
|
||||
use MediaWiki\Block\Restriction\ActionRestriction;
|
||||
use MediaWiki\Block\Restriction\NamespaceRestriction;
|
||||
use MediaWiki\Block\Restriction\PageRestriction;
|
||||
use MediaWiki\Block\Restriction\Restriction;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -577,8 +577,9 @@ class DatabaseBlock extends AbstractBlock {
|
|||
return false;
|
||||
}
|
||||
|
||||
$services = MediaWikiServices::getInstance();
|
||||
# Allow hooks to cancel the autoblock.
|
||||
if ( !Hooks::runner()->onAbortAutoblock( $autoblockIP, $this ) ) {
|
||||
if ( !( new HookRunner( $services->getHookContainer() ) )->onAbortAutoblock( $autoblockIP, $this ) ) {
|
||||
wfDebug( "Autoblock aborted by hook." );
|
||||
return false;
|
||||
}
|
||||
|
|
@ -637,8 +638,7 @@ class DatabaseBlock extends AbstractBlock {
|
|||
}
|
||||
|
||||
# Insert the block...
|
||||
$status = MediaWikiServices::getInstance()
|
||||
->getDatabaseBlockStoreFactory()
|
||||
$status = $services->getDatabaseBlockStoreFactory()
|
||||
->getDatabaseBlockStore( $this->getWikiId() )
|
||||
->insertBlock( $autoblock );
|
||||
return $status
|
||||
|
|
|
|||
11
includes/cache/HTMLFileCache.php
vendored
11
includes/cache/HTMLFileCache.php
vendored
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
|
||||
use MediaWiki\Cache\CacheKeyHelper;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Page\PageIdentity;
|
||||
|
|
@ -93,7 +94,8 @@ class HTMLFileCache extends FileCacheBase {
|
|||
* @return bool
|
||||
*/
|
||||
public static function useFileCache( IContextSource $context, $mode = self::MODE_NORMAL ) {
|
||||
$config = MediaWikiServices::getInstance()->getMainConfig();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$config = $services->getMainConfig();
|
||||
|
||||
if ( !$config->get( MainConfigNames::UseFileCache ) && $mode !== self::MODE_REBUILD ) {
|
||||
return false;
|
||||
|
|
@ -125,18 +127,17 @@ class HTMLFileCache extends FileCacheBase {
|
|||
|
||||
// Check that there are no other sources of variation
|
||||
if ( $user->isRegistered() ||
|
||||
!$ulang->equals( MediaWikiServices::getInstance()->getContentLanguage() ) ) {
|
||||
!$ulang->equals( $services->getContentLanguage() ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$userHasNewMessages = MediaWikiServices::getInstance()
|
||||
->getTalkPageNotificationManager()->userHasNewMessages( $user );
|
||||
$userHasNewMessages = $services->getTalkPageNotificationManager()->userHasNewMessages( $user );
|
||||
if ( ( $mode === self::MODE_NORMAL ) && $userHasNewMessages ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Allow extensions to disable caching
|
||||
return Hooks::runner()->onHTMLFileCache__useFileCache( $context );
|
||||
return ( new HookRunner( $services->getHookContainer() ) )->onHTMLFileCache__useFileCache( $context );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
*/
|
||||
|
||||
use MediaWiki\CommentFormatter\RowCommentFormatter;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\HookContainer\ProtectedHookAccessorTrait;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Linker\Linker;
|
||||
|
|
@ -102,9 +103,10 @@ class ChangesList extends ContextSource {
|
|||
public static function newFromContext( IContextSource $context, array $groups = [] ) {
|
||||
$user = $context->getUser();
|
||||
$sk = $context->getSkin();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$list = null;
|
||||
if ( Hooks::runner()->onFetchChangesList( $user, $sk, $list, $groups ) ) {
|
||||
$userOptionsLookup = MediaWikiServices::getInstance()->getUserOptionsLookup();
|
||||
if ( ( new HookRunner( $services->getHookContainer() ) )->onFetchChangesList( $user, $sk, $list, $groups ) ) {
|
||||
$userOptionsLookup = $services->getUserOptionsLookup();
|
||||
$new = $context->getRequest()->getBool(
|
||||
'enhanced',
|
||||
$userOptionsLookup->getBoolOption( $user, 'usenewrc' )
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
use MediaWiki\ChangeTags\Taggable;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Page\PageIdentity;
|
||||
|
|
@ -467,7 +468,8 @@ class RecentChange implements Taggable {
|
|||
$this->mAttribs['rc_id'] = $dbw->insertId();
|
||||
|
||||
# Notify extensions
|
||||
Hooks::runner()->onRecentChange_save( $this );
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
$hookRunner->onRecentChange_save( $this );
|
||||
|
||||
// Apply revert tags (if needed)
|
||||
if ( $this->editResult !== null && count( $this->editResult->getRevertTags() ) ) {
|
||||
|
|
@ -509,7 +511,7 @@ class RecentChange implements Taggable {
|
|||
// Never send an RC notification email about categorization changes
|
||||
if (
|
||||
$title &&
|
||||
Hooks::runner()->onAbortEmailNotification( $editor, $title, $this ) &&
|
||||
$hookRunner->onAbortEmailNotification( $editor, $title, $this ) &&
|
||||
$this->mAttribs['rc_type'] != RC_CATEGORIZE
|
||||
) {
|
||||
// @FIXME: This would be better as an extension hook
|
||||
|
|
@ -623,7 +625,8 @@ class RecentChange implements Taggable {
|
|||
wfWarn( __METHOD__ . ' with $auto = true' );
|
||||
return [];
|
||||
}
|
||||
$mainConfig = MediaWikiServices::getInstance()->getMainConfig();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$mainConfig = $services->getMainConfig();
|
||||
$useRCPatrol = $mainConfig->get( MainConfigNames::UseRCPatrol );
|
||||
$useNPPatrol = $mainConfig->get( MainConfigNames::UseNPPatrol );
|
||||
$useFilePatrol = $mainConfig->get( MainConfigNames::UseFilePatrol );
|
||||
|
|
@ -643,8 +646,9 @@ class RecentChange implements Taggable {
|
|||
$status->fatal( 'rcpatroldisabled' );
|
||||
}
|
||||
$performer->authorizeWrite( 'patrol', $this->getTitle(), $status );
|
||||
$user = MediaWikiServices::getInstance()->getUserFactory()->newFromAuthority( $performer );
|
||||
if ( !Hooks::runner()->onMarkPatrolled(
|
||||
$user = $services->getUserFactory()->newFromAuthority( $performer );
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
if ( !$hookRunner->onMarkPatrolled(
|
||||
$this->getAttribute( 'rc_id' ), $user, false, false, $tags )
|
||||
) {
|
||||
$status->fatal( 'hookaborted' );
|
||||
|
|
@ -667,7 +671,7 @@ class RecentChange implements Taggable {
|
|||
// Log this patrol event
|
||||
PatrolLog::record( $this, false, $performer->getUser(), $tags );
|
||||
|
||||
Hooks::runner()->onMarkPatrolledComplete(
|
||||
$hookRunner->onMarkPatrolledComplete(
|
||||
$this->getAttribute( 'rc_id' ), $user, false, false );
|
||||
|
||||
return [];
|
||||
|
|
|
|||
|
|
@ -536,9 +536,10 @@ class ChangeTags {
|
|||
}
|
||||
}
|
||||
|
||||
$userObj = $user ? MediaWikiServices::getInstance()->getUserFactory()->newFromUserIdentity( $user ) : null;
|
||||
Hooks::runner()->onChangeTagsAfterUpdateTags( $tagsToAdd, $tagsToRemove, $prevTags,
|
||||
$rc_id, $rev_id, $log_id, $params, $rc, $userObj );
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$userObj = $user ? $services->getUserFactory()->newFromUserIdentity( $user ) : null;
|
||||
( new HookRunner( $services->getHookContainer() ) )->onChangeTagsAfterUpdateTags(
|
||||
$tagsToAdd, $tagsToRemove, $prevTags, $rc_id, $rev_id, $log_id, $params, $rc, $userObj );
|
||||
|
||||
return [ $tagsToAdd, $tagsToRemove, $prevTags ];
|
||||
}
|
||||
|
|
@ -640,6 +641,7 @@ class ChangeTags {
|
|||
$checkBlock = true
|
||||
) {
|
||||
$user = null;
|
||||
$services = MediaWikiServices::getInstance();
|
||||
if ( $performer !== null ) {
|
||||
if ( !$performer->isAllowed( 'applychangetags' ) ) {
|
||||
return Status::newFatal( 'tags-apply-no-permission' );
|
||||
|
|
@ -653,12 +655,12 @@ class ChangeTags {
|
|||
}
|
||||
|
||||
// ChangeTagsAllowedAdd hook still needs a full User object
|
||||
$user = MediaWikiServices::getInstance()->getUserFactory()->newFromAuthority( $performer );
|
||||
$user = $services->getUserFactory()->newFromAuthority( $performer );
|
||||
}
|
||||
|
||||
// to be applied, a tag has to be explicitly defined
|
||||
$allowedTags = self::listExplicitlyDefinedTags();
|
||||
Hooks::runner()->onChangeTagsAllowedAdd( $allowedTags, $tags, $user );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onChangeTagsAllowedAdd( $allowedTags, $tags, $user );
|
||||
$disallowedTags = array_diff( $tags, $allowedTags );
|
||||
if ( $disallowedTags ) {
|
||||
return self::restrictedTagError( 'tags-apply-not-allowed-one',
|
||||
|
|
@ -1404,6 +1406,7 @@ class ChangeTags {
|
|||
*/
|
||||
public static function canCreateTag( $tag, Authority $performer = null ) {
|
||||
$user = null;
|
||||
$services = MediaWikiServices::getInstance();
|
||||
if ( $performer !== null ) {
|
||||
if ( !$performer->isAllowed( 'managechangetags' ) ) {
|
||||
return Status::newFatal( 'tags-manage-no-permission' );
|
||||
|
|
@ -1415,7 +1418,7 @@ class ChangeTags {
|
|||
);
|
||||
}
|
||||
// ChangeTagCanCreate hook still needs a full User object
|
||||
$user = MediaWikiServices::getInstance()->getUserFactory()->newFromAuthority( $performer );
|
||||
$user = $services->getUserFactory()->newFromAuthority( $performer );
|
||||
}
|
||||
|
||||
$status = self::isTagNameValid( $tag );
|
||||
|
|
@ -1431,7 +1434,7 @@ class ChangeTags {
|
|||
|
||||
// check with hooks
|
||||
$canCreateResult = Status::newGood();
|
||||
Hooks::runner()->onChangeTagCanCreate( $tag, $user, $canCreateResult );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onChangeTagCanCreate( $tag, $user, $canCreateResult );
|
||||
return $canCreateResult;
|
||||
}
|
||||
|
||||
|
|
@ -1487,11 +1490,12 @@ class ChangeTags {
|
|||
* @since 1.25
|
||||
*/
|
||||
public static function deleteTagEverywhere( $tag ) {
|
||||
$dbw = MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->getPrimaryDatabase();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$dbw = $services->getDBLoadBalancerFactory()->getPrimaryDatabase();
|
||||
$dbw->startAtomic( __METHOD__ );
|
||||
|
||||
// fetch tag id, this must be done before calling undefineTag(), see T225564
|
||||
$tagId = MediaWikiServices::getInstance()->getChangeTagDefStore()->getId( $tag );
|
||||
$tagId = $services->getChangeTagDefStore()->getId( $tag );
|
||||
|
||||
// set ctd_user_defined = 0
|
||||
self::undefineTag( $tag );
|
||||
|
|
@ -1503,7 +1507,7 @@ class ChangeTags {
|
|||
|
||||
// give extensions a chance
|
||||
$status = Status::newGood();
|
||||
Hooks::runner()->onChangeTagAfterDelete( $tag, $status );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onChangeTagAfterDelete( $tag, $status );
|
||||
// let's not allow error results, as the actual tag deletion succeeded
|
||||
if ( !$status->isOK() ) {
|
||||
wfDebug( 'ChangeTagAfterDelete error condition downgraded to warning' );
|
||||
|
|
@ -1531,6 +1535,7 @@ class ChangeTags {
|
|||
public static function canDeleteTag( $tag, Authority $performer = null, int $flags = 0 ) {
|
||||
$tagUsage = self::tagUsageStatistics();
|
||||
$user = null;
|
||||
$services = MediaWikiServices::getInstance();
|
||||
if ( $performer !== null ) {
|
||||
if ( !$performer->isAllowed( 'deletechangetags' ) ) {
|
||||
return Status::newFatal( 'tags-delete-no-permission' );
|
||||
|
|
@ -1542,7 +1547,7 @@ class ChangeTags {
|
|||
);
|
||||
}
|
||||
// ChangeTagCanDelete hook still needs a full User object
|
||||
$user = MediaWikiServices::getInstance()->getUserFactory()->newFromAuthority( $performer );
|
||||
$user = $services->getUserFactory()->newFromAuthority( $performer );
|
||||
}
|
||||
|
||||
if ( !isset( $tagUsage[$tag] ) && !in_array( $tag, self::listDefinedTags() ) ) {
|
||||
|
|
@ -1566,7 +1571,7 @@ class ChangeTags {
|
|||
$status = Status::newGood();
|
||||
}
|
||||
|
||||
Hooks::runner()->onChangeTagCanDelete( $tag, $user, $status );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onChangeTagCanDelete( $tag, $user, $status );
|
||||
return $status;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ use MediaWiki\Content\Renderer\ContentParseParams;
|
|||
use MediaWiki\Content\Transform\PreloadTransformParamsValue;
|
||||
use MediaWiki\Content\Transform\PreSaveTransformParamsValue;
|
||||
use MediaWiki\Content\ValidationParams;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Parser\MagicWord;
|
||||
use MediaWiki\Title\Title;
|
||||
|
|
@ -531,7 +532,8 @@ abstract class AbstractContent implements Content {
|
|||
$lossy = ( $lossy === 'lossy' ); // string flag, convert to boolean for convenience
|
||||
$result = false;
|
||||
|
||||
Hooks::runner()->onConvertContent( $this, $toModel, $lossy, $result );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onConvertContent( $this, $toModel, $lossy, $result );
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
|
@ -580,7 +582,8 @@ abstract class AbstractContent implements Content {
|
|||
$po = new ParserOutput();
|
||||
$options->registerWatcher( [ $po, 'recordOption' ] );
|
||||
|
||||
if ( Hooks::runner()->onContentGetParserOutput(
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
if ( $hookRunner->onContentGetParserOutput(
|
||||
$this, $title, $revId, $options, $generateHtml, $po )
|
||||
) {
|
||||
// Save and restore the old value, just in case something is reusing
|
||||
|
|
@ -591,7 +594,7 @@ abstract class AbstractContent implements Content {
|
|||
$options->setRedirectTarget( $oldRedir );
|
||||
}
|
||||
|
||||
Hooks::runner()->onContentAlterParserOutput( $this, $title, $po );
|
||||
$hookRunner->onContentAlterParserOutput( $this, $title, $po );
|
||||
$options->registerWatcher( null );
|
||||
|
||||
return $po;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ use MediaWiki\Content\Renderer\ContentParseParams;
|
|||
use MediaWiki\Content\Transform\PreloadTransformParams;
|
||||
use MediaWiki\Content\Transform\PreSaveTransformParams;
|
||||
use MediaWiki\Content\ValidationParams;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\HookContainer\ProtectedHookAccessorTrait;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MainConfigNames;
|
||||
|
|
@ -1735,9 +1736,10 @@ abstract class ContentHandler {
|
|||
$scopedCallback = $parserOptions->setupFakeRevision( $title, $content, $parserOptions->getUserIdentity() );
|
||||
}
|
||||
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
$po = new ParserOutput();
|
||||
$parserOptions->registerWatcher( [ $po, 'recordOption' ] );
|
||||
if ( Hooks::runner()->onContentGetParserOutput(
|
||||
if ( $hookRunner->onContentGetParserOutput(
|
||||
// FIXME $cpoParams->getRevId() may be null here?
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgumentNullable
|
||||
$content, $title, $cpoParams->getRevId(), $parserOptions, $cpoParams->getGenerateHtml(), $po )
|
||||
|
|
@ -1761,7 +1763,7 @@ abstract class ContentHandler {
|
|||
$parserOptions->setRedirectTarget( $oldRedir );
|
||||
}
|
||||
|
||||
Hooks::runner()->onContentAlterParserOutput( $content, $title, $po );
|
||||
$hookRunner->onContentAlterParserOutput( $content, $title, $po );
|
||||
$parserOptions->registerWatcher( null );
|
||||
if ( isset( $scopedCallback ) ) {
|
||||
ScopedCallback::consume( $scopedCallback );
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
* @author Daniel Kinzler
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Parser\MagicWord;
|
||||
|
|
@ -106,7 +107,8 @@ class WikitextContent extends TextContent {
|
|||
# Inserting a new section
|
||||
$subject = strval( $sectionTitle ) !== '' ? wfMessage( 'newsectionheaderdefaultlevel' )
|
||||
->plaintextParams( $sectionTitle )->inContentLanguage()->text() . "\n\n" : '';
|
||||
if ( Hooks::runner()->onPlaceNewSection( $this, $oldtext, $subject, $text ) ) {
|
||||
$hookRunner = ( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) );
|
||||
if ( $hookRunner->onPlaceNewSection( $this, $oldtext, $subject, $text ) ) {
|
||||
$text = strlen( trim( $oldtext ) ) > 0
|
||||
? "{$oldtext}\n\n{$subject}{$text}"
|
||||
: "{$subject}{$text}";
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -434,12 +435,12 @@ class RequestContext implements IContextSource, MutableContext {
|
|||
try {
|
||||
$request = $this->getRequest();
|
||||
$user = $this->getUser();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
|
||||
// Optimisation: Avoid slow getVal(), this isn't user-generated content.
|
||||
$code = $request->getRawVal( 'uselang', 'user' );
|
||||
if ( $code === 'user' ) {
|
||||
$userOptionsLookup = MediaWikiServices::getInstance()
|
||||
->getUserOptionsLookup();
|
||||
$userOptionsLookup = $services->getUserOptionsLookup();
|
||||
$code = $userOptionsLookup->getOption( $user, 'language' );
|
||||
}
|
||||
|
||||
|
|
@ -456,12 +457,12 @@ class RequestContext implements IContextSource, MutableContext {
|
|||
// NFC form given this will not convert to normalised form.
|
||||
$code = self::sanitizeLangCode( $code );
|
||||
|
||||
Hooks::runner()->onUserGetLanguageObject( $user, $code, $this );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onUserGetLanguageObject( $user, $code, $this );
|
||||
|
||||
if ( $code === $this->getConfig()->get( MainConfigNames::LanguageCode ) ) {
|
||||
$this->lang = MediaWikiServices::getInstance()->getContentLanguage();
|
||||
$this->lang = $services->getContentLanguage();
|
||||
} else {
|
||||
$obj = MediaWikiServices::getInstance()->getLanguageFactory()
|
||||
$obj = $services->getLanguageFactory()
|
||||
->getLanguage( $code );
|
||||
$this->lang = $obj;
|
||||
}
|
||||
|
|
@ -487,8 +488,9 @@ class RequestContext implements IContextSource, MutableContext {
|
|||
public function getSkin() {
|
||||
if ( $this->skin === null ) {
|
||||
$skin = null;
|
||||
Hooks::runner()->onRequestContextCreateSkin( $this, $skin );
|
||||
$factory = MediaWikiServices::getInstance()->getSkinFactory();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
( new HookRunner( $services->getHookContainer() ) )->onRequestContextCreateSkin( $this, $skin );
|
||||
$factory = $services->getSkinFactory();
|
||||
|
||||
if ( $skin instanceof Skin ) {
|
||||
// The hook provided a skin object
|
||||
|
|
@ -502,8 +504,7 @@ class RequestContext implements IContextSource, MutableContext {
|
|||
// No hook override, go through normal processing
|
||||
if ( !in_array( 'skin',
|
||||
$this->getConfig()->get( MainConfigNames::HiddenPrefs ) ) ) {
|
||||
$userOptionsLookup = MediaWikiServices::getInstance()
|
||||
->getUserOptionsLookup();
|
||||
$userOptionsLookup = $services->getUserOptionsLookup();
|
||||
$userSkin = $userOptionsLookup->getOption( $this->getUser(), 'skin' );
|
||||
// Optimisation: Avoid slow getVal(), this isn't user-generated content.
|
||||
$userSkin = $this->getRequest()->getRawVal( 'useskin', $userSkin );
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@ use DeprecationHelper;
|
|||
use DerivativeContext;
|
||||
use ErrorPageError;
|
||||
use ExternalUserNames;
|
||||
use Hooks;
|
||||
use IContextSource;
|
||||
use LogEventsList;
|
||||
use LogPage;
|
||||
|
|
@ -61,6 +60,7 @@ use MediaWiki\EditPage\Constraint\SpamRegexConstraint;
|
|||
use MediaWiki\EditPage\Constraint\UnicodeConstraint;
|
||||
use MediaWiki\EditPage\Constraint\UserBlockConstraint;
|
||||
use MediaWiki\EditPage\Constraint\UserRateLimitConstraint;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\HookContainer\ProtectedHookAccessorTrait;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Language\RawMessage;
|
||||
|
|
@ -4227,7 +4227,8 @@ class EditPage implements IEditObject {
|
|||
* @return string
|
||||
*/
|
||||
public static function getCopyrightWarning( PageReference $page, string $format, MessageLocalizer $localizer ) {
|
||||
$rightsText = MediaWikiServices::getInstance()->getMainConfig()->get( MainConfigNames::RightsText );
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$rightsText = $services->getMainConfig()->get( MainConfigNames::RightsText );
|
||||
if ( $rightsText ) {
|
||||
$copywarnMsg = [ 'copyrightwarning',
|
||||
'[[' . $localizer->msg( 'copyrightpage' )->inContentLanguage()->text() . ']]',
|
||||
|
|
@ -4238,7 +4239,7 @@ class EditPage implements IEditObject {
|
|||
}
|
||||
// Allow for site and per-namespace customization of contribution/copyright notice.
|
||||
$title = Title::newFromPageReference( $page );
|
||||
Hooks::runner()->onEditPageCopyrightWarning( $title, $copywarnMsg );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onEditPageCopyrightWarning( $title, $copywarnMsg );
|
||||
if ( !$copywarnMsg ) {
|
||||
return '';
|
||||
}
|
||||
|
|
@ -4271,8 +4272,9 @@ class EditPage implements IEditObject {
|
|||
] ) .
|
||||
Html::openElement( 'tbody' );
|
||||
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
foreach ( $output->getLimitReportData() as $key => $value ) {
|
||||
if ( Hooks::runner()->onParserLimitReportFormat( $key, $value, $limitReport, true, true ) ) {
|
||||
if ( $hookRunner->onParserLimitReportFormat( $key, $value, $limitReport, true, true ) ) {
|
||||
$keyMsg = wfMessage( $key );
|
||||
$valueMsg = wfMessage( [ "$key-value-html", "$key-value" ] );
|
||||
if ( !$valueMsg->exists() ) {
|
||||
|
|
@ -4724,7 +4726,8 @@ class EditPage implements IEditObject {
|
|||
$startingToolbar = '<div id="toolbar"></div>';
|
||||
$toolbar = $startingToolbar;
|
||||
|
||||
if ( !Hooks::runner()->onEditPageBeforeEditToolbar( $toolbar ) ) {
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
if ( !$hookRunner->onEditPageBeforeEditToolbar( $toolbar ) ) {
|
||||
return null;
|
||||
}
|
||||
// Don't add a pointless `<div>` to the page unless a hook caller populated it
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Request\FauxRequest;
|
||||
|
|
@ -760,7 +761,7 @@ TXT;
|
|||
$logger->error( $json, [ 'private' => true ] );
|
||||
}
|
||||
|
||||
Hooks::runner()->onLogException( $e, false );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onLogException( $e, false );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -805,6 +806,6 @@ TXT;
|
|||
$logger->log( $unfilteredLevel, $json, [ 'private' => true ] );
|
||||
}
|
||||
|
||||
Hooks::runner()->onLogException( $e, $suppressed );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onLogException( $e, $suppressed );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\StubObject\StubUserLang;
|
||||
|
|
@ -147,7 +148,8 @@ abstract class ImageGalleryBase extends ContextSource {
|
|||
'slideshow' => SlideshowImageGallery::class,
|
||||
];
|
||||
// Allow extensions to make a new gallery format.
|
||||
Hooks::runner()->onGalleryGetModes( self::$modeMapping );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onGalleryGetModes( self::$modeMapping );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Linker\Linker;
|
||||
use MediaWiki\Linker\LinkRenderer;
|
||||
|
|
@ -86,6 +87,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
|
|||
$lang = $this->getRenderLang();
|
||||
$enableLegacyMediaDOM =
|
||||
$this->getConfig()->get( MainConfigNames::ParserEnableLegacyMediaDOM );
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
|
||||
# Output each image...
|
||||
foreach ( $this->mImages as [ $nt, $text, $alt, $link, $handlerOpts, $loading, $imageOptions ] ) {
|
||||
|
|
@ -98,7 +100,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
|
|||
if ( $resolveFilesViaParser ) {
|
||||
# Give extensions a chance to select the file revision for us
|
||||
$options = [];
|
||||
Hooks::runner()->onBeforeParserFetchFileAndTitle(
|
||||
$hookRunner->onBeforeParserFetchFileAndTitle(
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgument Type mismatch on pass-by-ref args
|
||||
$this->mParser, $nt, $options, $descQuery );
|
||||
# Fetch and register the file (file title may be different via hooks)
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Title\Title;
|
||||
|
|
@ -73,9 +74,10 @@ class RecentChangesUpdateJob extends Job {
|
|||
}
|
||||
|
||||
protected function purgeExpiredRows() {
|
||||
$rcMaxAge = MediaWikiServices::getInstance()->getMainConfig()->get(
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$rcMaxAge = $services->getMainConfig()->get(
|
||||
MainConfigNames::RCMaxAge );
|
||||
$updateRowsPerQuery = MediaWikiServices::getInstance()->getMainConfig()->get(
|
||||
$updateRowsPerQuery = $services->getMainConfig()->get(
|
||||
MainConfigNames::UpdateRowsPerQuery );
|
||||
$dbw = wfGetDB( DB_PRIMARY );
|
||||
$lockKey = $dbw->getDomainID() . ':recentchanges-prune';
|
||||
|
|
@ -84,8 +86,9 @@ class RecentChangesUpdateJob extends Job {
|
|||
return;
|
||||
}
|
||||
|
||||
$factory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
|
||||
$factory = $services->getDBLoadBalancerFactory();
|
||||
$ticket = $factory->getEmptyTransactionTicket( __METHOD__ );
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
$cutoff = $dbw->timestamp( time() - $rcMaxAge );
|
||||
$rcQuery = RecentChange::getQueryInfo();
|
||||
do {
|
||||
|
|
@ -105,7 +108,7 @@ class RecentChangesUpdateJob extends Job {
|
|||
}
|
||||
if ( $rcIds ) {
|
||||
$dbw->delete( 'recentchanges', [ 'rc_id' => $rcIds ], __METHOD__ );
|
||||
Hooks::runner()->onRecentChangesPurgeRows( $rows );
|
||||
$hookRunner->onRecentChangesPurgeRows( $rows );
|
||||
// There might be more, so try waiting for replica DBs
|
||||
if ( !$factory->commitAndWaitForReplication(
|
||||
__METHOD__, $ticket, [ 'timeout' => 3 ]
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
* @author PhiLiP <philip.npc@gmail.com>
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Linker\LinkTarget;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
|
|
@ -334,7 +335,8 @@ abstract class LanguageConverter implements ILanguageConverter {
|
|||
public function getPreferredVariant() {
|
||||
$req = $this->getURLVariant();
|
||||
|
||||
Hooks::runner()->onGetLangPreferredVariant( $req );
|
||||
$services = MediaWikiServices::getInstance();
|
||||
( new HookRunner( $services->getHookContainer() ) )->onGetLangPreferredVariant( $req );
|
||||
|
||||
if ( !$req ) {
|
||||
$user = RequestContext::getMain()->getUser();
|
||||
|
|
@ -349,7 +351,7 @@ abstract class LanguageConverter implements ILanguageConverter {
|
|||
}
|
||||
}
|
||||
|
||||
$defaultLanguageVariant = MediaWikiServices::getInstance()->getMainConfig()
|
||||
$defaultLanguageVariant = $services->getMainConfig()
|
||||
->get( MainConfigNames::DefaultLanguageVariant );
|
||||
if ( !$req && $defaultLanguageVariant ) {
|
||||
$req = $this->validateVariant( $defaultLanguageVariant );
|
||||
|
|
|
|||
|
|
@ -27,12 +27,12 @@ use ContextSource;
|
|||
use DerivativeContext;
|
||||
use ExternalUserNames;
|
||||
use File;
|
||||
use Hooks;
|
||||
use HtmlArmor;
|
||||
use IContextSource;
|
||||
use Language;
|
||||
use MediaTransformError;
|
||||
use MediaTransformOutput;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Html\HtmlHelper;
|
||||
use MediaWiki\MainConfigNames;
|
||||
|
|
@ -200,7 +200,8 @@ class Linker {
|
|||
$attrs['class'] = 'mw-selflink selflink';
|
||||
}
|
||||
$ret = Html::rawElement( 'a', $attrs, $prefix . $html ) . $trail;
|
||||
if ( !Hooks::runner()->onSelfLinkBegin( $nt, $html, $trail, $prefix, $ret ) ) {
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
if ( !$hookRunner->onSelfLinkBegin( $nt, $html, $trail, $prefix, $ret ) ) {
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
|
@ -269,7 +270,8 @@ class Linker {
|
|||
$alt = self::fnamePart( $url );
|
||||
}
|
||||
$img = '';
|
||||
$success = Hooks::runner()->onLinkerMakeExternalImage( $url, $alt, $img );
|
||||
$success = ( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onLinkerMakeExternalImage( $url, $alt, $img );
|
||||
if ( !$success ) {
|
||||
wfDebug( "Hook LinkerMakeExternalImage changed the output of external image "
|
||||
. "with url {$url} and alt text {$alt} to {$img}" );
|
||||
|
|
@ -328,7 +330,8 @@ class Linker {
|
|||
$title = Title::newFromLinkTarget( $title );
|
||||
$res = null;
|
||||
$dummy = new DummyLinker;
|
||||
if ( !Hooks::runner()->onImageBeforeProduceHTML( $dummy, $title,
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
if ( !$hookRunner->onImageBeforeProduceHTML( $dummy, $title,
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgument Type mismatch on pass-by-ref args
|
||||
$file, $frameParams, $handlerParams, $time, $res,
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgument Type mismatch on pass-by-ref args
|
||||
|
|
@ -1027,7 +1030,7 @@ class Linker {
|
|||
'title' => $alt
|
||||
];
|
||||
|
||||
if ( !Hooks::runner()->onLinkerMakeMediaLinkFile(
|
||||
if ( !( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onLinkerMakeMediaLinkFile(
|
||||
Title::newFromLinkTarget( $title ), $file, $html, $attribs, $ret )
|
||||
) {
|
||||
wfDebug( "Hook LinkerMakeMediaLinkFile changed the output of link "
|
||||
|
|
@ -1126,7 +1129,7 @@ class Linker {
|
|||
$attribs['rel'] = implode( ' ', $combined );
|
||||
}
|
||||
$link = '';
|
||||
$success = Hooks::runner()->onLinkerMakeExternalLink(
|
||||
$success = ( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onLinkerMakeExternalLink(
|
||||
$url, $text, $link, $attribs, $linktype );
|
||||
if ( !$success ) {
|
||||
wfDebug( "Hook LinkerMakeExternalLink changed the output of link "
|
||||
|
|
@ -1217,7 +1220,8 @@ class Linker {
|
|||
return ' ' . wfMessage( 'empty-username' )->parse();
|
||||
}
|
||||
global $wgLang;
|
||||
$disableAnonTalk = MediaWikiServices::getInstance()->getMainConfig()->get( MainConfigNames::DisableAnonTalk );
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$disableAnonTalk = $services->getMainConfig()->get( MainConfigNames::DisableAnonTalk );
|
||||
$talkable = !( $disableAnonTalk && $userId == 0 );
|
||||
$blockable = !( $flags & self::TOOL_LINKS_NOBLOCK );
|
||||
$addEmailLink = $flags & self::TOOL_LINKS_EMAIL && $userId;
|
||||
|
|
@ -1260,7 +1264,7 @@ class Linker {
|
|||
$items[] = self::emailLink( $userId, $userText );
|
||||
}
|
||||
|
||||
Hooks::runner()->onUserToolLinksEdit( $userId, $userText, $items );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onUserToolLinksEdit( $userId, $userText, $items );
|
||||
|
||||
if ( !$items ) {
|
||||
return '';
|
||||
|
|
@ -1929,9 +1933,10 @@ class Linker {
|
|||
|
||||
$inner = self::buildRollbackLink( $revRecord, $context, $editCount );
|
||||
|
||||
$services = MediaWikiServices::getInstance();
|
||||
// Allow extensions to modify the rollback link.
|
||||
// Abort further execution if the extension wants full control over the link.
|
||||
if ( !Hooks::runner()->onLinkerGenerateRollbackLink(
|
||||
if ( !( new HookRunner( $services->getHookContainer() ) )->onLinkerGenerateRollbackLink(
|
||||
$revRecord, $context, $options, $inner ) ) {
|
||||
return $inner;
|
||||
}
|
||||
|
|
@ -1940,10 +1945,10 @@ class Linker {
|
|||
$inner = $context->msg( 'brackets' )->rawParams( $inner )->escaped();
|
||||
}
|
||||
|
||||
if ( MediaWikiServices::getInstance()->getUserOptionsLookup()
|
||||
if ( $services->getUserOptionsLookup()
|
||||
->getBoolOption( $context->getUser(), 'showrollbackconfirmation' )
|
||||
) {
|
||||
$stats = MediaWikiServices::getInstance()->getStatsdDataFactory();
|
||||
$stats = $services->getStatsdDataFactory();
|
||||
$stats->increment( 'rollbackconfirmation.event.load' );
|
||||
$context->getOutput()->addModules( 'mediawiki.misc-authed-curate' );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,9 @@
|
|||
* @since 1.19
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
/**
|
||||
* This class formats all log entries for log types
|
||||
* which have not been converted to the new system.
|
||||
|
|
@ -117,8 +120,8 @@ class LegacyLogFormatter extends LogFormatter {
|
|||
|
||||
$params = $this->entry->getParameters();
|
||||
|
||||
Hooks::runner()->onLogLine( $type, $subtype, $title, $params, $this->comment,
|
||||
$this->revert, $this->entry->getTimestamp() );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onLogLine(
|
||||
$type, $subtype, $title, $params, $this->comment, $this->revert, $this->entry->getTimestamp() );
|
||||
|
||||
return $this->revert;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ class LogEventsList extends ContextSource {
|
|||
if ( $linkRenderer instanceof LinkRenderer ) {
|
||||
$this->linkRenderer = $linkRenderer;
|
||||
}
|
||||
$this->hookRunner = Hooks::runner();
|
||||
$this->hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -791,7 +791,8 @@ class LogEventsList extends ContextSource {
|
|||
}
|
||||
|
||||
/* hook can return false, if we don't want the message to be emitted (Wikia BugId:7093) */
|
||||
if ( Hooks::runner()->onLogEventsListShowLogExtract( $s, $types, $pageName, $user, $param ) ) {
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
if ( $hookRunner->onLogEventsListShowLogExtract( $s, $types, $pageName, $user, $param ) ) {
|
||||
// $out can be either an OutputPage object or a String-by-reference
|
||||
if ( $out instanceof OutputPage ) {
|
||||
$out->addHTML( $s );
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
*/
|
||||
|
||||
use MediaWiki\ChangeTags\Taggable;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Linker\LinkTarget;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Page\PageReference;
|
||||
|
|
@ -428,7 +429,8 @@ class ManualLogEntry extends LogEntryBase implements Taggable {
|
|||
function () use ( $newId, $to, $canAddTags ) {
|
||||
$log = new LogPage( $this->getType() );
|
||||
if ( !$log->isRestricted() ) {
|
||||
Hooks::runner()->onManualLogEntryBeforePublish( $this );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onManualLogEntryBeforePublish( $this );
|
||||
$rc = $this->getRecentChange( $newId );
|
||||
|
||||
if ( $to === 'rc' || $to === 'rcandudp' ) {
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
* @author Luke Welling lwelling@wikimedia.org
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Mail\UserEmailContact;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -252,7 +253,8 @@ class EmailNotification {
|
|||
|
||||
$formattedPageStatus = [ 'deleted', 'created', 'moved', 'restored', 'changed' ];
|
||||
|
||||
Hooks::runner()->onUpdateUserMailerFormattedPageStatus( $formattedPageStatus );
|
||||
$hookRunner = new HookRunner( $mwServices->getHookContainer() );
|
||||
$hookRunner->onUpdateUserMailerFormattedPageStatus( $formattedPageStatus );
|
||||
if ( !in_array( $this->pageStatus, $formattedPageStatus ) ) {
|
||||
throw new MWException( 'Not a valid page status!' );
|
||||
}
|
||||
|
|
@ -288,7 +290,7 @@ class EmailNotification {
|
|||
// see: https://phabricator.wikimedia.org/T208895
|
||||
&& !( $config->get( MainConfigNames::BlockDisablesLogin ) &&
|
||||
$watchingUser->getBlock() )
|
||||
&& Hooks::runner()->onSendWatchlistEmailNotification( $watchingUser, $title, $this )
|
||||
&& $hookRunner->onSendWatchlistEmailNotification( $watchingUser, $title, $this )
|
||||
) {
|
||||
$this->compose( $watchingUser, self::WATCHLIST, $messageCache );
|
||||
}
|
||||
|
|
@ -341,7 +343,9 @@ class EmailNotification {
|
|||
) {
|
||||
if ( !$targetUser->isEmailConfirmed() ) {
|
||||
wfDebug( __METHOD__ . ": talk page owner doesn't have validated email" );
|
||||
} elseif ( !Hooks::runner()->onAbortTalkPageEmailNotification( $targetUser, $title ) ) {
|
||||
} elseif ( !( new HookRunner( $services->getHookContainer() ) )
|
||||
->onAbortTalkPageEmailNotification( $targetUser, $title )
|
||||
) {
|
||||
wfDebug( __METHOD__ . ": talk page update notification is aborted for this user" );
|
||||
} else {
|
||||
wfDebug( __METHOD__ . ": sending talk page update notification" );
|
||||
|
|
|
|||
|
|
@ -21,9 +21,9 @@
|
|||
namespace MediaWiki\Mail;
|
||||
|
||||
use Config;
|
||||
use Hooks;
|
||||
use IContextSource;
|
||||
use MailAddress;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Preferences\MultiUsernameFilter;
|
||||
|
|
@ -129,9 +129,10 @@ class EmailUser {
|
|||
* hook error
|
||||
*/
|
||||
public static function getPermissionsError( $user, $editToken, Config $config = null ) {
|
||||
$services = MediaWikiServices::getInstance();
|
||||
if ( $config === null ) {
|
||||
wfDebug( __METHOD__ . ' called without a Config instance passed to it' );
|
||||
$config = MediaWikiServices::getInstance()->getMainConfig();
|
||||
$config = $services->getMainConfig();
|
||||
}
|
||||
if ( !$config->get( MainConfigNames::EnableEmail ) ||
|
||||
!$config->get( MainConfigNames::EnableUserEmail ) ) {
|
||||
|
|
@ -144,8 +145,7 @@ class EmailUser {
|
|||
return 'mailnologin';
|
||||
}
|
||||
|
||||
if ( !MediaWikiServices::getInstance()
|
||||
->getPermissionManager()
|
||||
if ( !$services->getPermissionManager()
|
||||
->userHasRight( $user, 'sendemail' )
|
||||
) {
|
||||
return 'badaccess';
|
||||
|
|
@ -167,8 +167,9 @@ class EmailUser {
|
|||
|
||||
$hookErr = false;
|
||||
|
||||
Hooks::runner()->onUserCanSendEmail( $user, $hookErr );
|
||||
Hooks::runner()->onEmailUserPermissionsErrors( $user, $editToken, $hookErr );
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
$hookRunner->onUserCanSendEmail( $user, $hookErr );
|
||||
$hookRunner->onEmailUserPermissionsErrors( $user, $editToken, $hookErr );
|
||||
|
||||
return $hookErr ?: null;
|
||||
}
|
||||
|
|
@ -222,8 +223,9 @@ class EmailUser {
|
|||
|
||||
// Services that are needed, will be injected once this is moved to EmailUserUtils
|
||||
// service, see T265541
|
||||
$hookRunner = Hooks::runner();
|
||||
$emailer = MediaWikiServices::getInstance()->getEmailer();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
$emailer = $services->getEmailer();
|
||||
|
||||
$error = false;
|
||||
if ( !$hookRunner->onEmailUser( $toAddress, $fromAddress, $subject, $text, $error ) ) {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
* @author Luke Welling lwelling@wikimedia.org
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\WikiMap\WikiMap;
|
||||
|
|
@ -96,7 +97,8 @@ class UserMailer {
|
|||
* @return Status
|
||||
*/
|
||||
public static function send( $to, $from, $subject, $body, $options = [] ) {
|
||||
$allowHTMLEmail = MediaWikiServices::getInstance()->getMainConfig()->get(
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$allowHTMLEmail = $services->getMainConfig()->get(
|
||||
MainConfigNames::AllowHTMLEmail );
|
||||
|
||||
if ( !isset( $options['contentType'] ) ) {
|
||||
|
|
@ -153,7 +155,7 @@ class UserMailer {
|
|||
// target differently to split up the address list
|
||||
if ( count( $to ) > 1 ) {
|
||||
$oldTo = $to;
|
||||
Hooks::runner()->onUserMailerSplitTo( $to );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onUserMailerSplitTo( $to );
|
||||
if ( $oldTo != $to ) {
|
||||
$splitTo = array_diff( $oldTo, $to );
|
||||
$to = array_diff( $oldTo, $splitTo ); // ignore new addresses added in the hook
|
||||
|
|
@ -197,7 +199,8 @@ class UserMailer {
|
|||
$body,
|
||||
$options = []
|
||||
) {
|
||||
$mainConfig = MediaWikiServices::getInstance()->getMainConfig();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$mainConfig = $services->getMainConfig();
|
||||
$smtp = $mainConfig->get( MainConfigNames::SMTP );
|
||||
$enotifMaxRecips = $mainConfig->get( MainConfigNames::EnotifMaxRecips );
|
||||
$additionalMailParams = $mainConfig->get( MainConfigNames::AdditionalMailParams );
|
||||
|
|
@ -206,10 +209,11 @@ class UserMailer {
|
|||
$contentType = $options['contentType'] ?? 'text/plain; charset=UTF-8';
|
||||
$headers = $options['headers'] ?? [];
|
||||
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
// Allow transformation of content, such as encrypting/signing
|
||||
$error = false;
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgument Type mismatch on pass-by-ref args
|
||||
if ( !Hooks::runner()->onUserMailerTransformContent( $to, $from, $body, $error ) ) {
|
||||
if ( !$hookRunner->onUserMailerTransformContent( $to, $from, $body, $error ) ) {
|
||||
if ( $error ) {
|
||||
return Status::newFatal( 'php-mail-error', $error );
|
||||
} else {
|
||||
|
|
@ -251,7 +255,7 @@ class UserMailer {
|
|||
$extraParams = $additionalMailParams;
|
||||
|
||||
// Hook to generate custom VERP address for 'Return-Path'
|
||||
Hooks::runner()->onUserMailerChangeReturnPath( $to, $returnPath );
|
||||
$hookRunner->onUserMailerChangeReturnPath( $to, $returnPath );
|
||||
// Add the envelope sender address using the -f command line option when PHP mail() is used.
|
||||
// Will default to the $from->address when the UserMailerChangeReturnPath hook fails and the
|
||||
// generated VERP address when the hook runs effectively.
|
||||
|
|
@ -307,7 +311,7 @@ class UserMailer {
|
|||
}
|
||||
|
||||
// allow transformation of MIME-encoded message
|
||||
if ( !Hooks::runner()->onUserMailerTransformMessage(
|
||||
if ( !$hookRunner->onUserMailerTransformMessage(
|
||||
$to, $from, $subject, $headers, $body, $error )
|
||||
) {
|
||||
if ( $error ) {
|
||||
|
|
@ -317,7 +321,7 @@ class UserMailer {
|
|||
}
|
||||
}
|
||||
|
||||
$ret = Hooks::runner()->onAlternateUserMailer( $headers, $to, $from, $subject, $body );
|
||||
$ret = $hookRunner->onAlternateUserMailer( $headers, $to, $from, $subject, $body );
|
||||
if ( $ret === false ) {
|
||||
// the hook implementation will return false to skip regular mail sending
|
||||
return Status::newGood();
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
* @ingroup Media
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
/**
|
||||
|
|
@ -293,7 +294,7 @@ abstract class MediaHandler {
|
|||
*/
|
||||
public static function getMetadataVersion() {
|
||||
$version = [ '2' ]; // core metadata version
|
||||
Hooks::runner()->onGetMetadataVersion( $version );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onGetMetadataVersion( $version );
|
||||
|
||||
return implode( ';', $version );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
* @ingroup Media
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -117,7 +118,8 @@ class ThumbnailImage extends MediaTransformOutput {
|
|||
* @return string
|
||||
*/
|
||||
public function toHtml( $options = [] ) {
|
||||
$mainConfig = MediaWikiServices::getInstance()->getMainConfig();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$mainConfig = $services->getMainConfig();
|
||||
$nativeImageLazyLoading = $mainConfig->get( MainConfigNames::NativeImageLazyLoading );
|
||||
$enableLegacyMediaDOM = $mainConfig->get( MainConfigNames::ParserEnableLegacyMediaDOM );
|
||||
|
||||
|
|
@ -207,7 +209,8 @@ class ThumbnailImage extends MediaTransformOutput {
|
|||
$attribs['srcset'] = Html::srcSet( $responsiveUrls );
|
||||
}
|
||||
|
||||
Hooks::runner()->onThumbnailBeforeProduceHTML( $this, $attribs, $linkAttribs );
|
||||
( new HookRunner( $services->getHookContainer() ) )
|
||||
->onThumbnailBeforeProduceHTML( $this, $attribs, $linkAttribs );
|
||||
|
||||
return $this->linkWrap( $linkAttribs, Xml::element( 'img', $attribs ) );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
* @ingroup Media
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Shell\Shell;
|
||||
|
|
@ -231,7 +232,8 @@ abstract class TransformationalImageHandler extends ImageHandler {
|
|||
// Try a hook. Called "Bitmap" for historical reasons.
|
||||
/** @var MediaTransformOutput $mto */
|
||||
$mto = null;
|
||||
Hooks::runner()->onBitmapHandlerTransform( $this, $image, $scalerParams, $mto );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onBitmapHandlerTransform( $this, $image, $scalerParams, $mto );
|
||||
if ( $mto !== null ) {
|
||||
wfDebug( __METHOD__ . ": Hook to BitmapHandlerTransform created an mto" );
|
||||
$scaler = 'hookaborted';
|
||||
|
|
@ -627,7 +629,7 @@ abstract class TransformationalImageHandler extends ImageHandler {
|
|||
|
||||
# For historical reasons, hook starts with BitmapHandler
|
||||
$checkImageAreaHookResult = null;
|
||||
Hooks::runner()->onBitmapHandlerCheckImageArea(
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onBitmapHandlerCheckImageArea(
|
||||
$file, $params, $checkImageAreaHookResult );
|
||||
|
||||
if ( $checkImageAreaHookResult !== null ) {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
use MediaWiki\Block\DatabaseBlock;
|
||||
use MediaWiki\CommentFormatter\CommentFormatter;
|
||||
use MediaWiki\EditPage\EditPage;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\HookContainer\ProtectedHookAccessorTrait;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Linker\Linker;
|
||||
|
|
@ -185,8 +186,9 @@ class Article implements Page {
|
|||
}
|
||||
|
||||
$page = null;
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgument Type mismatch on pass-by-ref args
|
||||
Hooks::runner()->onArticleFromTitle( $title, $page, $context );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgument Type mismatch on pass-by-ref args
|
||||
->onArticleFromTitle( $title, $page, $context );
|
||||
if ( !$page ) {
|
||||
switch ( $title->getNamespace() ) {
|
||||
case NS_FILE:
|
||||
|
|
@ -496,7 +498,8 @@ class Article implements Page {
|
|||
|
||||
$poOptions = [];
|
||||
# Allow extensions to vary parser options used for article rendering
|
||||
Hooks::runner()->onArticleParserOptions( $this, $parserOptions );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onArticleParserOptions( $this, $parserOptions );
|
||||
# Render printable version, use printable version cache
|
||||
if ( $outputPage->isPrintable() ) {
|
||||
$parserOptions->setIsPrintable( true );
|
||||
|
|
|
|||
|
|
@ -24,9 +24,9 @@
|
|||
|
||||
namespace MediaWiki\Page\File;
|
||||
|
||||
use Hooks;
|
||||
use LocalFile;
|
||||
use ManualLogEntry;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Page\DeletePage;
|
||||
use MediaWiki\Title\Title;
|
||||
|
|
@ -65,6 +65,7 @@ class FileDeleteForm {
|
|||
$tags = [],
|
||||
bool $deleteTalk = false
|
||||
): Status {
|
||||
$services = MediaWikiServices::getInstance();
|
||||
if ( $oldimage ) {
|
||||
$page = null;
|
||||
$status = $file->deleteOldFile( $oldimage, $reason, $user, $suppress );
|
||||
|
|
@ -92,7 +93,6 @@ class FileDeleteForm {
|
|||
$status = Status::newFatal( 'cannotdelete',
|
||||
wfEscapeWikiText( $title->getPrefixedText() )
|
||||
);
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$page = $services->getWikiPageFactory()->newFromTitle( $title );
|
||||
'@phan-var \WikiFilePage $page';
|
||||
$deleter = $services->getUserFactory()->newFromUserIdentity( $user );
|
||||
|
|
@ -152,10 +152,10 @@ class FileDeleteForm {
|
|||
}
|
||||
|
||||
if ( $status->isOK() ) {
|
||||
$legacyUser = MediaWikiServices::getInstance()
|
||||
->getUserFactory()
|
||||
$legacyUser = $services->getUserFactory()
|
||||
->newFromUserIdentity( $user );
|
||||
Hooks::runner()->onFileDeleteComplete( $file, $oldimage, $page, $legacyUser, $reason );
|
||||
( new HookRunner( $services->getHookContainer() ) )
|
||||
->onFileDeleteComplete( $file, $oldimage, $page, $legacyUser, $reason );
|
||||
}
|
||||
|
||||
return $status;
|
||||
|
|
|
|||
|
|
@ -3624,15 +3624,17 @@ class Parser {
|
|||
$revRecord = null;
|
||||
$contextTitle = $parser ? $parser->getTitle() : null;
|
||||
|
||||
$services = MediaWikiServices::getInstance();
|
||||
# Loop to fetch the article, with up to 2 redirects
|
||||
$revLookup = MediaWikiServices::getInstance()->getRevisionLookup();
|
||||
$revLookup = $services->getRevisionLookup();
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
for ( $i = 0; $i < 3 && is_object( $title ); $i++ ) {
|
||||
# Give extensions a chance to select the revision instead
|
||||
$revRecord = null; # Assume no hook
|
||||
$id = false; # Assume current
|
||||
$origTitle = $title;
|
||||
$titleChanged = false;
|
||||
Hooks::runner()->onBeforeParserFetchTemplateRevisionRecord(
|
||||
$hookRunner->onBeforeParserFetchTemplateRevisionRecord(
|
||||
# The $title is a not a PageIdentity, as it may
|
||||
# contain fragments or even represent an attempt to transclude
|
||||
# a broken or otherwise-missing Title, which the hook may
|
||||
|
|
@ -3692,7 +3694,7 @@ class Parser {
|
|||
}
|
||||
# If there is no current revision, there is no page
|
||||
if ( $revRecord === null || $revRecord->getId() === null ) {
|
||||
$linkCache = MediaWikiServices::getInstance()->getLinkCache();
|
||||
$linkCache = $services->getLinkCache();
|
||||
$linkCache->addBadLinkObj( $title );
|
||||
}
|
||||
if ( $revRecord ) {
|
||||
|
|
@ -3716,7 +3718,7 @@ class Parser {
|
|||
break;
|
||||
}
|
||||
} elseif ( $title->getNamespace() === NS_MEDIAWIKI ) {
|
||||
$message = wfMessage( MediaWikiServices::getInstance()->getContentLanguage()->
|
||||
$message = wfMessage( $services->getContentLanguage()->
|
||||
lcfirst( $title->getText() ) )->inContentLanguage();
|
||||
if ( !$message->exists() ) {
|
||||
$text = false;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
* @ingroup Parser
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Revision\MutableRevisionRecord;
|
||||
|
|
@ -1208,7 +1209,7 @@ class ParserOptions {
|
|||
self::$cacheVaryingOptionsHash = self::$initialCacheVaryingOptionsHash;
|
||||
self::$lazyOptions = self::$initialLazyOptions;
|
||||
|
||||
Hooks::runner()->onParserOptionsRegister(
|
||||
( new HookRunner( $services->getHookContainer() ) )->onParserOptionsRegister(
|
||||
self::$defaults,
|
||||
self::$cacheVaryingOptionsHash,
|
||||
self::$lazyOptions
|
||||
|
|
@ -1451,7 +1452,7 @@ class ParserOptions {
|
|||
$user = $services->getUserFactory()->newFromUserIdentity( $this->getUserIdentity() );
|
||||
// Give a chance for extensions to modify the hash, if they have
|
||||
// extra options or other effects on the parser cache.
|
||||
Hooks::runner()->onPageRenderingHash(
|
||||
( new HookRunner( $services->getHookContainer() ) )->onPageRenderingHash(
|
||||
$confstr,
|
||||
$user,
|
||||
$forOptions
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Json\JsonUnserializable;
|
||||
use MediaWiki\Json\JsonUnserializableTrait;
|
||||
|
|
@ -437,7 +438,8 @@ class ParserOutput extends CacheTime implements ContentMetadataCollector {
|
|||
$text .= $this->renderDebugInfo();
|
||||
}
|
||||
|
||||
Hooks::runner()->onParserOutputPostCacheTransform( $this, $text, $options );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onParserOutputPostCacheTransform( $this, $text, $options );
|
||||
|
||||
if ( $options['wrapperDivClass'] !== '' && !$options['unwrap'] ) {
|
||||
$text = Html::rawElement( 'div', [ 'class' => $options['wrapperDivClass'] ], $text );
|
||||
|
|
@ -1990,6 +1992,7 @@ class ParserOutput extends CacheTime implements ContentMetadataCollector {
|
|||
// TODO: flags should go into limit report too.
|
||||
$limitReport .= 'Complications: [' . implode( ', ', $this->getAllFlags() ) . "]\n";
|
||||
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
foreach ( $limitReportData as $key => $value ) {
|
||||
if ( in_array( $key, [
|
||||
'cachereport-origin',
|
||||
|
|
@ -2001,7 +2004,7 @@ class ParserOutput extends CacheTime implements ContentMetadataCollector {
|
|||
// These keys are processed separately.
|
||||
continue;
|
||||
}
|
||||
if ( Hooks::runner()->onParserLimitReportFormat(
|
||||
if ( $hookRunner->onParserLimitReportFormat(
|
||||
$key, $value, $limitReport, false, false )
|
||||
) {
|
||||
$keyMsg = wfMessage( $key )->inLanguage( 'en' )->useDatabase( false );
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
* @ingroup Parser
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Parser\RemexRemoveTagHandler;
|
||||
use MediaWiki\Parser\RemexStripTagHandler;
|
||||
|
|
@ -1893,7 +1894,8 @@ class Sanitizer {
|
|||
public static function validateEmail( $addr ) {
|
||||
$result = null;
|
||||
// TODO This method should be non-static, and have a HookRunner injected
|
||||
if ( !Hooks::runner()->onIsValidEmailAddr( $addr, $result ) ) {
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
if ( !$hookRunner->onIsValidEmailAddr( $addr, $result ) ) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\User\UserIdentity;
|
||||
|
||||
|
|
@ -177,18 +178,17 @@ class UserPasswordPolicy {
|
|||
* @return array the effective policy for $user
|
||||
*/
|
||||
public function getPoliciesForUser( UserIdentity $user ) {
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$effectivePolicy = self::getPoliciesForGroups(
|
||||
$this->policies,
|
||||
MediaWikiServices::getInstance()
|
||||
->getUserGroupManager()
|
||||
$services->getUserGroupManager()
|
||||
->getUserEffectiveGroups( $user ),
|
||||
$this->policies['default']
|
||||
);
|
||||
|
||||
$legacyUser = MediaWikiServices::getInstance()
|
||||
->getUserFactory()
|
||||
$legacyUser = $services->getUserFactory()
|
||||
->newFromUserIdentity( $user );
|
||||
Hooks::runner()->onPasswordPoliciesForUser( $legacyUser, $effectivePolicy );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onPasswordPoliciesForUser( $legacyUser, $effectivePolicy );
|
||||
|
||||
return $effectivePolicy;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Title\Title;
|
||||
|
|
@ -45,7 +46,8 @@ class IRCColourfulRCFeedFormatter implements RCFeedFormatter {
|
|||
* @return string|null
|
||||
*/
|
||||
public function getLine( array $feed, RecentChange $rc, $actionComment ) {
|
||||
$mainConfig = MediaWikiServices::getInstance()->getMainConfig();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$mainConfig = $services->getMainConfig();
|
||||
$useRCPatrol = $mainConfig->get( MainConfigNames::UseRCPatrol );
|
||||
$useNPPatrol = $mainConfig->get( MainConfigNames::UseNPPatrol );
|
||||
$localInterwikis = $mainConfig->get( MainConfigNames::LocalInterwikis );
|
||||
|
|
@ -80,7 +82,7 @@ class IRCColourfulRCFeedFormatter implements RCFeedFormatter {
|
|||
$query .= '&rcid=' . $attribs['rc_id'];
|
||||
}
|
||||
|
||||
Hooks::runner()->onIRCLineURL( $url, $query, $rc );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onIRCLineURL( $url, $query, $rc );
|
||||
$url .= $query;
|
||||
}
|
||||
|
||||
|
|
@ -108,7 +110,7 @@ class IRCColourfulRCFeedFormatter implements RCFeedFormatter {
|
|||
) );
|
||||
$flag = $attribs['rc_log_action'];
|
||||
} else {
|
||||
$store = MediaWikiServices::getInstance()->getCommentStore();
|
||||
$store = $services->getCommentStore();
|
||||
$comment = self::cleanupForIRC( $store->getComment( 'rc_comment', $attribs )->text );
|
||||
$flag = '';
|
||||
if ( !$attribs['rc_patrolled']
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Title\Title;
|
||||
use MediaWiki\Title\TitleArray;
|
||||
|
|
@ -126,7 +127,7 @@ abstract class PrefixSearch {
|
|||
}
|
||||
}
|
||||
$srchres = [];
|
||||
if ( Hooks::runner()->onPrefixSearchBackend(
|
||||
if ( ( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onPrefixSearchBackend(
|
||||
$namespaces, $search, $limit, $srchres, $offset )
|
||||
) {
|
||||
return $this->titles( $this->defaultSearchBackend( $namespaces, $search, $limit, $offset ) );
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Revision\RevisionLookup;
|
||||
use MediaWiki\Revision\RevisionRecord;
|
||||
|
|
@ -45,7 +46,7 @@ trait RevisionSearchResultTrait {
|
|||
if ( $title !== null ) {
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$id = false;
|
||||
Hooks::runner()->onSearchResultInitFromTitle( $title, $id );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onSearchResultInitFromTitle( $title, $id );
|
||||
|
||||
$this->mRevisionRecord = $services->getRevisionLookup()->getRevisionByTitle(
|
||||
$title,
|
||||
|
|
|
|||
|
|
@ -429,14 +429,16 @@ abstract class SearchEngine {
|
|||
|
||||
if ( !$allQuery && strpos( $query, ':' ) !== false ) {
|
||||
$prefix = str_replace( ' ', '_', substr( $query, 0, strpos( $query, ':' ) ) );
|
||||
$index = MediaWikiServices::getInstance()->getContentLanguage()->getNsIndex( $prefix );
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$index = $services->getContentLanguage()->getNsIndex( $prefix );
|
||||
if ( $index !== false ) {
|
||||
$extractedNamespace = [ $index ];
|
||||
$parsed = substr( $query, strlen( $prefix ) + 1 );
|
||||
} elseif ( $withPrefixSearchExtractNamespaceHook ) {
|
||||
$hookNamespaces = [ NS_MAIN ];
|
||||
$hookQuery = $query;
|
||||
Hooks::runner()->onPrefixSearchExtractNamespace( $hookNamespaces, $hookQuery );
|
||||
( new HookRunner( $services->getHookContainer() ) )
|
||||
->onPrefixSearchExtractNamespace( $hookNamespaces, $hookQuery );
|
||||
if ( $hookQuery !== $query ) {
|
||||
$parsed = $hookQuery;
|
||||
$extractedNamespace = $hookNamespaces;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
namespace MediaWiki\Shell;
|
||||
|
||||
use Hooks;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use Shellbox\Shellbox;
|
||||
|
|
@ -184,10 +184,11 @@ class Shell {
|
|||
public static function makeScriptCommand(
|
||||
string $script, array $parameters, $options = []
|
||||
): Command {
|
||||
$phpCli = MediaWikiServices::getInstance()->getMainConfig()->get( MainConfigNames::PhpCli );
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$phpCli = $services->getMainConfig()->get( MainConfigNames::PhpCli );
|
||||
// Give site config file a chance to run the script in a wrapper.
|
||||
// The caller may likely want to call wfBasename() on $script.
|
||||
Hooks::runner()->onWfShellWikiCmd( $script, $parameters, $options );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onWfShellWikiCmd( $script, $parameters, $options );
|
||||
$cmd = [ $options['php'] ?? $phpCli ];
|
||||
if ( isset( $options['wrapper'] ) ) {
|
||||
$cmd[] = $options['wrapper'];
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
|
||||
use MediaWiki\Cache\LinkBatchFactory;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Linker\LinkTarget;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -140,7 +141,7 @@ abstract class QueryPage extends SpecialPage {
|
|||
[ SpecialUnusedTemplates::class, 'Unusedtemplates' ],
|
||||
[ SpecialWithoutInterwiki::class, 'Withoutinterwiki' ],
|
||||
];
|
||||
Hooks::runner()->onWgQueryPages( $qp );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onWgQueryPages( $qp );
|
||||
}
|
||||
|
||||
return $qp;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ namespace MediaWiki\Specials;
|
|||
|
||||
use ContribsPager;
|
||||
use ExternalUserNames;
|
||||
use Hooks;
|
||||
use HTMLForm;
|
||||
use HTMLMultiSelectField;
|
||||
use IncludableSpecialPage;
|
||||
|
|
@ -553,7 +552,7 @@ class SpecialContributions extends IncludableSpecialPage {
|
|||
) {
|
||||
// Fallback to global state, if not provided
|
||||
$permissionManager ??= MediaWikiServices::getInstance()->getPermissionManager();
|
||||
$hookRunner ??= Hooks::runner();
|
||||
$hookRunner ??= new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
|
||||
$id = $target->getId();
|
||||
$username = $target->getName();
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@
|
|||
namespace MediaWiki\Specials;
|
||||
|
||||
use ChangeTags;
|
||||
use Hooks;
|
||||
use LogEventsList;
|
||||
use LogPage;
|
||||
use LogPager;
|
||||
|
|
@ -34,6 +33,7 @@ use MediaWiki\Html\FormOptions;
|
|||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Html\ListToggle;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Title\Title;
|
||||
use MediaWiki\User\ActorNormalization;
|
||||
use MediaWiki\User\UserIdentityLookup;
|
||||
|
|
@ -208,7 +208,8 @@ class SpecialLog extends SpecialPage {
|
|||
'renameuser',
|
||||
];
|
||||
|
||||
( $runner ?? Hooks::runner() )->onGetLogTypesOnUser( $types );
|
||||
( $runner ?? new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onGetLogTypesOnUser( $types );
|
||||
return $types;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
* @ingroup Upload
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -640,7 +641,8 @@ class SpecialUpload extends SpecialPage {
|
|||
}
|
||||
|
||||
// allow extensions to modify the content
|
||||
Hooks::runner()->onUploadForm_getInitialPageText( $pageText, $msg, $config );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onUploadForm_getInitialPageText( $pageText, $msg, $config );
|
||||
|
||||
return $pageText;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
*/
|
||||
|
||||
use MediaWiki\ExtensionInfo;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Language\RawMessage;
|
||||
use MediaWiki\Linker\Linker;
|
||||
|
|
@ -325,7 +326,7 @@ class SpecialVersion extends SpecialPage {
|
|||
* @since 1.34
|
||||
* @return string[] Array of wikitext strings keyed by wikitext strings
|
||||
*/
|
||||
private static function getSoftwareInformation() {
|
||||
private function getSoftwareInformation() {
|
||||
$dbr = wfGetDB( DB_REPLICA );
|
||||
|
||||
// Put the software in an array of form 'name' => 'version'. All messages should
|
||||
|
|
@ -339,7 +340,7 @@ class SpecialVersion extends SpecialPage {
|
|||
];
|
||||
|
||||
// Allow a hook to add/remove items.
|
||||
Hooks::runner()->onSoftwareInfo( $software );
|
||||
$this->getHookRunner()->onSoftwareInfo( $software );
|
||||
|
||||
return $software;
|
||||
}
|
||||
|
|
@ -365,7 +366,7 @@ class SpecialVersion extends SpecialPage {
|
|||
Html::element( 'th', [], $this->msg( 'version-software-version' )->text() )
|
||||
);
|
||||
|
||||
foreach ( self::getSoftwareInformation() as $name => $version ) {
|
||||
foreach ( $this->getSoftwareInformation() as $name => $version ) {
|
||||
$out .= Html::rawElement( 'tr', [],
|
||||
Html::rawElement( 'td', [], $this->msg( new RawMessage( $name ) )->parse() ) .
|
||||
Html::rawElement( 'td', [ 'dir' => 'ltr' ], $this->msg( new RawMessage( $version ) )->parse() )
|
||||
|
|
@ -430,7 +431,8 @@ class SpecialVersion extends SpecialPage {
|
|||
*/
|
||||
private static function getMWVersionLinked() {
|
||||
$versionUrl = "";
|
||||
if ( Hooks::runner()->onSpecialVersionVersionUrl( MW_VERSION, $versionUrl ) ) {
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
if ( $hookRunner->onSpecialVersionVersionUrl( MW_VERSION, $versionUrl ) ) {
|
||||
$versionParts = [];
|
||||
preg_match( "/^(\d+\.\d+)/", MW_VERSION, $versionParts );
|
||||
$versionUrl = "https://www.mediawiki.org/wiki/MediaWiki_{$versionParts[1]}";
|
||||
|
|
@ -491,7 +493,8 @@ class SpecialVersion extends SpecialPage {
|
|||
'other' => wfMessage( 'version-other' )->text(),
|
||||
];
|
||||
|
||||
Hooks::runner()->onExtensionTypes( self::$extensionTypes );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onExtensionTypes( self::$extensionTypes );
|
||||
}
|
||||
|
||||
return self::$extensionTypes;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\HookContainer\ProtectedHookAccessorTrait;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Title\Title;
|
||||
|
||||
/**
|
||||
|
|
@ -44,7 +46,8 @@ class LoginHelper extends ContextSource {
|
|||
static $messages = null;
|
||||
if ( !$messages ) {
|
||||
$messages = self::$validErrorMessages;
|
||||
Hooks::runner()->onLoginFormValidErrorMessages( $messages );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onLoginFormValidErrorMessages( $messages );
|
||||
}
|
||||
|
||||
return $messages;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ use ContentHandler;
|
|||
use DBAccessObjectUtils;
|
||||
use DeferredUpdates;
|
||||
use DeprecationHelper;
|
||||
use Hooks;
|
||||
use HTMLCacheUpdateJob;
|
||||
use IDBAccessObject;
|
||||
use ILanguageConverter;
|
||||
|
|
@ -41,6 +40,7 @@ use LinkCache;
|
|||
use MalformedTitleException;
|
||||
use MapCacheLRU;
|
||||
use MediaWiki\DAO\WikiAwareEntityTrait;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Interwiki\InterwikiLookup;
|
||||
use MediaWiki\Linker\LinkTarget;
|
||||
|
|
@ -1443,8 +1443,9 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
* @return bool
|
||||
*/
|
||||
public function isMovable() {
|
||||
$services = MediaWikiServices::getInstance();
|
||||
if (
|
||||
!MediaWikiServices::getInstance()->getNamespaceInfo()->
|
||||
!$services->getNamespaceInfo()->
|
||||
isMovable( $this->mNamespace ) || $this->isExternal()
|
||||
) {
|
||||
// Interwiki title or immovable namespace. Hooks don't get to override here
|
||||
|
|
@ -1452,7 +1453,7 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
}
|
||||
|
||||
$result = true;
|
||||
Hooks::runner()->onTitleIsMovable( $this, $result );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onTitleIsMovable( $this, $result );
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
|
@ -2249,7 +2250,7 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
|
||||
# Finally, add the fragment.
|
||||
$url .= $this->getFragmentForURL();
|
||||
Hooks::runner()->onGetFullURL( $this, $url, $query );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onGetFullURL( $this, $url, $query );
|
||||
return $url;
|
||||
}
|
||||
|
||||
|
|
@ -2308,6 +2309,8 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
|
||||
$query = self::fixUrlQueryArgs( $query, $query2 );
|
||||
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$hookRunner = new HookRunner( $services->getHookContainer() );
|
||||
$interwiki = self::getInterwikiLookup()->fetch( $this->mInterwiki );
|
||||
if ( $interwiki ) {
|
||||
$namespace = $this->getNsText();
|
||||
|
|
@ -2326,7 +2329,7 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
} else {
|
||||
$url = str_replace( '$1', $dbkey, $wgArticlePath );
|
||||
}
|
||||
Hooks::runner()->onGetLocalURL__Article( $this, $url );
|
||||
$hookRunner->onGetLocalURL__Article( $this, $url );
|
||||
} else {
|
||||
global $wgVariantArticlePath, $wgActionPaths;
|
||||
$url = false;
|
||||
|
|
@ -2353,8 +2356,7 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
if ( $url === false
|
||||
&& $wgVariantArticlePath
|
||||
&& preg_match( '/^variant=([^&]*)$/', $query, $matches )
|
||||
&& $this->getPageLanguage()->equals(
|
||||
MediaWikiServices::getInstance()->getContentLanguage() )
|
||||
&& $this->getPageLanguage()->equals( $services->getContentLanguage() )
|
||||
&& $this->getPageLanguageConverter()->hasVariants()
|
||||
) {
|
||||
$variant = urldecode( $matches[1] );
|
||||
|
|
@ -2373,10 +2375,10 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
$url = "{$wgScript}?title={$dbkey}&{$query}";
|
||||
}
|
||||
}
|
||||
Hooks::runner()->onGetLocalURL__Internal( $this, $url, $query );
|
||||
$hookRunner->onGetLocalURL__Internal( $this, $url, $query );
|
||||
}
|
||||
|
||||
Hooks::runner()->onGetLocalURL( $this, $url, $query );
|
||||
$hookRunner->onGetLocalURL( $this, $url, $query );
|
||||
return $url;
|
||||
}
|
||||
|
||||
|
|
@ -2427,7 +2429,8 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
$query = self::fixUrlQueryArgs( $query, $query2 );
|
||||
$server = $wgInternalServer !== false ? $wgInternalServer : $wgServer;
|
||||
$url = wfExpandUrl( $server . $this->getLocalURL( $query ), PROTO_HTTP );
|
||||
Hooks::runner()->onGetInternalURL( $this, $url, $query );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onGetInternalURL( $this, $url, $query );
|
||||
return $url;
|
||||
}
|
||||
|
||||
|
|
@ -2447,7 +2450,8 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
public function getCanonicalURL( $query = '', $query2 = false ) {
|
||||
$query = self::fixUrlQueryArgs( $query, $query2 );
|
||||
$url = wfExpandUrl( $this->getLocalURL( $query ) . $this->getFragmentForURL(), PROTO_CANONICAL );
|
||||
Hooks::runner()->onGetCanonicalURL( $this, $url, $query );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onGetCanonicalURL( $this, $url, $query );
|
||||
return $url;
|
||||
}
|
||||
|
||||
|
|
@ -3339,7 +3343,7 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
*/
|
||||
public function exists( $flags = 0 ): bool {
|
||||
$exists = $this->getArticleID( $flags ) != 0;
|
||||
Hooks::runner()->onTitleExists( $this, $exists );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onTitleExists( $this, $exists );
|
||||
return $exists;
|
||||
}
|
||||
|
||||
|
|
@ -3362,6 +3366,7 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
public function isAlwaysKnown() {
|
||||
$isKnown = null;
|
||||
|
||||
$services = MediaWikiServices::getInstance();
|
||||
/**
|
||||
* Allows overriding default behavior for determining if a page exists.
|
||||
* If $isKnown is kept as null, regular checks happen. If it's
|
||||
|
|
@ -3372,7 +3377,7 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
* @param Title $title
|
||||
* @param bool|null $isKnown
|
||||
*/
|
||||
Hooks::runner()->onTitleIsAlwaysKnown( $this, $isKnown );
|
||||
( new HookRunner( $services->getHookContainer() ) )->onTitleIsAlwaysKnown( $this, $isKnown );
|
||||
|
||||
if ( $isKnown !== null ) {
|
||||
return $isKnown;
|
||||
|
|
@ -3382,7 +3387,6 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
return true; // any interwiki link might be viewable, for all we know
|
||||
}
|
||||
|
||||
$services = MediaWikiServices::getInstance();
|
||||
switch ( $this->mNamespace ) {
|
||||
case NS_MEDIA:
|
||||
case NS_FILE:
|
||||
|
|
@ -3738,7 +3742,8 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
// on the Title object passed in, and should probably
|
||||
// tell the users to run updateCollations.php --force
|
||||
// in order to re-sort existing category relations.
|
||||
Hooks::runner()->onGetDefaultSortkey( $this, $unprefixed );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onGetDefaultSortkey( $this, $unprefixed );
|
||||
if ( $prefix !== '' ) {
|
||||
# Separate with a line feed, so the unprefixed part is only used as
|
||||
# a tiebreaker when two pages have the exact same prefix.
|
||||
|
|
@ -3955,7 +3960,8 @@ class Title implements LinkTarget, PageIdentity, IDBAccessObject {
|
|||
}
|
||||
}
|
||||
|
||||
Hooks::runner()->onTitleGetEditNotices( $this, $oldid, $notices );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onTitleGetEditNotices( $this, $oldid, $notices );
|
||||
return $notices;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
* @ingroup Upload
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\HookContainer\ProtectedHookAccessorTrait;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -201,8 +202,9 @@ abstract class UploadBase {
|
|||
// Give hooks the chance to handle this request
|
||||
/** @var self|null $className */
|
||||
$className = null;
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgument Type mismatch on pass-by-ref args
|
||||
Hooks::runner()->onUploadCreateFromRequest( $type, $className );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
// @phan-suppress-next-line PhanTypeMismatchArgument Type mismatch on pass-by-ref args
|
||||
->onUploadCreateFromRequest( $type, $className );
|
||||
if ( $className === null ) {
|
||||
$className = 'UploadFrom' . $type;
|
||||
wfDebug( __METHOD__ . ": class name: $className" );
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
* @ingroup Upload
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Permissions\Authority;
|
||||
|
|
@ -147,7 +148,8 @@ class UploadFromUrl extends UploadBase {
|
|||
public static function isAllowedUrl( $url ) {
|
||||
if ( !isset( self::$allowedUrls[$url] ) ) {
|
||||
$allowed = true;
|
||||
Hooks::runner()->onIsUploadAllowedFromUrl( $url, $allowed );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onIsUploadAllowedFromUrl( $url, $allowed );
|
||||
self::$allowedUrls[$url] = $allowed;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
use MediaWiki\Auth\AuthenticationResponse;
|
||||
use MediaWiki\Auth\Throttler;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Session\BotPasswordSessionProvider;
|
||||
|
|
@ -508,7 +509,8 @@ class BotPassword implements IDBAccessObject {
|
|||
} else {
|
||||
$response = AuthenticationResponse::newFail( $status->getMessage() );
|
||||
}
|
||||
Hooks::runner()->onAuthManagerLoginAuthenticateAudit( $response, $user, $name, $extraData );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onAuthManagerLoginAuthenticateAudit( $response, $user, $name, $extraData );
|
||||
|
||||
return $status;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Title\Title;
|
||||
use MediaWiki\User\UserRigorOptions;
|
||||
|
|
@ -107,13 +108,14 @@ class ExternalUserNames {
|
|||
* username), otherwise the name with the prefix prepended.
|
||||
*/
|
||||
public function applyPrefix( $name ) {
|
||||
$userNameUtils = MediaWikiServices::getInstance()->getUserNameUtils();
|
||||
$services = MediaWikiServices::getInstance();
|
||||
$userNameUtils = $services->getUserNameUtils();
|
||||
if ( $userNameUtils->getCanonical( $name, UserRigorOptions::RIGOR_USABLE ) === false ) {
|
||||
return $name;
|
||||
}
|
||||
|
||||
if ( $this->assignKnownUsers ) {
|
||||
$userIdentityLookup = MediaWikiServices::getInstance()->getUserIdentityLookup();
|
||||
$userIdentityLookup = $services->getUserIdentityLookup();
|
||||
$userIdentity = $userIdentityLookup->getUserIdentityByName( $name );
|
||||
if ( $userIdentity && $userIdentity->isRegistered() ) {
|
||||
return $name;
|
||||
|
|
@ -122,7 +124,7 @@ class ExternalUserNames {
|
|||
// See if any extension wants to create it.
|
||||
if ( !isset( $this->triedCreations[$name] ) ) {
|
||||
$this->triedCreations[$name] = true;
|
||||
if ( !Hooks::runner()->onImportHandleUnknownUser( $name ) ) {
|
||||
if ( !( new HookRunner( $services->getHookContainer() ) )->onImportHandleUnknownUser( $name ) ) {
|
||||
$userIdentity = $userIdentityLookup->getUserIdentityByName( $name, IDBAccessObject::READ_LATEST );
|
||||
if ( $userIdentity && $userIdentity->isRegistered() ) {
|
||||
return $name;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use Wikimedia\Rdbms\IResultWrapper;
|
||||
|
||||
abstract class UserArray implements Iterator {
|
||||
|
|
@ -34,7 +36,8 @@ abstract class UserArray implements Iterator {
|
|||
*/
|
||||
public static function newFromResult( $res ) {
|
||||
$userArray = null;
|
||||
if ( !Hooks::runner()->onUserArrayFromResult( $userArray, $res ) ) {
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
if ( !$hookRunner->onUserArrayFromResult( $userArray, $res ) ) {
|
||||
return new ArrayIterator( [] );
|
||||
}
|
||||
return $userArray ?? new UserArrayFromResult( $res );
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
* @ingroup Maintenance
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Logger\ConsoleSpi;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -102,7 +103,7 @@ class MWEval extends Maintenance {
|
|||
$__historyFile = null;
|
||||
}
|
||||
|
||||
Hooks::runner()->onMaintenanceShellStart();
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onMaintenanceShellStart();
|
||||
|
||||
$__e = null; // PHP exception
|
||||
while ( ( $__line = Maintenance::readconsole() ) !== false ) {
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
|
||||
// NO_AUTOLOAD -- file-scope code
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Logger\ConsoleSpi;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -93,7 +94,7 @@ class MediaWikiShell extends Maintenance {
|
|||
|
||||
$this->setupLogging();
|
||||
|
||||
Hooks::runner()->onMaintenanceShellStart();
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onMaintenanceShellStart();
|
||||
|
||||
$shell->run();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@
|
|||
* @ingroup entrypoint
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
// This endpoint is supposed to be independent of request cookies and other
|
||||
// details of the session. Enforce this constraint with respect to session use.
|
||||
define( 'MW_NO_SESSION', 1 );
|
||||
|
|
@ -111,7 +114,7 @@ function wfOpenSearchDescMain() {
|
|||
|
||||
// Allow hooks to override the suggestion URL settings in a more
|
||||
// general way than overriding the whole search engine...
|
||||
Hooks::runner()->onOpenSearchUrls( $urls );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onOpenSearchUrls( $urls );
|
||||
|
||||
foreach ( $urls as $attribs ) {
|
||||
print Xml::element( 'Url', $attribs );
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
* @file
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Languages\LanguageNameUtils;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
|
@ -1466,7 +1467,8 @@ return [
|
|||
$magicWords = [
|
||||
'SITENAME' => $config->get( MainConfigNames::Sitename ),
|
||||
];
|
||||
Hooks::runner()->onResourceLoaderJqueryMsgModuleMagicWords( $context, $magicWords );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onResourceLoaderJqueryMsgModuleMagicWords( $context, $magicWords );
|
||||
|
||||
return [
|
||||
'allowedHtmlElements' => $allowedHtmlElements,
|
||||
|
|
@ -1601,7 +1603,8 @@ return [
|
|||
'selectorLogoutLink' => '#pt-logout a[data-mw="interface"]'
|
||||
];
|
||||
|
||||
Hooks::runner()->onSkinPageReadyConfig( $context, $readyConfig );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onSkinPageReadyConfig( $context, $readyConfig );
|
||||
return $readyConfig;
|
||||
} ],
|
||||
],
|
||||
|
|
@ -2196,7 +2199,8 @@ return [
|
|||
'name' => 'layout.js',
|
||||
'callback' => static function ( Context $context ) {
|
||||
$skinName = $context->getSkin();
|
||||
Hooks::runner()->onPreferencesGetLayout( $useMobileLayout, $skinName );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )
|
||||
->onPreferencesGetLayout( $useMobileLayout, $skinName );
|
||||
$file = $useMobileLayout ? 'mobile.js' : 'tabs.js';
|
||||
return new FilePath( $file );
|
||||
},
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
* @ingroup Testing
|
||||
*/
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Html\Html;
|
||||
use MediaWiki\Interwiki\ClassicInterwikiLookup;
|
||||
use MediaWiki\MainConfigNames;
|
||||
|
|
@ -2270,7 +2271,7 @@ class ParserTestRunner {
|
|||
}
|
||||
|
||||
/** @since 1.20 */
|
||||
Hooks::runner()->onParserTestGlobals( $setup );
|
||||
( new HookRunner( $mwServices->getHookContainer() ) )->onParserTestGlobals( $setup );
|
||||
|
||||
// Set content language. This invalidates the magic word cache and title services
|
||||
// In addition the ParserFactory needs to be recreated as well.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\HookContainer\FauxGlobalHookArray;
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\Linker\LinkTarget;
|
||||
use MediaWiki\Logger\LegacyLogger;
|
||||
use MediaWiki\Logger\LegacySpi;
|
||||
|
|
@ -1668,9 +1669,9 @@ abstract class MediaWikiIntegrationTestCase extends PHPUnit\Framework\TestCase {
|
|||
return;
|
||||
}
|
||||
|
||||
Hooks::runner()->onUnitTestsBeforeDatabaseTeardown();
|
||||
|
||||
$services = MediaWikiServices::getInstance();
|
||||
( new HookRunner( $services->getHookContainer() ) )->onUnitTestsBeforeDatabaseTeardown();
|
||||
|
||||
$jobQueueGroup = $services->getJobQueueGroup();
|
||||
foreach ( $wgJobClasses as $type => $class ) {
|
||||
// Delete any jobs under the clone DB (or old prefix in other stores)
|
||||
|
|
@ -1791,7 +1792,7 @@ abstract class MediaWikiIntegrationTestCase extends PHPUnit\Framework\TestCase {
|
|||
self::$dbClone = $dbClone;
|
||||
}
|
||||
|
||||
Hooks::runner()->onUnitTestsAfterDatabaseSetup( $db, $prefix );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onUnitTestsAfterDatabaseSetup( $db, $prefix );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\HookContainer\HookRunner;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use PHPUnit\Framework\TestSuite;
|
||||
use SebastianBergmann\FileIterator\Facade;
|
||||
|
||||
|
|
@ -20,7 +22,7 @@ class ExtensionsTestSuite extends TestSuite {
|
|||
$paths[] = dirname( $info['path'] ) . '/tests/phpunit';
|
||||
}
|
||||
// Extensions can return a list of files or directories
|
||||
Hooks::runner()->onUnitTestsList( $paths );
|
||||
( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onUnitTestsList( $paths );
|
||||
foreach ( array_unique( $paths ) as $path ) {
|
||||
if ( is_dir( $path ) ) {
|
||||
// If the path is a directory, search for test cases.
|
||||
|
|
|
|||
Loading…
Reference in a new issue