X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FChangesFeed.php;h=ee4c2d647d864eb2cef581c265f5b9403733b4bc;hb=4999ee2dbfa97692843e207bdb35a0f1d4695e5d;hp=23fb92392182897fa44ad383e82c8d1a02f3cdf6;hpb=7d4f219963fca224e52747ed12b6288c6d5eae2e;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ChangesFeed.php b/includes/ChangesFeed.php index 23fb923921..ee4c2d647d 100644 --- a/includes/ChangesFeed.php +++ b/includes/ChangesFeed.php @@ -1,4 +1,24 @@ format, $wgFeedClasses ) ) { + // falling back to atom + $this->format = 'atom'; + } + $feedTitle = "$wgSitename - {$title} [$wgLanguageCode]"; return new $wgFeedClasses[$this->format]( $feedTitle, htmlspecialchars( $description ), $url ); @@ -46,13 +71,13 @@ class ChangesFeed { * @param $rows ResultWrapper object with rows in recentchanges table * @param $lastmod Integer: timestamp of the last item in the recentchanges table (only used for the cache key) * @param $opts FormOptions as in SpecialRecentChanges::getDefaultOptions() - * @return null or true + * @return null|bool True or null */ public function execute( $feed, $rows, $lastmod, $opts ) { global $wgLang, $wgRenderHashAppend; if ( !FeedUtils::checkFeedOutput( $this->format ) ) { - return; + return null; } $optionsHash = md5( serialize( $opts->getAllValues() ) ) . $wgRenderHashAppend; @@ -61,11 +86,11 @@ class ChangesFeed { FeedUtils::checkPurge( $timekey, $key ); - /* - * Bumping around loading up diffs can be pretty slow, so where - * possible we want to cache the feed output so the next visitor - * gets it quick too. - */ + /** + * Bumping around loading up diffs can be pretty slow, so where + * possible we want to cache the feed output so the next visitor + * gets it quick too. + */ $cachedFeed = $this->loadFromCache( $lastmod, $timekey, $key ); if( is_string( $cachedFeed ) ) { wfDebug( "RC: Outputting cached feed\n" ); @@ -102,7 +127,7 @@ class ChangesFeed { * @param $lastmod Integer: timestamp of the last item in the recentchanges table * @param $timekey String: memcached key of the last modification * @param $key String: memcached key of the content - * @return feed's content on cache hit or false on cache miss + * @return string|bool feed's content on cache hit or false on cache miss */ public function loadFromCache( $lastmod, $timekey, $key ) { global $wgFeedCacheTimeout, $wgOut, $messageMemc; @@ -110,12 +135,12 @@ class ChangesFeed { $feedLastmod = $messageMemc->get( $timekey ); if( ( $wgFeedCacheTimeout > 0 ) && $feedLastmod ) { - /* - * If the cached feed was rendered very recently, we may - * go ahead and use it even if there have been edits made - * since it was rendered. This keeps a swarm of requests - * from being too bad on a super-frequently edited wiki. - */ + /** + * If the cached feed was rendered very recently, we may + * go ahead and use it even if there have been edits made + * since it was rendered. This keeps a swarm of requests + * from being too bad on a super-frequently edited wiki. + */ $feedAge = time() - wfTimestamp( TS_UNIX, $feedLastmod ); $feedLastmodUnix = wfTimestamp( TS_UNIX, $feedLastmod ); @@ -149,6 +174,7 @@ class ChangesFeed { $n = 0; foreach( $rows as $obj ) { if( $n > 0 && + $obj->rc_type == RC_EDIT && $obj->rc_namespace >= 0 && $obj->rc_cur_id == $sorted[$n-1]->rc_cur_id && $obj->rc_user_text == $sorted[$n-1]->rc_user_text ) { @@ -164,12 +190,23 @@ class ChangesFeed { $talkpage = MWNamespace::canTalk( $obj->rc_namespace ) ? $title->getTalkPage()->getFullUrl() : ''; // Skip items with deleted content (avoids partially complete/inconsistent output) if( $obj->rc_deleted ) continue; + + if ( $obj->rc_this_oldid ) { + $url = $title->getFullURL( + 'diff=' . $obj->rc_this_oldid . + '&oldid=' . $obj->rc_last_oldid + ); + } else { + // log entry or something like that. + $url = $title->getFullURL(); + } + $item = new FeedItem( $title->getPrefixedText(), FeedUtils::formatDiff( $obj ), - $obj->rc_this_oldid ? $title->getFullURL( 'diff=' . $obj->rc_this_oldid . '&oldid=prev' ) : $title->getFullURL(), + $url, $obj->rc_timestamp, - ($obj->rc_deleted & Revision::DELETED_USER) ? wfMsgHtml('rev-deleted-user') : $obj->rc_user_text, + ( $obj->rc_deleted & Revision::DELETED_USER ) ? wfMessage( 'rev-deleted-user' )->escaped() : $obj->rc_user_text, $talkpage ); $feed->outItem( $item );