Merge "installer: Say "APCu" for PHP >= 5.5"
[lhc/web/wiklou.git] / includes / api / ApiFeedContributions.php
index ced5f0c..9c3945e 100644 (file)
@@ -56,7 +56,8 @@ class ApiFeedContributions extends ApiBase {
                }
 
                $msg = wfMessage( 'Contributions' )->inContentLanguage()->text();
-               $feedTitle = $config->get( 'Sitename' ) . ' - ' . $msg . ' [' . $config->get( 'LanguageCode' ) . ']';
+               $feedTitle = $config->get( 'Sitename' ) . ' - ' . $msg .
+                       ' [' . $config->get( 'LanguageCode' ) . ']';
                $feedUrl = SpecialPage::getTitleFor( 'Contributions', $params['user'] )->getFullURL();
 
                $target = $params['user'] == 'newbies'
@@ -95,7 +96,10 @@ class ApiFeedContributions extends ApiBase {
                                if ( ++$count > $limit ) {
                                        break;
                                }
-                               $feedItems[] = $this->feedItem( $row );
+                               $item = $this->feedItem( $row );
+                               if ( $item !== null ) {
+                                       $feedItems[] = $item;
+                               }
                        }
                }
 
@@ -103,6 +107,23 @@ class ApiFeedContributions extends ApiBase {
        }
 
        protected function feedItem( $row ) {
+               // This hook is the api contributions equivalent to the
+               // ContributionsLineEnding hook. Hook implementers may cancel
+               // the hook to signal the user is not allowed to read this item.
+               $feedItem = null;
+               $hookResult = Hooks::run(
+                       'ApiFeedContributions::feedItem',
+                       array( $row, $this->getContext(), &$feedItem )
+               );
+               // Hook returned a valid feed item
+               if ( $feedItem instanceof FeedItem ) {
+                       return $feedItem;
+               // Hook was canceled and did not return a valid feed item
+               } elseif ( !$hookResult ) {
+                       return null;
+               }
+
+               // Hook completed and did not return a valid feed item
                $title = Title::makeTitle( intval( $row->page_namespace ), $row->page_title );
                if ( $title && $title->userCan( 'read', $this->getUser() ) ) {
                        $date = $row->rev_timestamp;
@@ -143,10 +164,10 @@ class ApiFeedContributions extends ApiBase {
                                // only textual content has a "source view".
                                $html = nl2br( htmlspecialchars( $content->getNativeData() ) );
                        } else {
-                               //XXX: we could get an HTML representation of the content via getParserOutput, but that may
+                               // XXX: we could get an HTML representation of the content via getParserOutput, but that may
                                //     contain JS magic and generally may not be suitable for inclusion in a feed.
                                //     Perhaps Content should have a getDescriptiveHtml method and/or a getSourceText method.
-                               //Compare also FeedUtils::formatDiffRow.
+                               // Compare also FeedUtils::formatDiffRow.
                                $html = '';
                        }