diff options
author | jenkins-bot <jenkins-bot@gerrit.wikimedia.org> | 2022-02-05 17:12:39 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@wikimedia.org> | 2022-02-05 17:12:39 +0000 |
commit | d5a749ae48066a7b28022a08bc3eb86400e91287 (patch) | |
tree | e4a707d4c7da65c08c20406a1c84ae8550c1d990 /includes/logging | |
parent | 3c4ed2d4a5b8d07db3a008f32da7d9d3d9703840 (diff) | |
parent | cf971e0d4677fa6831ade4dabdfda82604dab00a (diff) | |
download | mediawikicore-d5a749ae48066a7b28022a08bc3eb86400e91287.tar.gz mediawikicore-d5a749ae48066a7b28022a08bc3eb86400e91287.zip |
Merge "RCDatabaseLogEntry: Stop returning an unknown actor if rc_user is given"
Diffstat (limited to 'includes/logging')
-rw-r--r-- | includes/logging/RCDatabaseLogEntry.php | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/includes/logging/RCDatabaseLogEntry.php b/includes/logging/RCDatabaseLogEntry.php index f1adf8eb5a0c..39418f223a40 100644 --- a/includes/logging/RCDatabaseLogEntry.php +++ b/includes/logging/RCDatabaseLogEntry.php @@ -71,23 +71,39 @@ class RCDatabaseLogEntry extends DatabaseLogEntry { public function getPerformerIdentity(): UserIdentity { if ( !$this->performer ) { $actorStore = MediaWikiServices::getInstance()->getActorStore(); - try { - $this->performer = $actorStore->newActorFromRowFields( - $this->row->rc_user ?? 0, - $this->row->rc_user_text, - $this->row->rc_actor ?? null - ); - } catch ( InvalidArgumentException $e ) { - LoggerFactory::getInstance( 'logentry' )->warning( - 'Failed to instantiate RC log entry performer', [ - 'exception' => $e, - 'log_id' => $this->getId() - ] - ); - $this->performer = $actorStore->getUnknownActor(); + $userFactory = MediaWikiServices::getInstance()->getUserFactory(); + if ( isset( $this->row->rc_actor ) ) { + try { + $this->performer = $actorStore->newActorFromRowFields( + $this->row->rc_user ?? 0, + $this->row->rc_user_text, + $this->row->rc_actor + ); + } catch ( InvalidArgumentException $e ) { + LoggerFactory::getInstance( 'logentry' )->warning( + 'Failed to instantiate RC log entry performer', [ + 'exception' => $e, + 'log_id' => $this->getId() + ] + ); + } + } elseif ( isset( $this->row->rc_user ) ) { + $this->performer = $userFactory->newFromId( $this->row->rc_user )->getUser(); + } elseif ( isset( $this->row->rc_user_text ) ) { + $user = $userFactory->newFromName( $this->row->rc_user_text ); + if ( $user ) { + $this->performer = $user->getUser(); + } else { + LoggerFactory::getInstance( 'logentry' )->warning( + 'Failed to instantiate RC log entry performer', [ + 'rc_user_text' => $this->row->rc_user_text, + 'log_id' => $this->getId() + ] + ); + } } } - return $this->performer; + return $this->performer ?: $actorStore->getUnknownActor(); } public function getTarget() { |