Introduce LogEntry::getPerformerIdentity and deprecate ::getPerformer
Bug: T274329 Change-Id: I3dadb20f076494f7b46f0647ea3a8bfbbdaa59da
This commit is contained in:
parent
3448f20ab9
commit
66573bec7e
6 changed files with 39 additions and 49 deletions
|
|
@ -23,6 +23,7 @@
|
|||
* @since 1.19
|
||||
*/
|
||||
|
||||
use MediaWiki\User\UserIdentity;
|
||||
use Wikimedia\Rdbms\IDatabase;
|
||||
|
||||
/**
|
||||
|
|
@ -213,6 +214,10 @@ class DatabaseLogEntry extends LogEntryBase {
|
|||
return $this->performer;
|
||||
}
|
||||
|
||||
public function getPerformerIdentity(): UserIdentity {
|
||||
return $this->getPerformer();
|
||||
}
|
||||
|
||||
public function getTarget() {
|
||||
$namespace = $this->row->log_namespace;
|
||||
$page = $this->row->log_title;
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@
|
|||
* @since 1.19
|
||||
*/
|
||||
|
||||
use MediaWiki\User\UserIdentity;
|
||||
|
||||
/**
|
||||
* Interface for log entries. Every log entry has these methods.
|
||||
*
|
||||
|
|
@ -61,11 +63,17 @@ interface LogEntry {
|
|||
|
||||
/**
|
||||
* Get the user who performed this action.
|
||||
*
|
||||
* @deprecated since 1.36 use ::getPerformerIdentity instead
|
||||
* @return User
|
||||
*/
|
||||
public function getPerformer();
|
||||
|
||||
/**
|
||||
* @since 1.36
|
||||
* @return UserIdentity
|
||||
*/
|
||||
public function getPerformerIdentity(): UserIdentity;
|
||||
|
||||
/**
|
||||
* Get the target page of this action.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
use MediaWiki\Linker\LinkRenderer;
|
||||
use MediaWiki\Linker\LinkTarget;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\User\UserIdentity;
|
||||
|
||||
/**
|
||||
* Implements the default log formatting.
|
||||
|
|
@ -580,7 +581,7 @@ class LogFormatter {
|
|||
$entry = $this->entry;
|
||||
$params = $this->extractParameters();
|
||||
$params[0] = Message::rawParam( $this->getPerformerElement() );
|
||||
$params[1] = $this->canView( LogPage::DELETED_USER ) ? $entry->getPerformer()->getName() : '';
|
||||
$params[1] = $this->canView( LogPage::DELETED_USER ) ? $entry->getPerformerIdentity()->getName() : '';
|
||||
$params[2] = Message::rawParam( $this->makePageLink( $entry->getTarget() ) );
|
||||
|
||||
// Bad things happens if the numbers are not in correct order
|
||||
|
|
@ -706,8 +707,8 @@ class LogFormatter {
|
|||
*/
|
||||
public function getPerformerElement() {
|
||||
if ( $this->canView( LogPage::DELETED_USER ) ) {
|
||||
$performer = $this->entry->getPerformer();
|
||||
$element = $this->makeUserLink( $performer );
|
||||
$performerIdentity = $this->entry->getPerformerIdentity();
|
||||
$element = $this->makeUserLink( $performerIdentity );
|
||||
if ( $this->entry->isDeleted( LogPage::DELETED_USER ) ) {
|
||||
$element = $this->styleRestricedElement( $element );
|
||||
}
|
||||
|
|
@ -780,12 +781,12 @@ class LogFormatter {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param User $user
|
||||
* @param UserIdentity $user
|
||||
* @param int $toolFlags Combination of Linker::TOOL_LINKS_* flags
|
||||
* @return string wikitext or html
|
||||
* @return-taint onlysafefor_html
|
||||
*/
|
||||
protected function makeUserLink( User $user, $toolFlags = 0 ) {
|
||||
protected function makeUserLink( UserIdentity $user, $toolFlags = 0 ) {
|
||||
if ( $this->plaintext ) {
|
||||
$element = $user->getName();
|
||||
} else {
|
||||
|
|
@ -793,14 +794,17 @@ class LogFormatter {
|
|||
$user->getId(),
|
||||
$user->getName()
|
||||
);
|
||||
|
||||
if ( $this->linkFlood ) {
|
||||
$editCount = $user->isRegistered()
|
||||
? MediaWikiServices::getInstance()->getUserEditTracker()->getUserEditCount( $user )
|
||||
: null;
|
||||
|
||||
$element .= Linker::userToolLinks(
|
||||
$user->getId(),
|
||||
$user->getName(),
|
||||
true, // redContribsWhenNoEdits
|
||||
$toolFlags,
|
||||
$user->getEditCount(),
|
||||
$editCount,
|
||||
// do not render parenthesises in the HTML markup (CSS will provide)
|
||||
false
|
||||
);
|
||||
|
|
|
|||
|
|
@ -463,7 +463,7 @@ class ManualLogEntry extends LogEntryBase implements Taggable {
|
|||
/**
|
||||
* @return UserIdentity
|
||||
*/
|
||||
public function getPerformerIdentity() : UserIdentity {
|
||||
public function getPerformerIdentity(): UserIdentity {
|
||||
return $this->performer;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2434,11 +2434,11 @@ class AuthManagerTest extends \MediaWikiIntegrationTestCase {
|
|||
$this->assertSame( $logSubtype ?: ( $isAnon ? 'create' : 'create2' ), $entry->getSubtype() );
|
||||
$this->assertSame(
|
||||
$isAnon ? $user->getId() : $creator->getId(),
|
||||
$entry->getPerformer()->getId()
|
||||
$entry->getPerformerIdentity()->getId()
|
||||
);
|
||||
$this->assertSame(
|
||||
$isAnon ? $user->getName() : $creator->getName(),
|
||||
$entry->getPerformer()->getName()
|
||||
$entry->getPerformerIdentity()->getName()
|
||||
);
|
||||
$this->assertSame( $user->getUserPage()->getFullText(), $entry->getTarget()->getFullText() );
|
||||
$this->assertSame( [ '4::userid' => $user->getId() ], $entry->getParameters() );
|
||||
|
|
@ -2936,8 +2936,8 @@ class AuthManagerTest extends \MediaWikiIntegrationTestCase {
|
|||
$entry = \DatabaseLogEntry::newFromRow( reset( $rows ) );
|
||||
|
||||
$this->assertSame( 'autocreate', $entry->getSubtype() );
|
||||
$this->assertSame( $user->getId(), $entry->getPerformer()->getId() );
|
||||
$this->assertSame( $user->getName(), $entry->getPerformer()->getName() );
|
||||
$this->assertSame( $user->getId(), $entry->getPerformerIdentity()->getId() );
|
||||
$this->assertSame( $user->getName(), $entry->getPerformerIdentity()->getName() );
|
||||
$this->assertSame( $user->getUserPage()->getFullText(), $entry->getTarget()->getFullText() );
|
||||
$this->assertSame( [ '4::userid' => $user->getId() ], $entry->getParameters() );
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
use MediaWiki\User\UserEditTracker;
|
||||
use MediaWiki\User\UserIdentity;
|
||||
use MediaWiki\User\UserIdentityValue;
|
||||
use Wikimedia\Rdbms\Database;
|
||||
use Wikimedia\Rdbms\LoadBalancer;
|
||||
use Wikimedia\TestingAccessWrapper;
|
||||
|
|
@ -49,10 +50,7 @@ class UserEditTrackerTest extends MediaWikiUnitTestCase {
|
|||
->with( DB_REPLICA )
|
||||
->willReturn( $database );
|
||||
|
||||
$user = $this->createMock( UserIdentity::class );
|
||||
$user->expects( $this->any() )
|
||||
->method( 'getId' )
|
||||
->willReturn( $userId );
|
||||
$user = new UserIdentityValue( $userId, 'TestUser', 0 );
|
||||
|
||||
$jobQueueGroup = $this->createMock( JobQueueGroup::class );
|
||||
|
||||
|
|
@ -77,9 +75,7 @@ class UserEditTrackerTest extends MediaWikiUnitTestCase {
|
|||
$loadBalancer = $this->createMock( LoadBalancer::class );
|
||||
|
||||
$user = $this->createMock( UserIdentity::class );
|
||||
$user->expects( $this->once() )
|
||||
->method( 'getId' )
|
||||
->willReturn( $userId );
|
||||
$user = new UserIdentityValue( $userId, 'TestUser', 0 );
|
||||
|
||||
$jobQueueGroup = $this->createMock( JobQueueGroup::class );
|
||||
|
||||
|
|
@ -99,10 +95,7 @@ class UserEditTrackerTest extends MediaWikiUnitTestCase {
|
|||
$methodName2 = 'MediaWiki\User\UserEditTracker::initializeUserEditCount';
|
||||
$editCount = 17;
|
||||
|
||||
$user = $this->createMock( UserIdentity::class );
|
||||
$user->expects( $this->any() )
|
||||
->method( 'getId' )
|
||||
->willReturn( $userId );
|
||||
$user = new UserIdentityValue( $userId, 'TestUser', 0 );
|
||||
|
||||
$database1 = $this->createMock( Database::class );
|
||||
$database1->expects( $this->once() )
|
||||
|
|
@ -188,10 +181,7 @@ class UserEditTrackerTest extends MediaWikiUnitTestCase {
|
|||
$methodName = 'MediaWiki\User\UserEditTracker::initializeUserEditCount';
|
||||
$editCount = 341;
|
||||
|
||||
$user = $this->createMock( UserIdentity::class );
|
||||
$user->expects( $this->any() )
|
||||
->method( 'getId' )
|
||||
->willReturn( $userId );
|
||||
$user = new UserIdentityValue( $userId, 'TestUser', 0 );
|
||||
|
||||
$database1 = $this->createMock( Database::class );
|
||||
$database1->expects( $this->once() )
|
||||
|
|
@ -260,10 +250,7 @@ class UserEditTrackerTest extends MediaWikiUnitTestCase {
|
|||
$methodName = 'MediaWiki\User\UserEditTracker::getUserEditTimestamp';
|
||||
$actorId = 982110;
|
||||
|
||||
$user = $this->createMock( UserIdentity::class );
|
||||
$user->expects( $this->once() )
|
||||
->method( 'getId' )
|
||||
->willReturn( 1 );
|
||||
$user = new UserIdentityValue( 1, 'TestUser', $actorId );
|
||||
|
||||
$expectedSort = ( $type === 'first' ) ? 'ASC' : 'DESC';
|
||||
$dbTime = ( $time === 'null' ) ? null : $time;
|
||||
|
|
@ -338,12 +325,7 @@ class UserEditTrackerTest extends MediaWikiUnitTestCase {
|
|||
$actorMigration = $this->createMock( ActorMigration::class );
|
||||
$loadBalancer = $this->createMock( LoadBalancer::class );
|
||||
|
||||
$user = $this->createMock( UserIdentity::class );
|
||||
$user->expects( $this->exactly( 2 ) )
|
||||
->method( 'getId' )
|
||||
->will(
|
||||
$this->onConsecutiveCalls( 0, 0 )
|
||||
);
|
||||
$user = new UserIdentityValue( 0, 'TestUser', 0 );
|
||||
|
||||
$jobQueueGroup = $this->createMock( JobQueueGroup::class );
|
||||
|
||||
|
|
@ -359,18 +341,9 @@ class UserEditTrackerTest extends MediaWikiUnitTestCase {
|
|||
|
||||
$tracker = new UserEditTracker( $actorMigration, $loadBalancer, $jobQueueGroup );
|
||||
|
||||
$anon = $this->createMock( UserIdentity::class );
|
||||
$anon->expects( $this->once() )
|
||||
->method( 'isRegistered' )
|
||||
->willReturn( false );
|
||||
$anon = new UserIdentityValue( 0, 'TestUser', 0 );
|
||||
|
||||
$user = $this->createMock( UserIdentity::class );
|
||||
$user->expects( $this->once() )
|
||||
->method( 'isRegistered' )
|
||||
->willReturn( true );
|
||||
$user->expects( $this->once() )
|
||||
->method( 'getId' )
|
||||
->willReturn( 123 );
|
||||
$user = new UserIdentityValue( 123, 'TestUser', 0 );
|
||||
|
||||
$accessible = TestingAccessWrapper::newFromObject( $tracker );
|
||||
$accessible->userEditCountCache = [ 'u123' => 5 ];
|
||||
|
|
|
|||
Loading…
Reference in a new issue