Pass a LinkRenderer instance from SpecialLog, through LogEventsList,
onto LogFormatter instances, which tend to make many links.
Bug: T168924
Change-Id: I264da6f63678917c7335adee5a0b64cbcded66f3
+use MediaWiki\Linker\LinkRenderer;
use MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\IDatabase;
use MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\IDatabase;
*/
protected $allowedActions = null;
*/
protected $allowedActions = null;
+ /**
+ * @var LinkRenderer|null
+ */
+ private $linkRenderer;
+
/**
* Constructor.
* The first two parameters used to be $skin and $out, but now only a context
/**
* Constructor.
* The first two parameters used to be $skin and $out, but now only a context
*
* @param IContextSource|Skin $context Context to use; formerly it was
* a Skin object. Use of Skin is deprecated.
*
* @param IContextSource|Skin $context Context to use; formerly it was
* a Skin object. Use of Skin is deprecated.
- * @param null $unused Unused; used to be an OutputPage object.
+ * @param LinkRenderer|null $linkRenderer, previously unused
* @param int $flags Can be a combination of self::NO_ACTION_LINK,
* self::NO_EXTRA_USER_LINKS or self::USE_CHECKBOXES.
*/
* @param int $flags Can be a combination of self::NO_ACTION_LINK,
* self::NO_EXTRA_USER_LINKS or self::USE_CHECKBOXES.
*/
- public function __construct( $context, $unused = null, $flags = 0 ) {
+ public function __construct( $context, $linkRenderer = null, $flags = 0 ) {
if ( $context instanceof IContextSource ) {
$this->setContext( $context );
} else {
if ( $context instanceof IContextSource ) {
$this->setContext( $context );
} else {
$this->flags = $flags;
$this->showTagEditUI = ChangeTags::showTagEditingUI( $this->getUser() );
$this->flags = $flags;
$this->showTagEditUI = ChangeTags::showTagEditingUI( $this->getUser() );
+ if ( $linkRenderer instanceof LinkRenderer ) {
+ $this->linkRenderer = $linkRenderer;
+ }
+ }
+
+ /**
+ * @since 1.30
+ * @return LinkRenderer
+ */
+ protected function getLinkRenderer() {
+ if ( $this->linkRenderer !== null ) {
+ return $this->linkRenderer;
+ } else {
+ return MediaWikiServices::getInstance()->getLinkRenderer();
+ }
// Option value -> message mapping
$links = [];
$hiddens = ''; // keep track for "go" button
// Option value -> message mapping
$links = [];
$hiddens = ''; // keep track for "go" button
- $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
+ $linkRenderer = $this->getLinkRenderer();
foreach ( $filter as $type => $val ) {
// Should the below assignment be outside the foreach?
// Then it would have to be copied. Not certain what is more expensive.
foreach ( $filter as $type => $val ) {
// Should the below assignment be outside the foreach?
// Then it would have to be copied. Not certain what is more expensive.
$entry = DatabaseLogEntry::newFromRow( $row );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->getContext() );
$entry = DatabaseLogEntry::newFromRow( $row );
$formatter = LogFormatter::newFromEntry( $entry );
$formatter->setContext( $this->getContext() );
+ $formatter->setLinkRenderer( $this->getLinkRenderer() );
$formatter->setShowUserToolLinks( !( $this->flags & self::NO_EXTRA_USER_LINKS ) );
$time = htmlspecialchars( $this->getLanguage()->userTimeAndDate(
$formatter->setShowUserToolLinks( !( $this->flags & self::NO_EXTRA_USER_LINKS ) );
$time = htmlspecialchars( $this->getLanguage()->userTimeAndDate(
$context = RequestContext::getMain();
}
$context = RequestContext::getMain();
}
+ // FIXME: Figure out how to inject this
+ $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
+
# Insert list of top 50 (or top $lim) items
# Insert list of top 50 (or top $lim) items
- $loglist = new LogEventsList( $context, null, $flags );
+ $loglist = new LogEventsList( $context, $linkRenderer, $flags );
$pager = new LogPager( $loglist, $types, $user, $page, '', $conds );
if ( !$useRequestParams ) {
# Reset vars that may have been taken from the request
$pager = new LogPager( $loglist, $types, $user, $page, '', $conds );
if ( !$useRequestParams ) {
# Reset vars that may have been taken from the request
$urlParam = array_merge( $urlParam, $extraUrlParams );
}
$urlParam = array_merge( $urlParam, $extraUrlParams );
}
- $s .= MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink(
+ $s .= $linkRenderer->makeKnownLink(
SpecialPage::getTitleFor( 'Log' ),
$context->msg( 'log-fulllog' )->text(),
[],
SpecialPage::getTitleFor( 'Log' ),
$context->msg( 'log-fulllog' )->text(),
[],
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
* @since 1.19
*/
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
* @since 1.19
*/
+use MediaWiki\Linker\LinkRenderer;
+use MediaWiki\MediaWikiServices;
/**
* Implements the default log formatting.
/**
* Implements the default log formatting.
/** @var string */
protected $irctext = false;
/** @var string */
protected $irctext = false;
+ /**
+ * @var LinkRenderer|null
+ */
+ private $linkRenderer;
+
protected function __construct( LogEntry $entry ) {
$this->entry = $entry;
$this->context = RequestContext::getMain();
protected function __construct( LogEntry $entry ) {
$this->entry = $entry;
$this->context = RequestContext::getMain();
$this->context = $context;
}
$this->context = $context;
}
+ /**
+ * @since 1.30
+ * @param LinkRenderer $linkRenderer
+ */
+ public function setLinkRenderer( LinkRenderer $linkRenderer ) {
+ $this->linkRenderer = $linkRenderer;
+ }
+
+ /**
+ * @since 1.30
+ * @return LinkRenderer
+ */
+ public function getLinkRenderer() {
+ if ( $this->linkRenderer !== null ) {
+ return $this->linkRenderer;
+ } else {
+ return MediaWikiServices::getInstance()->getLinkRenderer();
+ }
+ }
+
/**
* Set the visibility restrictions for displaying content.
* If set to public, and an item is deleted, then it will be replaced
/**
* Set the visibility restrictions for displaying content.
* If set to public, and an item is deleted, then it will be replaced
# Create a LogPager item to get the results and a LogEventsList item to format them...
$loglist = new LogEventsList(
$this->getContext(),
# Create a LogPager item to get the results and a LogEventsList item to format them...
$loglist = new LogEventsList(
$this->getContext(),
+ $this->getLinkRenderer(),
LogEventsList::USE_CHECKBOXES
);
LogEventsList::USE_CHECKBOXES
);