jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/395821 )

Change subject: Add edit tags to list=watchlist
......................................................................


Add edit tags to list=watchlist

It is using the same query as list=recentchanges by left joining
tag_summary

Bug: T181975
Change-Id: I9e9ab9753ec0f813e9e555106cc81fd15ad9fb4a
---
M includes/api/ApiQueryWatchlist.php
M includes/api/i18n/en.json
M includes/api/i18n/qqq.json
M includes/watcheditem/WatchedItemQueryService.php
4 files changed, 29 insertions(+), 1 deletion(-)

Approvals:
  jenkins-bot: Verified
  Anomie: Looks good to me, approved



diff --git a/includes/api/ApiQueryWatchlist.php 
b/includes/api/ApiQueryWatchlist.php
index 1e3b2c7..710550a 100644
--- a/includes/api/ApiQueryWatchlist.php
+++ b/includes/api/ApiQueryWatchlist.php
@@ -53,7 +53,7 @@
                $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
@@ -82,6 +82,7 @@
                        $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() ) {
@@ -243,6 +244,9 @@
                if ( $this->fld_loginfo ) {
                        $includeFields[] = 
WatchedItemQueryService::INCLUDE_LOG_INFO;
                }
+               if ( $this->fld_tags ) {
+                       $includeFields[] = 
WatchedItemQueryService::INCLUDE_TAGS;
+               }
                return $includeFields;
        }
 
@@ -391,6 +395,16 @@
                        }
                }
 
+               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;
                }
@@ -453,6 +467,7 @@
                                        'sizes',
                                        'notificationtimestamp',
                                        'loginfo',
+                                       'tags',
                                ]
                        ],
                        'show' => [
diff --git a/includes/api/i18n/en.json b/includes/api/i18n/en.json
index cceed01..a897f06 100644
--- a/includes/api/i18n/en.json
+++ b/includes/api/i18n/en.json
@@ -1331,6 +1331,7 @@
        "apihelp-query+watchlist-paramvalue-prop-sizes": "Adds the old and new 
lengths of the page.",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Adds 
timestamp of when the user was last notified about the edit.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Adds log 
information where appropriate.",
+       "apihelp-query+watchlist-paramvalue-prop-tags": "Lists tags for the 
entry.",
        "apihelp-query+watchlist-param-show": "Show only items that meet these 
criteria. For example, to see only minor edits done by logged-in users, set 
$1show=minor|!anon.",
        "apihelp-query+watchlist-param-type": "Which types of changes to show:",
        "apihelp-query+watchlist-paramvalue-type-edit": "Regular page edits.",
diff --git a/includes/api/i18n/qqq.json b/includes/api/i18n/qqq.json
index d21f29c..1e4bfc8 100644
--- a/includes/api/i18n/qqq.json
+++ b/includes/api/i18n/qqq.json
@@ -1245,6 +1245,7 @@
        "apihelp-query+watchlist-paramvalue-prop-sizes": 
"{{doc-apihelp-paramvalue|query+watchlist|prop|sizes}}",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": 
"{{doc-apihelp-paramvalue|query+watchlist|prop|notificationtimestamp}}",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": 
"{{doc-apihelp-paramvalue|query+watchlist|prop|loginfo}}",
+       "apihelp-query+watchlist-paramvalue-prop-tags": 
"{{doc-apihelp-paramvalue|query+watchlist|prop|tags}}",
        "apihelp-query+watchlist-param-show": 
"{{doc-apihelp-param|query+watchlist|show}}",
        "apihelp-query+watchlist-param-type": 
"{{doc-apihelp-param|query+watchlist|type}}",
        "apihelp-query+watchlist-paramvalue-type-edit": 
"{{doc-apihelp-paramvalue|query+watchlist|type|edit}}",
diff --git a/includes/watcheditem/WatchedItemQueryService.php 
b/includes/watcheditem/WatchedItemQueryService.php
index d0f45be..3478b08 100644
--- a/includes/watcheditem/WatchedItemQueryService.php
+++ b/includes/watcheditem/WatchedItemQueryService.php
@@ -27,6 +27,7 @@
        const INCLUDE_PATROL_INFO = 'patrol';
        const INCLUDE_SIZES = 'sizes';
        const INCLUDE_LOG_INFO = 'loginfo';
+       const INCLUDE_TAGS = 'tags';
 
        // FILTER_* constants are part of public API (are used in 
ApiQueryWatchlist and
        // ApiQueryWatchlistRaw classes) and should not be changed.
@@ -335,6 +336,9 @@
                if ( in_array( self::INCLUDE_COMMENT, $options['includeFields'] 
) ) {
                        $tables += 
$this->getCommentStore()->getJoin()['tables'];
                }
+               if ( in_array( self::INCLUDE_TAGS, $options['includeFields'] ) 
) {
+                       $tables[] = 'tag_summary';
+               }
                return $tables;
        }
 
@@ -383,6 +387,10 @@
                }
                if ( in_array( self::INCLUDE_LOG_INFO, 
$options['includeFields'] ) ) {
                        $fields = array_merge( $fields, [ 'rc_logid', 
'rc_log_type', 'rc_log_action', 'rc_params' ] );
+               }
+               if ( in_array( self::INCLUDE_TAGS, $options['includeFields'] ) 
) {
+                       // prefixed with rc_ to include the field in 
getRecentChangeFieldsFromRow
+                       $fields['rc_tags'] = 'ts_tags';
                }
 
                return $fields;
@@ -678,6 +686,9 @@
                if ( in_array( self::INCLUDE_COMMENT, $options['includeFields'] 
) ) {
                        $joinConds += 
$this->getCommentStore()->getJoin()['joins'];
                }
+               if ( in_array( self::INCLUDE_TAGS, $options['includeFields'] ) 
) {
+                       $joinConds['tag_summary'] = [ 'LEFT JOIN', [ 
'rc_id=ts_rc_id' ] ];
+               }
                return $joinConds;
        }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/395821
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I9e9ab9753ec0f813e9e555106cc81fd15ad9fb4a
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Umherirrender <umherirrender_de...@web.de>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Anomie <bjor...@wikimedia.org>
Gerrit-Reviewer: Schnark <listenle...@gmail.com>
Gerrit-Reviewer: Umherirrender <umherirrender_de...@web.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to