X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryWatchlist.php;h=bb09838efcc1eb72b31335d7175151aab7392012;hb=5e421703a2adaef3c4b6f0f92e89cdde63753cd2;hp=9883480500106bd6c4056baa92e317aea72488b8;hpb=6c9a2923fe1ee3a65cb027be5e781772f2b12fbd;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryWatchlist.php b/includes/api/ApiQueryWatchlist.php index 9883480500..bb09838efc 100644 --- a/includes/api/ApiQueryWatchlist.php +++ b/includes/api/ApiQueryWatchlist.php @@ -1,9 +1,5 @@ @gmail.com" * * This program is free software; you can redistribute it and/or modify @@ -34,6 +30,9 @@ use MediaWiki\MediaWikiServices; */ class ApiQueryWatchlist extends ApiQueryGeneratorBase { + /** @var CommentStore */ + private $commentStore; + public function __construct( ApiQuery $query, $moduleName ) { parent::__construct( $query, $moduleName, 'wl' ); } @@ -50,7 +49,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { $fld_flags = false, $fld_timestamp = false, $fld_user = false, $fld_comment = false, $fld_parsedcomment = false, $fld_sizes = false, $fld_notificationtimestamp = false, $fld_userid = false, - $fld_loginfo = false; + $fld_loginfo = false, $fld_tags; /** * @param ApiPageSet $resultPageSet @@ -79,12 +78,17 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { $this->fld_patrol = isset( $prop['patrol'] ); $this->fld_notificationtimestamp = isset( $prop['notificationtimestamp'] ); $this->fld_loginfo = isset( $prop['loginfo'] ); + $this->fld_tags = isset( $prop['tags'] ); if ( $this->fld_patrol ) { if ( !$user->useRCPatrol() && !$user->useNPPatrol() ) { $this->dieWithError( 'apierror-permissiondenied-patrolflag', 'patrol' ); } } + + if ( $this->fld_comment || $this->fld_parsedcomment ) { + $this->commentStore = CommentStore::getStore(); + } } $options = [ @@ -229,6 +233,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { } if ( $this->fld_patrol ) { $includeFields[] = WatchedItemQueryService::INCLUDE_PATROL_INFO; + $includeFields[] = WatchedItemQueryService::INCLUDE_AUTOPATROL_INFO; } if ( $this->fld_sizes ) { $includeFields[] = WatchedItemQueryService::INCLUDE_SIZES; @@ -236,6 +241,9 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { if ( $this->fld_loginfo ) { $includeFields[] = WatchedItemQueryService::INCLUDE_LOG_INFO; } + if ( $this->fld_tags ) { + $includeFields[] = WatchedItemQueryService::INCLUDE_TAGS; + } return $includeFields; } @@ -248,16 +256,17 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { && isset( $show[WatchedItemQueryService::FILTER_NOT_ANON] ) ) || ( isset( $show[WatchedItemQueryService::FILTER_PATROLLED] ) && isset( $show[WatchedItemQueryService::FILTER_NOT_PATROLLED] ) ) + || ( isset( $show[WatchedItemQueryService::FILTER_AUTOPATROLLED] ) + && isset( $show[WatchedItemQueryService::FILTER_NOT_AUTOPATROLLED] ) ) + || ( isset( $show[WatchedItemQueryService::FILTER_AUTOPATROLLED] ) + && isset( $show[WatchedItemQueryService::FILTER_NOT_PATROLLED] ) ) || ( isset( $show[WatchedItemQueryService::FILTER_UNREAD] ) && isset( $show[WatchedItemQueryService::FILTER_NOT_UNREAD] ) ); } private function extractOutputData( WatchedItem $watchedItem, array $recentChangeInfo ) { /* Determine the title of the page that has been changed. */ - $title = Title::makeTitle( - $watchedItem->getLinkTarget()->getNamespace(), - $watchedItem->getLinkTarget()->getDBkey() - ); + $title = Title::newFromLinkTarget( $watchedItem->getLinkTarget() ); $user = $this->getUser(); /* Our output data. */ @@ -353,20 +362,22 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { Revision::DELETED_COMMENT, $user ) ) { - if ( $this->fld_comment && isset( $recentChangeInfo['rc_comment'] ) ) { - $vals['comment'] = $recentChangeInfo['rc_comment']; + $comment = $this->commentStore->getComment( 'rc_comment', $recentChangeInfo )->text; + if ( $this->fld_comment ) { + $vals['comment'] = $comment; } - if ( $this->fld_parsedcomment && isset( $recentChangeInfo['rc_comment'] ) ) { - $vals['parsedcomment'] = Linker::formatComment( $recentChangeInfo['rc_comment'], $title ); + if ( $this->fld_parsedcomment ) { + $vals['parsedcomment'] = Linker::formatComment( $comment, $title ); } } } /* Add the patrolled flag */ if ( $this->fld_patrol ) { - $vals['patrolled'] = $recentChangeInfo['rc_patrolled'] == 1; + $vals['patrolled'] = $recentChangeInfo['rc_patrolled'] != RecentChange::PRC_UNPATROLLED; $vals['unpatrolled'] = ChangesList::isUnpatrolled( (object)$recentChangeInfo, $user ); + $vals['autopatrolled'] = $recentChangeInfo['rc_patrolled'] == RecentChange::PRC_AUTOPATROLLED; } if ( $this->fld_loginfo && $recentChangeInfo['rc_type'] == RC_LOG ) { @@ -386,6 +397,16 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { } } + if ( $this->fld_tags ) { + if ( $recentChangeInfo['rc_tags'] ) { + $tags = explode( ',', $recentChangeInfo['rc_tags'] ); + ApiResult::setIndexedTagName( $tags, 'tag' ); + $vals['tags'] = $tags; + } else { + $vals['tags'] = []; + } + } + if ( $anyHidden && ( $recentChangeInfo['rc_deleted'] & Revision::DELETED_RESTRICTED ) ) { $vals['suppressed'] = true; } @@ -448,6 +469,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { 'sizes', 'notificationtimestamp', 'loginfo', + 'tags', ] ], 'show' => [ @@ -461,6 +483,8 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { WatchedItemQueryService::FILTER_NOT_ANON, WatchedItemQueryService::FILTER_PATROLLED, WatchedItemQueryService::FILTER_NOT_PATROLLED, + WatchedItemQueryService::FILTER_AUTOPATROLLED, + WatchedItemQueryService::FILTER_NOT_AUTOPATROLLED, WatchedItemQueryService::FILTER_UNREAD, WatchedItemQueryService::FILTER_NOT_UNREAD, ]