ApiQueryRecentChanges: Fetch comment fields if rctoken is used
authorBrad Jorsch <bjorsch@wikimedia.org>
Thu, 7 Sep 2017 20:58:57 +0000 (16:58 -0400)
committerChad <chadh@wikimedia.org>
Thu, 7 Sep 2017 21:11:39 +0000 (21:11 +0000)
When the deprecated rctoken parameter is used, the module calls
RecentChange::newFromRow(), which now requires that the comment fields
be present.

Bug: T175307
Change-Id: Ida025f419e43809c34fff386f1a1ee8881393b80
(cherry picked from commit 5ec0132821f4dca98a53b466a3d35b7a2853c616)

includes/api/ApiQueryRecentChanges.php

index 9af4e3e..63e0748 100644 (file)
@@ -287,14 +287,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        );
                        $showRedirects = $this->fld_redirect || isset( $show['redirect'] )
                                || isset( $show['!redirect'] );
-
-                       if ( $this->fld_comment || $this->fld_parsedcomment ) {
-                               $this->commentStore = new CommentStore( 'rc_comment' );
-                               $commentQuery = $this->commentStore->getJoin();
-                               $this->addTables( $commentQuery['tables'] );
-                               $this->addFields( $commentQuery['fields'] );
-                               $this->addJoinConds( $commentQuery['joins'] );
-                       }
                }
                $this->addFieldsIf( [ 'rc_this_oldid' ],
                        $resultPageSet && $params['generaterevisions'] );
@@ -360,6 +352,15 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                }
 
                $this->token = $params['token'];
+
+               if ( $this->fld_comment || $this->fld_parsedcomment || $this->token ) {
+                       $this->commentStore = new CommentStore( 'rc_comment' );
+                       $commentQuery = $this->commentStore->getJoin();
+                       $this->addTables( $commentQuery['tables'] );
+                       $this->addFields( $commentQuery['fields'] );
+                       $this->addJoinConds( $commentQuery['joins'] );
+               }
+
                $this->addOption( 'LIMIT', $params['limit'] + 1 );
 
                $hookData = [];