mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/DiscussionTools
synced 2024-11-28 02:00:57 +00:00
e72f58ca78
Inspired by this Wikitech-l discussion: https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/NWXPNHRNLEVXHSWX33H473OAWQP6CDOA/ To keep this simple for now, I am only removing redundant PHPDoc comments on constructors, and only when all the documentation for parameters completely duplicates type hints. More could be done, but that can happen later when we have better tooling. Redundant comments on constructors that take a dozen services are by far the most annoying for me and I want them gone now. Change-Id: I86cbf7d6e48035cfa06f780c8fb1b02e68709a0c
71 lines
1.8 KiB
PHP
71 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Extension\DiscussionTools;
|
|
|
|
use MediaWiki\Extension\DiscussionTools\ThreadItem\DatabaseThreadItem;
|
|
use MediaWiki\Linker\LinkRenderer;
|
|
use MessageLocalizer;
|
|
use TitleFormatter;
|
|
use TitleValue;
|
|
|
|
/**
|
|
* Displays links to comments and headings represented as ThreadItems.
|
|
*/
|
|
class ThreadItemFormatter {
|
|
|
|
private TitleFormatter $titleFormatter;
|
|
private LinkRenderer $linkRenderer;
|
|
|
|
public function __construct(
|
|
TitleFormatter $titleFormatter,
|
|
LinkRenderer $linkRenderer
|
|
) {
|
|
$this->titleFormatter = $titleFormatter;
|
|
$this->linkRenderer = $linkRenderer;
|
|
}
|
|
|
|
/**
|
|
* Make a link to a thread item on the page.
|
|
*
|
|
* @param DatabaseThreadItem $item
|
|
* @return string
|
|
*/
|
|
public function makeLink( DatabaseThreadItem $item ): string {
|
|
$title = TitleValue::newFromPage( $item->getPage() )->createFragmentTarget( $item->getId() );
|
|
|
|
$query = [];
|
|
if ( !$item->getRevision()->isCurrent() ) {
|
|
$query['oldid'] = $item->getRevision()->getId();
|
|
}
|
|
|
|
$text = $this->titleFormatter->getPrefixedText( $title );
|
|
$link = $this->linkRenderer->makeLink( $title, $text, [], $query );
|
|
|
|
return $link;
|
|
}
|
|
|
|
/**
|
|
* Make a link to a thread item on the page, with additional information (used on special pages).
|
|
*
|
|
* @param DatabaseThreadItem $item
|
|
* @param MessageLocalizer $context
|
|
* @return string
|
|
*/
|
|
public function formatLine( DatabaseThreadItem $item, MessageLocalizer $context ): string {
|
|
$contents = [];
|
|
|
|
$contents[] = $this->makeLink( $item );
|
|
|
|
if ( !$item->getRevision()->isCurrent() ) {
|
|
$contents[] = $context->msg( 'discussiontools-findcomment-results-notcurrent' )->escaped();
|
|
}
|
|
|
|
if ( is_string( $item->getTranscludedFrom() ) ) {
|
|
$contents[] = $context->msg( 'discussiontools-findcomment-results-transcluded' )->escaped();
|
|
}
|
|
|
|
return implode( $context->msg( 'word-separator' )->escaped(), $contents );
|
|
}
|
|
|
|
}
|