Merge "Add tags for undo edits"
[lhc/web/wiklou.git] / includes / widget / search / SimpleSearchResultWidget.php
1 <?php
2
3 namespace MediaWiki\Widget\Search;
4
5 use HtmlArmor;
6 use MediaWiki\Linker\LinkRenderer;
7 use SearchResult;
8 use SpecialSearch;
9
10 /**
11 * Renders a simple one-line result
12 */
13 class SimpleSearchResultWidget implements SearchResultWidget {
14 /** @var SpecialSearch */
15 protected $specialSearch;
16 /** @var LinkRenderer */
17 protected $linkRenderer;
18
19 public function __construct( SpecialSearch $specialSearch, LinkRenderer $linkRenderer ) {
20 $this->specialSearch = $specialSearch;
21 $this->linkRenderer = $linkRenderer;
22 }
23
24 /**
25 * @param SearchResult $result The result to render
26 * @param string $terms Terms to be highlighted (@see SearchResult::getTextSnippet)
27 * @param int $position The result position, including offset
28 * @return string HTML
29 */
30 public function render( SearchResult $result, $terms, $position ) {
31 $title = $result->getTitle();
32 $titleSnippet = $result->getTitleSnippet();
33 if ( $titleSnippet ) {
34 $titleSnippet = new HtmlArmor( $titleSnippet );
35 } else {
36 $titleSnippet = null;
37 }
38
39 $link = $this->linkRenderer->makeLink( $title, $titleSnippet );
40
41 $redirectTitle = $result->getRedirectTitle();
42 $redirect = '';
43 if ( $redirectTitle !== null ) {
44 $redirectText = $result->getRedirectSnippet();
45 if ( $redirectText ) {
46 $redirectText = new HtmlArmor( $redirectText );
47 } else {
48 $redirectText = null;
49 }
50 $redirect =
51 "<span class='searchalttitle'>" .
52 $this->specialSearch->msg( 'search-redirect' )->rawParams(
53 $this->linkRenderer->makeLink( $redirectTitle, $redirectText )
54 )->parse() .
55 "</span>";
56 }
57
58 return "<li>{$link} {$redirect}</li>";
59 }
60 }