$module = new ApiMain( $fauxReq );
$module->execute();
- // Get data array
- $data = $module->getResultData();
-
+ $data = $module->getResult()->getResultData( array( 'query', 'watchlist' ) );
$feedItems = array();
- foreach ( (array)$data['query']['watchlist'] as $info ) {
- $feedItems[] = $this->createFeedItem( $info );
+ foreach ( (array)$data as $key => $info ) {
+ if ( ApiResult::isMetadataKey( $key ) ) {
+ continue;
+ }
+ $feedItem = $this->createFeedItem( $info );
+ if ( $feedItem ) {
+ $feedItems[] = $feedItem;
+ }
}
$msg = wfMessage( 'watchlist' )->inContentLanguage()->text();
- $feedTitle = $this->getConfig()->get( 'Sitename' ) . ' - ' . $msg . ' [' . $this->getConfig()->get( 'LanguageCode' ) . ']';
+ $feedTitle = $this->getConfig()->get( 'Sitename' ) . ' - ' . $msg .
+ ' [' . $this->getConfig()->get( 'LanguageCode' ) . ']';
$feedUrl = SpecialPage::getTitleFor( 'Watchlist' )->getFullURL();
$feed = new $feedClasses[$params['feedformat']] (
* @return FeedItem
*/
private function createFeedItem( $info ) {
+ if ( !isset( $info['title'] ) ) {
+ // Probably a revdeled log entry, skip it.
+ return null;
+ }
+
$titleStr = $info['title'];
$title = Title::newFromText( $titleStr );
+ $curidParam = array();
+ if ( !$title || $title->isExternal() ) {
+ // Probably a formerly-valid title that's now conflicting with an
+ // interwiki prefix or the like.
+ if ( isset( $info['pageid'] ) ) {
+ $title = Title::newFromId( $info['pageid'] );
+ $curidParam = array( 'curid' => $info['pageid'] );
+ }
+ if ( !$title || $title->isExternal() ) {
+ return null;
+ }
+ }
if ( isset( $info['revid'] ) ) {
$titleUrl = $title->getFullURL( array( 'diff' => $info['revid'] ) );
} else {
- $titleUrl = $title->getFullURL();
+ $titleUrl = $title->getFullURL( $curidParam );
}
$comment = isset( $info['comment'] ) ? $info['comment'] : null;
}
$timestamp = $info['timestamp'];
- $user = $info['user'];
- $completeText = "$comment ($user)";
+ if ( isset( $info['user'] ) ) {
+ $user = $info['user'];
+ $completeText = "$comment ($user)";
+ } else {
+ $user = '';
+ $completeText = (string)$comment;
+ }
return new FeedItem( $titleStr, $completeText, $titleUrl, $timestamp, $user );
}