commentStore = $commentStore; $this->logFormatterFactory = $logFormatterFactory; } public function getType() { return 'logging'; } public static function getRelationType() { return 'log_id'; } public static function getRestriction() { return 'deletelogentry'; } public static function getRevdelConstant() { return LogPage::DELETED_ACTION; } public static function suggestTarget( $target, array $ids ) { $dbr = MediaWikiServices::getInstance()->getConnectionProvider()->getReplicaDatabase(); $result = $dbr->newSelectQueryBuilder() ->select( 'log_type' ) ->distinct() ->from( 'logging' ) ->where( [ 'log_id' => $ids ] ) ->caller( __METHOD__ )->fetchResultSet(); if ( $result->numRows() == 1 ) { // If there's only one type, the target can be set to include it. return SpecialPage::getTitleFor( 'Log', $result->current()->log_type ); } return SpecialPage::getTitleFor( 'Log' ); } /** * @param \Wikimedia\Rdbms\IReadableDatabase $db * @return IResultWrapper */ public function doQuery( $db ) { $ids = array_map( 'intval', $this->ids ); $queryBuilder = $db->newSelectQueryBuilder() ->select( [ 'log_id', 'log_type', 'log_action', 'log_timestamp', 'log_actor', 'log_namespace', 'log_title', 'log_page', 'log_params', 'log_deleted', 'log_user' => 'actor_user', 'log_user_text' => 'actor_name', 'log_comment_text' => 'comment_log_comment.comment_text', 'log_comment_data' => 'comment_log_comment.comment_data', 'log_comment_cid' => 'comment_log_comment.comment_id' ] ) ->from( 'logging' ) ->join( 'actor', null, 'actor_id=log_actor' ) ->join( 'comment', 'comment_log_comment', 'comment_log_comment.comment_id = log_comment_id' ) ->where( [ 'log_id' => $ids ] ) ->orderBy( [ 'log_timestamp', 'log_id' ], SelectQueryBuilder::SORT_DESC ); MediaWikiServices::getInstance()->getChangeTagsStore()->modifyDisplayQueryBuilder( $queryBuilder, 'logging' ); return $queryBuilder->caller( __METHOD__ )->fetchResultSet(); } public function newItem( $row ) { return new RevDelLogItem( $this, $row, $this->commentStore, MediaWikiServices::getInstance()->getConnectionProvider(), $this->logFormatterFactory ); } public function getLogAction() { return 'event'; } public function getLogParams( $params ) { return [ '4::ids' => $params['ids'], '5::ofield' => $params['oldBits'], '6::nfield' => $params['newBits'], ]; } }