X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;ds=sidebyside;f=includes%2Fchanges%2FRCCacheEntryFactory.php;h=2c5c8b128c9ee7f7c6338deba966c6ff39a4a2ad;hb=90cfe33631568af839d79438f3f48c2397853970;hp=c3fe183e1fed23a1a27d721a6f03471fe419ee58;hpb=4f1390819a8fcd91c0c34449736fff4548032ad3;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/changes/RCCacheEntryFactory.php b/includes/changes/RCCacheEntryFactory.php index c3fe183e1f..2c5c8b128c 100644 --- a/includes/changes/RCCacheEntryFactory.php +++ b/includes/changes/RCCacheEntryFactory.php @@ -19,6 +19,7 @@ * * @file */ +use MediaWiki\Linker\LinkRenderer; class RCCacheEntryFactory { @@ -28,13 +29,22 @@ class RCCacheEntryFactory { /* @var string[] */ private $messages; + /** + * @var LinkRenderer + */ + private $linkRenderer; + /** * @param IContextSource $context * @param string[] $messages + * @param LinkRenderer $linkRenderer */ - public function __construct( IContextSource $context, $messages ) { + public function __construct( + IContextSource $context, $messages, LinkRenderer $linkRenderer + ) { $this->context = $context; $this->messages = $messages; + $this->linkRenderer = $linkRenderer; } /** @@ -99,7 +109,7 @@ class RCCacheEntryFactory { // New unpatrolled pages if ( $cacheEntry->unpatrolled && $type == RC_NEW ) { - $clink = Linker::linkKnown( $cacheEntry->getTitle() ); + $clink = $this->linkRenderer->makeKnownLink( $cacheEntry->getTitle() ); // Log entries } elseif ( $type == RC_LOG ) { $logType = $cacheEntry->mAttribs['rc_log_type']; @@ -108,7 +118,7 @@ class RCCacheEntryFactory { $clink = $this->getLogLink( $logType ); } else { wfDebugLog( 'recentchanges', 'Unexpected log entry with no log type in recent changes' ); - $clink = Linker::link( $cacheEntry->getTitle() ); + $clink = $this->linkRenderer->makeLink( $cacheEntry->getTitle() ); } // Log entries (old format) and special pages } elseif ( $cacheEntry->mAttribs['rc_namespace'] == NS_SPECIAL ) { @@ -116,7 +126,7 @@ class RCCacheEntryFactory { $clink = ''; // Edits } else { - $clink = Linker::linkKnown( $cacheEntry->getTitle() ); + $clink = $this->linkRenderer->makeKnownLink( $cacheEntry->getTitle() ); } return $clink; @@ -125,10 +135,12 @@ class RCCacheEntryFactory { private function getLogLink( $logType ) { $logtitle = SpecialPage::getTitleFor( 'Log', $logType ); $logpage = new LogPage( $logType ); - $logname = $logpage->getName()->escaped(); + $logname = $logpage->getName()->text(); $logLink = $this->context->msg( 'parentheses' ) - ->rawParams( Linker::linkKnown( $logtitle, $logname ) )->escaped(); + ->rawParams( + $this->linkRenderer->makeKnownLink( $logtitle, $logname ) + )->escaped(); return $logLink; } @@ -151,11 +163,11 @@ class RCCacheEntryFactory { * @return array */ private function buildCurQueryParams( RecentChange $recentChange ) { - return array( + return [ 'curid' => $recentChange->mAttribs['rc_cur_id'], 'diff' => 0, 'oldid' => $recentChange->mAttribs['rc_this_oldid'] - ); + ]; } /** @@ -168,13 +180,13 @@ class RCCacheEntryFactory { private function buildCurLink( RecentChange $cacheEntry, $showDiffLinks, $counter ) { $queryParams = $this->buildCurQueryParams( $cacheEntry ); $curMessage = $this->getMessage( 'cur' ); - $logTypes = array( RC_LOG ); + $logTypes = [ RC_LOG ]; if ( !$showDiffLinks || in_array( $cacheEntry->mAttribs['rc_type'], $logTypes ) ) { $curLink = $curMessage; } else { $curUrl = htmlspecialchars( $cacheEntry->getTitle()->getLinkURL( $queryParams ) ); - $curLink = "$curMessage"; + $curLink = "$curMessage"; } return $curLink; @@ -186,11 +198,11 @@ class RCCacheEntryFactory { * @return array */ private function buildDiffQueryParams( RecentChange $recentChange ) { - return array( + return [ 'curid' => $recentChange->mAttribs['rc_cur_id'], 'diff' => $recentChange->mAttribs['rc_this_oldid'], 'oldid' => $recentChange->mAttribs['rc_last_oldid'] - ); + ]; } /** @@ -203,15 +215,24 @@ class RCCacheEntryFactory { private function buildDiffLink( RecentChange $cacheEntry, $showDiffLinks, $counter ) { $queryParams = $this->buildDiffQueryParams( $cacheEntry ); $diffMessage = $this->getMessage( 'diff' ); - $logTypes = array( RC_NEW, RC_LOG ); + $logTypes = [ RC_NEW, RC_LOG ]; if ( !$showDiffLinks ) { $diffLink = $diffMessage; } elseif ( in_array( $cacheEntry->mAttribs['rc_type'], $logTypes ) ) { $diffLink = $diffMessage; + } elseif ( $cacheEntry->getAttribute( 'rc_type' ) == RC_CATEGORIZE ) { + $rcCurId = $cacheEntry->getAttribute( 'rc_cur_id' ); + $pageTitle = Title::newFromID( $rcCurId ); + if ( $pageTitle === null ) { + wfDebugLog( 'RCCacheEntryFactory', 'Could not get Title for rc_cur_id: ' . $rcCurId ); + return $diffMessage; + } + $diffUrl = htmlspecialchars( $pageTitle->getLinkURL( $queryParams ) ); + $diffLink = "$diffMessage"; } else { $diffUrl = htmlspecialchars( $cacheEntry->getTitle()->getLinkURL( $queryParams ) ); - $diffLink = "$diffMessage"; + $diffLink = "$diffMessage"; } return $diffLink; @@ -227,16 +248,16 @@ class RCCacheEntryFactory { $lastOldid = $cacheEntry->mAttribs['rc_last_oldid']; $lastMessage = $this->getMessage( 'last' ); $type = $cacheEntry->mAttribs['rc_type']; - $logTypes = array( RC_LOG ); + $logTypes = [ RC_LOG ]; // Make "last" link if ( !$showDiffLinks || !$lastOldid || in_array( $type, $logTypes ) ) { $lastLink = $lastMessage; } else { - $lastLink = Linker::linkKnown( + $lastLink = $this->linkRenderer->makeKnownLink( $cacheEntry->getTitle(), - $lastMessage, - array(), + new HtmlArmor( $lastMessage ), + [], $this->buildDiffQueryParams( $cacheEntry ) ); }