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 )
);
}