X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryLogEvents.php;h=84e12d7dfadc295c94ddb338ba8f4f10967048c4;hb=54d50ef3921dc9f30dc4d863ddc471dc564998e9;hp=f3453001c4beed9099df69d7a4e8a4275bf9f765;hpb=68923d7a2385b4822bfc9f14f83567c2efacabd2;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryLogEvents.php b/includes/api/ApiQueryLogEvents.php index f3453001c4..84e12d7dfa 100644 --- a/includes/api/ApiQueryLogEvents.php +++ b/includes/api/ApiQueryLogEvents.php @@ -62,11 +62,15 @@ class ApiQueryLogEvents extends ApiQueryBase { $this->addWhere( $hideLogs ); } - // Order is significant here - $this->addTables( [ 'logging', 'user', 'page' ] ); + $actorMigration = ActorMigration::newMigration(); + $actorQuery = $actorMigration->getJoin( 'log_user' ); + $this->addTables( 'logging' ); + $this->addTables( $actorQuery['tables'] ); + $this->addTables( [ 'user', 'page' ] ); + $this->addJoinConds( $actorQuery['joins'] ); $this->addJoinConds( [ 'user' => [ 'LEFT JOIN', - 'user_id=log_user' ], + 'user_id=' . $actorQuery['fields']['log_user'] ], 'page' => [ 'LEFT JOIN', [ 'log_namespace=page_namespace', 'log_title=page_title' ] ] ] ); @@ -84,8 +88,8 @@ class ApiQueryLogEvents extends ApiQueryBase { // join at query time. This leads to different results in various // scenarios, e.g. deletion, recreation. $this->addFieldsIf( 'log_page', $this->fld_ids ); - $this->addFieldsIf( [ 'log_user', 'log_user_text', 'user_name' ], $this->fld_user ); - $this->addFieldsIf( 'log_user', $this->fld_userid ); + $this->addFieldsIf( $actorQuery['fields'] + [ 'user_name' ], $this->fld_user ); + $this->addFieldsIf( $actorQuery['fields'], $this->fld_userid ); $this->addFieldsIf( [ 'log_namespace', 'log_title' ], $this->fld_title || $this->fld_parsedcomment @@ -166,12 +170,12 @@ class ApiQueryLogEvents extends ApiQueryBase { $user = $params['user']; if ( !is_null( $user ) ) { - $userid = User::idFromName( $user ); - if ( $userid ) { - $this->addWhereFld( 'log_user', $userid ); - } else { - $this->addWhereFld( 'log_user_text', $user ); - } + // Note the joins in $q are the same as those from ->getJoin() above + // so we only need to add 'conds' here. + $q = $actorMigration->getWhere( + $db, 'log_user', User::newFromName( $params['user'], false ) + ); + $this->addWhere( $q['conds'] ); } $title = $params['title'];