Translate extension for MediaWiki
 
Loading...
Searching...
No Matches
EditSummariesAid.php
1<?php
2declare( strict_types = 1 );
3
4namespace MediaWiki\Extension\Translate\TranslatorInterface\Aid;
5
6use MediaWiki\MediaWikiServices;
7use MWTimestamp;
8use Wikimedia\Rdbms\SelectQueryBuilder;
9
18 private const COMMENT_COUNT = 3;
19
20 public function getData(): array {
21 $pageTitle = $this->handle->getTitle();
22 if ( !$pageTitle->exists() ) {
23 return [];
24 }
25
26 $mwService = MediaWikiServices::getInstance();
27 $revisionFactory = $mwService->getRevisionFactory();
28
29 // Build the query to fetch the last x revisions
30 $dbr = $mwService->getDBLoadBalancer()->getConnection( DB_REPLICA );
31 $aid = $pageTitle->getArticleID();
32 $result = $revisionFactory
33 ->newSelectQueryBuilder( $dbr )
34 ->joinComment()
35 ->where( [ 'rev_page' => $aid ] )
36 ->orderBy( [ 'rev_timestamp', 'rev_id' ], SelectQueryBuilder::SORT_DESC )
37 ->limit( self::COMMENT_COUNT )
38 ->caller( __METHOD__ )
39 ->fetchResultSet();
40
41 $editSummaries = [];
42 $commentFormatter = $mwService->getCommentFormatter();
43 foreach ( $result as $row ) {
44 $revision = $revisionFactory->newRevisionFromRow( $row );
45 $comment = $revision->getComment();
46
47 // The result of getComment() may return null. In that case
48 // skip processing of the summary.
49 if ( !$comment ) {
50 continue;
51 }
52
53 $message = $commentFormatter->format( $comment->message->text() );
54
55 $editSummaries[] = [
56 'humanTimestamp' => $this->context->getLanguage()
57 ->getHumanTimestamp( new MWTimestamp( $revision->getTimestamp() ) ),
58 'timestamp' => $revision->getTimestamp(),
59 'summary' => $message,
60 'revisionId' => $revision->getId()
61 ];
62 }
63
64 return $editSummaries;
65 }
66}
Translation aid that provides last X edit summaries for a translation.
getData()
Translation aid class should implement this function.