<?php
/**
- *
- *
- * Created on Sep 25, 2006
- *
* Copyright © 2006 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
*
* This program is free software; you can redistribute it and/or modify
*/
class ApiQueryWatchlist extends ApiQueryGeneratorBase {
+ /** @var CommentStore */
private $commentStore;
public function __construct( ApiQuery $query, $moduleName ) {
$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
$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() ) {
}
if ( $this->fld_comment || $this->fld_parsedcomment ) {
- $this->commentStore = new CommentStore( 'rc_comment' );
+ $this->commentStore = CommentStore::getStore();
}
}
}
if ( $this->fld_patrol ) {
$includeFields[] = WatchedItemQueryService::INCLUDE_PATROL_INFO;
+ $includeFields[] = WatchedItemQueryService::INCLUDE_AUTOPATROL_INFO;
}
if ( $this->fld_sizes ) {
$includeFields[] = WatchedItemQueryService::INCLUDE_SIZES;
if ( $this->fld_loginfo ) {
$includeFields[] = WatchedItemQueryService::INCLUDE_LOG_INFO;
}
+ if ( $this->fld_tags ) {
+ $includeFields[] = WatchedItemQueryService::INCLUDE_TAGS;
+ }
return $includeFields;
}
&& 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. */
Revision::DELETED_COMMENT,
$user
) ) {
- $comment = $this->commentStore->getComment( $recentChangeInfo )->text;
+ $comment = $this->commentStore->getComment( 'rc_comment', $recentChangeInfo )->text;
if ( $this->fld_comment ) {
$vals['comment'] = $comment;
}
/* 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 ) {
}
}
+ 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;
}
'sizes',
'notificationtimestamp',
'loginfo',
+ 'tags',
]
],
'show' => [
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,
]