[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/api/ -> ApiFormatFeedWrapper.php (source)

   1  <?php
   2  /**
   3   *
   4   *
   5   * Created on Sep 19, 2006
   6   *
   7   * Copyright © 2006 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
   8   *
   9   * This program is free software; you can redistribute it and/or modify
  10   * it under the terms of the GNU General Public License as published by
  11   * the Free Software Foundation; either version 2 of the License, or
  12   * (at your option) any later version.
  13   *
  14   * This program is distributed in the hope that it will be useful,
  15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17   * GNU General Public License for more details.
  18   *
  19   * You should have received a copy of the GNU General Public License along
  20   * with this program; if not, write to the Free Software Foundation, Inc.,
  21   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  22   * http://www.gnu.org/copyleft/gpl.html
  23   *
  24   * @file
  25   */
  26  
  27  /**
  28   * This printer is used to wrap an instance of the Feed class
  29   * @ingroup API
  30   */
  31  class ApiFormatFeedWrapper extends ApiFormatBase {
  32  
  33  	public function __construct( ApiMain $main ) {
  34          parent::__construct( $main, 'feed' );
  35      }
  36  
  37      /**
  38       * Call this method to initialize output data. See execute()
  39       * @param ApiResult $result
  40       * @param object $feed An instance of one of the $wgFeedClasses classes
  41       * @param array $feedItems Array of FeedItem objects
  42       */
  43  	public static function setResult( $result, $feed, $feedItems ) {
  44          // Store output in the Result data.
  45          // This way we can check during execution if any error has occurred
  46          // Disable size checking for this because we can't continue
  47          // cleanly; size checking would cause more problems than it'd
  48          // solve
  49          $result->addValue( null, '_feed', $feed, ApiResult::NO_SIZE_CHECK );
  50          $result->addValue( null, '_feeditems', $feedItems, ApiResult::NO_SIZE_CHECK );
  51      }
  52  
  53      /**
  54       * Feed does its own headers
  55       *
  56       * @return null
  57       */
  58  	public function getMimeType() {
  59          return null;
  60      }
  61  
  62      /**
  63       * Optimization - no need to sanitize data that will not be needed
  64       *
  65       * @return bool
  66       */
  67  	public function getNeedsRawData() {
  68          return true;
  69      }
  70  
  71      /**
  72       * ChannelFeed doesn't give us a method to print errors in a friendly
  73       * manner, so just punt errors to the default printer.
  74       * @return bool
  75       */
  76  	public function canPrintErrors() {
  77          return false;
  78      }
  79  
  80      /**
  81       * This class expects the result data to be in a custom format set by self::setResult()
  82       * $result['_feed'] - an instance of one of the $wgFeedClasses classes
  83       * $result['_feeditems'] - an array of FeedItem instances
  84       */
  85  	public function execute() {
  86          $data = $this->getResultData();
  87          if ( isset( $data['_feed'] ) && isset( $data['_feeditems'] ) ) {
  88              $feed = $data['_feed'];
  89              $items = $data['_feeditems'];
  90  
  91              $feed->outHeader();
  92              foreach ( $items as & $item ) {
  93                  $feed->outItem( $item );
  94              }
  95              $feed->outFooter();
  96          } else {
  97              // Error has occurred, print something useful
  98              ApiBase::dieDebug( __METHOD__, 'Invalid feed class/item' );
  99          }
 100      }
 101  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1