jenkins-bot has submitted this change and it was merged.

Change subject: API: Fix ApiFormatFeedWrapper
......................................................................


API: Fix ApiFormatFeedWrapper

With recent changes to the API, directly outputting text from execute()
in ApiFormatBase subclasses doesn't work anymore. Adjust
ApiFormatFeedWrapper for this new situation, and also handle headers in
initPrinter() where that belongs.

Bug: 72359
Change-Id: I4e4a2386858da6d87169deabaca763eeeacefbe9
---
M includes/api/ApiFormatFeedWrapper.php
1 file changed, 24 insertions(+), 0 deletions(-)

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



diff --git a/includes/api/ApiFormatFeedWrapper.php 
b/includes/api/ApiFormatFeedWrapper.php
index 9260006..3f53ed4 100644
--- a/includes/api/ApiFormatFeedWrapper.php
+++ b/includes/api/ApiFormatFeedWrapper.php
@@ -82,17 +82,41 @@
         * $result['_feed'] - an instance of one of the $wgFeedClasses classes
         * $result['_feeditems'] - an array of FeedItem instances
         */
+       public function initPrinter( $unused = false ) {
+               parent::initPrinter( $unused );
+
+               if ( $this->isDisabled() ) {
+                       return;
+               }
+
+               $data = $this->getResultData();
+               if ( isset( $data['_feed'] ) && isset( $data['_feeditems'] ) ) {
+                       $data['_feed']->httpHeaders();
+               } else {
+                       // Error has occurred, print something useful
+                       ApiBase::dieDebug( __METHOD__, 'Invalid feed 
class/item' );
+               }
+       }
+
+       /**
+        * This class expects the result data to be in a custom format set by 
self::setResult()
+        * $result['_feed'] - an instance of one of the $wgFeedClasses classes
+        * $result['_feeditems'] - an array of FeedItem instances
+        */
        public function execute() {
                $data = $this->getResultData();
                if ( isset( $data['_feed'] ) && isset( $data['_feeditems'] ) ) {
                        $feed = $data['_feed'];
                        $items = $data['_feeditems'];
 
+                       // execute() needs to pass strings to $this->printText, 
not produce output itself.
+                       ob_start();
                        $feed->outHeader();
                        foreach ( $items as & $item ) {
                                $feed->outItem( $item );
                        }
                        $feed->outFooter();
+                       $this->printText( ob_get_clean() );
                } else {
                        // Error has occurred, print something useful
                        ApiBase::dieDebug( __METHOD__, 'Invalid feed 
class/item' );

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I4e4a2386858da6d87169deabaca763eeeacefbe9
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Anomie <[email protected]>
Gerrit-Reviewer: Aaron Schulz <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to