The un-namespaced \ScopedCallback is deprecated.
Change-Id: Ie014d5a775ead66335a24acac9d339915884d1a4
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
+use Wikimedia\ScopedCallback;
/**
* The edit page/HTML interface (split from Article)
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
+use Wikimedia\ScopedCallback;
/**
* Prepare an edit in shared cache so that it can be reused on edit
$session->set( 'AuthManager:lastAuthTimestamp', time() );
$session->persist();
- \ScopedCallback::consume( $delay );
+ \Wikimedia\ScopedCallback::consume( $delay );
\Hooks::run( 'UserLoggedIn', [ $user ] );
}
* @ingroup Cache
*/
use MediaWiki\MediaWikiServices;
+use Wikimedia\ScopedCallback;
/**
* MediaWiki message cache structure version.
use Liuggio\StatsdClient\Factory\StatsdDataFactory;
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
+use Wikimedia\ScopedCallback;
/**
* Group all the pieces relevant to the context of a request into one instance
* @file
*/
use MediaWiki\MediaWikiServices;
+use Wikimedia\ScopedCallback;
/**
* Update object handling the cleanup of links tables after a page was deleted.
*/
use MediaWiki\MediaWikiServices;
+use Wikimedia\ScopedCallback;
/**
* Class the manages updates of *_link tables as well as similar extension-managed tables
* @author Aaron Schulz
*/
use MediaWiki\MediaWikiServices;
+use Wikimedia\ScopedCallback;
/**
* Class to handle job queues stored in the DB
use Liuggio\StatsdClient\Factory\StatsdDataFactory;
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
+use Wikimedia\ScopedCallback;
/**
* Job queue runner utility methods
* @file
* @ingroup Upload
*/
+use Wikimedia\ScopedCallback;
/**
* Assemble the segments of a chunked upload.
* @ingroup Upload
* @ingroup JobQueue
*/
+use Wikimedia\ScopedCallback;
/**
* Upload a file from the upload stash into the local file repo.
*/
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
+use Wikimedia\ScopedCallback;
/**
* @brief Base class for all file backend classes (including multi-write backends).
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
+use Wikimedia\ScopedCallback;
use Wikimedia\WaitConditionLoop;
/**
*/
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
+use Wikimedia\ScopedCallback;
/**
* Relational database abstraction object
* @file
* @ingroup Database
*/
+use Wikimedia\ScopedCallback;
/**
* Basic database interface for live and lazy-loaded relation database handles
*/
use Psr\Log\LoggerInterface;
+use Wikimedia\ScopedCallback;
/**
* An interface for generating database load balancers
* @ingroup Database
*/
use Psr\Log\LoggerInterface;
+use Wikimedia\ScopedCallback;
/**
* Database connection, tracking, load balancing, and transaction manager for a cluster
*/
use Psr\Log\LoggerInterface;
+use Wikimedia\ScopedCallback;
/**
* Basic DB load monitor with no external dependencies
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
+use Wikimedia\ScopedCallback;
/**
* Class for reading xmp data containing properties relevant to
* @file
* @ingroup Media
*/
+use Wikimedia\ScopedCallback;
/**
* Handler for SVG images.
*/
use MediaWiki\Linker\LinkRenderer;
use MediaWiki\MediaWikiServices;
+use Wikimedia\ScopedCallback;
/**
* @defgroup Parser Parser
$keyword = 'RFC';
$urlmsg = 'rfcurl';
$cssClass = 'mw-magiclink-rfc';
+ $trackingCategory = 'magiclinks-rfc-category';
$id = $m[5];
} elseif ( substr( $m[0], 0, 4 ) === 'PMID' ) {
if ( !$this->mOptions->getMagicPMIDLinks() ) {
$keyword = 'PMID';
$urlmsg = 'pubmedurl';
$cssClass = 'mw-magiclink-pmid';
+ $trackingCategory = 'magiclinks-pmid-category';
$id = $m[5];
} else {
throw new MWException( __METHOD__ . ': unrecognised match type "' .
substr( $m[0], 0, 20 ) . '"' );
}
$url = wfMessage( $urlmsg, $id )->inContentLanguage()->text();
+ $this->addTrackingCategory( $trackingCategory );
return Linker::makeExternalLink( $url, "{$keyword} {$id}", true, $cssClass, [], $this->mTitle );
} elseif ( isset( $m[6] ) && $m[6] !== ''
&& $this->mOptions->getMagicISBNLinks()
' ' => '',
'x' => 'X',
] );
+ $this->addTrackingCategory( 'magiclinks-isbn-category' );
return $this->getLinkRenderer()->makeKnownLink(
SpecialPage::getTitleFor( 'Booksources', $num ),
"ISBN $isbn",
* @file
* @ingroup Parser
*/
+use Wikimedia\ScopedCallback;
/**
* @brief Set options of the Parser
* @ingroup Profiler
* @defgroup Profiler Profiler
*/
+use Wikimedia\ScopedCallback;
/**
* Profiler base class that defines the interface and some trivial
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
+use Wikimedia\ScopedCallback;
/**
* Abstraction for ResourceLoader modules, with name registration and maxage functionality.
*
* Calls to save() or clear() will not be delayed.
*
- * @return \ScopedCallback When this goes out of scope, a save will be triggered
+ * @return \Wikimedia\ScopedCallback When this goes out of scope, a save will be triggered
*/
public function delaySave() {
return $this->backend->delaySave();
*
* Calls to save() will not be delayed.
*
- * @return \ScopedCallback When this goes out of scope, a save will be triggered
+ * @return \Wikimedia\ScopedCallback When this goes out of scope, a save will be triggered
*/
public function delaySave() {
$this->delaySave++;
- return new \ScopedCallback( function () {
+ return new \Wikimedia\ScopedCallback( function () {
if ( --$this->delaySave <= 0 ) {
$this->delaySave = 0;
$this->save();
private function checkPHPSession() {
if ( !$this->checkPHPSessionRecursionGuard ) {
$this->checkPHPSessionRecursionGuard = true;
- $reset = new \ScopedCallback( function () {
+ $reset = new \Wikimedia\ScopedCallback( function () {
$this->checkPHPSessionRecursionGuard = false;
} );
$session->resetId();
}
- \ScopedCallback::consume( $delay );
+ \Wikimedia\ScopedCallback::consume( $delay );
return $session;
}
use MediaWiki\Auth\AuthManager;
use MediaWiki\Auth\AuthenticationResponse;
use MediaWiki\Auth\AuthenticationRequest;
+use Wikimedia\ScopedCallback;
/**
* String Some punctuation to prevent editing from broken text-mangling proxies.
* @ingroup Testing
*/
use MediaWiki\MediaWikiServices;
+use Wikimedia\ScopedCallback;
/**
* @ingroup Testing
// arrays: $setup and $teardown. The code snippets in the $setup array
// are executed at the end of the method, before it returns, and the
// code snippets in the $teardown array are executed in reverse order
- // when the ScopedCallback object is consumed.
+ // when the Wikimedia\ScopedCallback object is consumed.
// Because it is a common operation to save, set and restore global
// variables, we have an additional convention: when the array key of
<?php
+use Wikimedia\ScopedCallback;
+
require __DIR__ . '/../../maintenance/Maintenance.php';
// Make RequestContext::resetMain() happy
<?php
use MediaWiki\Linker\LinkTarget;
+use Wikimedia\ScopedCallback;
/**
* @author Addshore
use MediaWiki\Session\UserInfo;
use Psr\Log\LogLevel;
use StatusValue;
+use Wikimedia\ScopedCallback;
/**
* @group AuthManager
$rProp = new \ReflectionProperty( AuthManager::class, 'instance' );
$rProp->setAccessible( true );
$old = $rProp->getValue();
- $cb = new \ScopedCallback( [ $rProp, 'setValue' ], [ $old ] );
+ $cb = new ScopedCallback( [ $rProp, 'setValue' ], [ $old ] );
$rProp->setValue( null );
$singleton = AuthManager::singleton();
list( $provider, $reset ) = $this->getMockSessionProvider( false );
$this->assertFalse( $this->manager->canAuthenticateNow() );
- \ScopedCallback::consume( $reset );
+ ScopedCallback::consume( $reset );
list( $provider, $reset ) = $this->getMockSessionProvider( true );
$this->assertTrue( $this->manager->canAuthenticateNow() );
- \ScopedCallback::consume( $reset );
+ ScopedCallback::consume( $reset );
}
public function testNormalizeUsername() {
$this->unhook( 'SecuritySensitiveOperationStatus' );
}
- \ScopedCallback::consume( $reset );
+ ScopedCallback::consume( $reset );
}
public function onSecuritySensitiveOperationStatus( &$status, $operation, $session, $time ) {
$this->initializeManager();
$context = \RequestContext::getMain();
- $reset = new \ScopedCallback( [ $context, 'setLanguage' ], [ $context->getLanguage() ] );
+ $reset = new ScopedCallback( [ $context, 'setLanguage' ], [ $context->getLanguage() ] );
$context->setLanguage( 'de' );
$this->setMwGlobals( 'wgContLang', \Language::factory( 'zh' ) );
}
$this->unhook( 'UserLoggedIn' );
$this->assertNull( $this->request->getSession()->getSecret( 'AuthManager::authnState' ) );
- \ScopedCallback::consume( $reset );
+ ScopedCallback::consume( $reset );
$this->initializeManager( true );
// CreatedAccountAuthenticationRequest
];
$block = new \Block( $blockOptions );
$block->insert();
- $scopeVariable = new \ScopedCallback( [ $block, 'delete' ] );
+ $scopeVariable = new ScopedCallback( [ $block, 'delete' ] );
$status = $this->manager->checkAccountCreatePermissions( new \User );
$this->assertFalse( $status->isOK() );
$this->assertTrue( $status->hasMessage( 'cantcreateaccount-range-text' ) );
- \ScopedCallback::consume( $scopeVariable );
+ ScopedCallback::consume( $scopeVariable );
$this->setMwGlobals( [
'wgEnableDnsBlacklist' => true,
];
$block = new \Block( $blockOptions );
$block->insert();
- $scopeVariable = new \ScopedCallback( [ $block, 'delete' ] );
+ $scopeVariable = new \Wikimedia\ScopedCallback( [ $block, 'delete' ] );
$user = \User::newFromName( 'UTNormalUser' );
if ( $user->getID() == 0 ) {
namespace MediaWiki\Auth;
+use Wikimedia\ScopedCallback;
+
/**
* @group AuthManager
* @group Database
} );
}
- return new \ScopedCallback( function () {
+ return new ScopedCallback( function () {
\Hooks::clear( 'AlternateUserMailer' );
\Hooks::register( 'AlternateUserMailer', function () {
return false;
$dbw = wfGetDB( DB_MASTER );
$oldHash = $dbw->selectField( 'user', 'user_newpassword', [ 'user_name' => $cuser ] );
- $cb = new \ScopedCallback( function () use ( $dbw, $cuser, $oldHash ) {
+ $cb = new ScopedCallback( function () use ( $dbw, $cuser, $oldHash ) {
$dbw->update( 'user', [ 'user_newpassword' => $oldHash ], [ 'user_name' => $cuser ] );
} );
$changeReq->password = $newpass;
$resetMailer = $this->hookMailer();
$provider->providerChangeAuthenticationData( $changeReq );
- \ScopedCallback::consume( $resetMailer );
+ ScopedCallback::consume( $resetMailer );
$loginReq->password = $oldpass;
$ret = $provider->beginPrimaryAuthentication( $loginReqs );
return false;
} );
$provider->providerChangeAuthenticationData( $req );
- \ScopedCallback::consume( $resetMailer );
+ ScopedCallback::consume( $resetMailer );
$this->assertTrue( $mailed );
$priv = \TestingAccessWrapper::newFromObject( $provider );
$this->assertSame( 'byemail', $provider->finishAccountCreation( $user, $creator, $res ) );
$this->assertTrue( $mailed );
- \ScopedCallback::consume( $resetMailer );
+ ScopedCallback::consume( $resetMailer );
$this->assertTrue( $mailed );
}
<?php
+use Wikimedia\ScopedCallback;
/**
* @group Database
<?php
+use Wikimedia\ScopedCallback;
+
class WikiCategoryPageTest extends MediaWikiLangTestCase {
/**
<?php
+use Wikimedia\ScopedCallback;
/**
* This is the TestCase subclass for running a single parser test via the
}
return false;
} );
- $reset[] = new \ScopedCallback( 'restore_error_handler' );
+ $reset[] = new \Wikimedia\ScopedCallback( 'restore_error_handler' );
$rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
$oldManager = $old->manager;
$oldStore = $old->store;
$oldLogger = $old->logger;
- $reset[] = new \ScopedCallback(
+ $reset[] = new \Wikimedia\ScopedCallback(
[ PHPSessionHandler::class, 'install' ],
[ $oldManager, $oldStore, $oldLogger ]
);
$rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
- $reset = new \ScopedCallback( [ $rProp, 'setValue' ], [ $rProp->getValue() ] );
+ $reset = new \Wikimedia\ScopedCallback( [ $rProp, 'setValue' ], [ $rProp->getValue() ] );
$rProp->setValue( $handler );
$handler->setEnableFlags( 'enable' );
] );
PHPSessionHandler::install( $manager );
$wrap = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
- $reset[] = new \ScopedCallback(
+ $reset[] = new \Wikimedia\ScopedCallback(
[ $wrap, 'setEnableFlags' ],
[ $wrap->enable ? $wrap->warn ? 'warn' : 'enable' : 'disable' ]
);
\TestingAccessWrapper::newFromObject( $handler )->setEnableFlags( 'disable' );
$oldValue = $rProp->getValue();
$rProp->setValue( $handler );
- $reset = new \ScopedCallback( [ $rProp, 'setValue' ], [ $oldValue ] );
+ $reset = new \Wikimedia\ScopedCallback( [ $rProp, 'setValue' ], [ $oldValue ] );
call_user_func_array( [ $handler, $method ], $args );
}
// Save happens when delay is consumed
$this->onSessionMetadataCalled = false;
$priv->metaDirty = true;
- \ScopedCallback::consume( $delay );
+ \Wikimedia\ScopedCallback::consume( $delay );
$this->assertTrue( $this->onSessionMetadataCalled );
// Test multiple delays
$priv->metaDirty = true;
$priv->autosave();
$this->assertFalse( $this->onSessionMetadataCalled );
- \ScopedCallback::consume( $delay3 );
+ \Wikimedia\ScopedCallback::consume( $delay3 );
$this->assertFalse( $this->onSessionMetadataCalled );
- \ScopedCallback::consume( $delay1 );
+ \Wikimedia\ScopedCallback::consume( $delay1 );
$this->assertFalse( $this->onSessionMetadataCalled );
- \ScopedCallback::consume( $delay2 );
+ \Wikimedia\ScopedCallback::consume( $delay2 );
$this->assertTrue( $this->onSessionMetadataCalled );
}
$rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
$handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
- $resetHandler = new \ScopedCallback( function () use ( $handler ) {
+ $resetHandler = new \Wikimedia\ScopedCallback( function () use ( $handler ) {
session_write_close();
$handler->enable = false;
} );
$rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
$handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
- $resetHandler = new \ScopedCallback( function () use ( $handler ) {
+ $resetHandler = new \Wikimedia\ScopedCallback( function () use ( $handler ) {
session_write_close();
$handler->enable = false;
} );
$rProp = new \ReflectionProperty( PHPSessionHandler::class, 'instance' );
$rProp->setAccessible( true );
$handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
- $resetHandler = new \ScopedCallback( function () use ( $handler ) {
+ $resetHandler = new \Wikimedia\ScopedCallback( function () use ( $handler ) {
session_write_close();
$handler->enable = false;
} );
$rProp->setAccessible( true );
$handler = \TestingAccessWrapper::newFromObject( $rProp->getValue() );
$oldEnable = $handler->enable;
- $reset[] = new \ScopedCallback( function () use ( $handler, $oldEnable ) {
+ $reset[] = new \Wikimedia\ScopedCallback( function () use ( $handler, $oldEnable ) {
if ( $handler->enable ) {
session_write_close();
}
PHPSessionHandler::install( $manager );
}
- return new \ScopedCallback( function () use ( &$reset, $oldInstance ) {
+ return new \Wikimedia\ScopedCallback( function () use ( &$reset, $oldInstance ) {
foreach ( $reset as &$arr ) {
$arr[0]->setValue( $arr[1] );
}
<?php
+use Wikimedia\ScopedCallback;
+
/**
* Factory for handling the special page list and generating SpecialPage objects.
*
<?php
use MediaWiki\Session\SessionManager;
+use Wikimedia\ScopedCallback;
/**
* @covers BotPassword
<?php
+use Wikimedia\ScopedCallback;
/**
* The UnitTest must be either a class that inherits from MediaWikiTestCase