MediaWiki REL1_39
SpecialMostInterwikis.php
Go to the documentation of this file.
1<?php
28
35
37 private $namespaceInfo;
38
44 public function __construct(
45 NamespaceInfo $namespaceInfo,
46 ILoadBalancer $loadBalancer,
47 LinkBatchFactory $linkBatchFactory
48 ) {
49 parent::__construct( 'Mostinterwikis' );
50 $this->namespaceInfo = $namespaceInfo;
51 $this->setDBLoadBalancer( $loadBalancer );
52 $this->setLinkBatchFactory( $linkBatchFactory );
53 }
54
55 public function isExpensive() {
56 return true;
57 }
58
59 public function isSyndicated() {
60 return false;
61 }
62
63 public function getQueryInfo() {
64 return [
65 'tables' => [
66 'langlinks',
67 'page'
68 ], 'fields' => [
69 'namespace' => 'page_namespace',
70 'title' => 'page_title',
71 'value' => 'COUNT(*)'
72 ], 'conds' => [
73 'page_namespace' => $this->namespaceInfo->getContentNamespaces()
74 ], 'options' => [
75 'HAVING' => 'COUNT(*) > 1',
76 'GROUP BY' => [
77 'page_namespace',
78 'page_title'
79 ]
80 ], 'join_conds' => [
81 'page' => [
82 'LEFT JOIN',
83 'page_id = ll_from'
84 ]
85 ]
86 ];
87 }
88
95 public function preprocessResults( $db, $res ) {
97 }
98
104 public function formatResult( $skin, $result ) {
105 $title = Title::makeTitleSafe( $result->namespace, $result->title );
106 if ( !$title ) {
107 return Html::element(
108 'span',
109 [ 'class' => 'mw-invalidtitle' ],
111 $this->getContext(),
112 $result->namespace,
113 $result->title
114 )
115 );
116 }
117
118 $linkRenderer = $this->getLinkRenderer();
119 if ( $this->isCached() ) {
120 $link = $linkRenderer->makeLink( $title );
121 } else {
122 $link = $linkRenderer->makeKnownLink( $title );
123 }
124
125 $count = $this->msg( 'ninterwikis' )->numParams( $result->value )->escaped();
126
127 return $this->getLanguage()->specialList( $link, $count );
128 }
129
130 protected function getGroupName() {
131 return 'highuse';
132 }
133}
static getInvalidTitleDescription(IContextSource $context, $namespace, $title)
Get a message saying that an invalid title was encountered.
Definition Linker.php:189
This is a utility class for dealing with namespaces that encodes all the "magic" behaviors of them ba...
This is a class for doing query pages; since they're almost all the same, we factor out some of the f...
Definition QueryPage.php:42
executeLBFromResultWrapper(IResultWrapper $res, $ns=null)
Creates a new LinkBatch object, adds all pages from the passed result wrapper (MUST include title and...
setDBLoadBalancer(ILoadBalancer $loadBalancer)
isCached()
Whether or not the output of the page in question is retrieved from the database cache.
setLinkBatchFactory(LinkBatchFactory $linkBatchFactory)
A special page that listed pages that have highest interwiki count.
isSyndicated()
Sometimes we don't want to build rss / atom feeds.
getGroupName()
Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-gro...
getQueryInfo()
Subclasses return an SQL query here, formatted as an array with the following keys: tables => Table(s...
isExpensive()
Should this query page only be updated offline on large wikis?
preprocessResults( $db, $res)
Pre-fill the link cache.
__construct(NamespaceInfo $namespaceInfo, ILoadBalancer $loadBalancer, LinkBatchFactory $linkBatchFactory)
getContext()
Gets the context this SpecialPage is executed in.
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
getLanguage()
Shortcut to get user's language.
Basic database interface for live and lazy-loaded relation database handles.
Definition IDatabase.php:39
Create and track the database connections and transactions for a given database cluster.
Result wrapper for grabbing data queried from an IDatabase object.