X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryLogEvents.php;h=a6b97dd8957bb8262545231f1cc2783f6e9b35cb;hb=c96accbb60f93a4212d9c664637a92176259666f;hp=f3453001c4beed9099df69d7a4e8a4275bf9f765;hpb=16c80e429be5904fb42a93f260f8de3d18f0c692;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryLogEvents.php b/includes/api/ApiQueryLogEvents.php index f3453001c4..a6b97dd895 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']; @@ -317,7 +321,7 @@ class ApiQueryLogEvents extends ApiQueryBase { } if ( LogEventsList::userCan( $row, LogPage::DELETED_USER, $user ) ) { if ( $this->fld_user ) { - $vals['user'] = $row->user_name === null ? $row->log_user_text : $row->user_name; + $vals['user'] = $row->user_name ?? $row->log_user_text; } if ( $this->fld_userid ) { $vals['userid'] = intval( $row->log_user ); @@ -414,7 +418,7 @@ class ApiQueryLogEvents extends ApiQueryBase { ApiBase::PARAM_HELP_MSG_PER_VALUE => [], ], 'type' => [ - ApiBase::PARAM_TYPE => $config->get( 'LogTypes' ) + ApiBase::PARAM_TYPE => LogPage::validTypes(), ], 'action' => [ // validation on request is done in execute()