* @ingroup SpecialPage
*/
+use MediaWiki\MediaWikiServices;
+
/**
* A special page looking for articles with no article linking to them,
* thus being lonely.
}
function getQueryInfo() {
- return array(
- 'tables' => array(
- 'page', 'pagelinks',
- 'templatelinks'
- ),
- 'fields' => array(
+ $tables = [ 'page', 'pagelinks', 'templatelinks' ];
+ $conds = [
+ 'pl_namespace IS NULL',
+ 'page_namespace' => MediaWikiServices::getInstance()->getNamespaceInfo()->
+ getContentNamespaces(),
+ 'page_is_redirect' => 0,
+ 'tl_namespace IS NULL'
+ ];
+ $joinConds = [
+ 'pagelinks' => [
+ 'LEFT JOIN', [
+ 'pl_namespace = page_namespace',
+ 'pl_title = page_title'
+ ]
+ ],
+ 'templatelinks' => [
+ 'LEFT JOIN', [
+ 'tl_namespace = page_namespace',
+ 'tl_title = page_title'
+ ]
+ ]
+ ];
+
+ // Allow extensions to modify the query
+ Hooks::run( 'LonelyPagesQuery', [ &$tables, &$conds, &$joinConds ] );
+
+ return [
+ 'tables' => $tables,
+ 'fields' => [
'namespace' => 'page_namespace',
'title' => 'page_title',
'value' => 'page_title'
- ),
- 'conds' => array(
- 'pl_namespace IS NULL',
- 'page_namespace' => MWNamespace::getContentNamespaces(),
- 'page_is_redirect' => 0,
- 'tl_namespace IS NULL'
- ),
- 'join_conds' => array(
- 'pagelinks' => array(
- 'LEFT JOIN', array(
- 'pl_namespace = page_namespace',
- 'pl_title = page_title'
- )
- ),
- 'templatelinks' => array(
- 'LEFT JOIN', array(
- 'tl_namespace = page_namespace',
- 'tl_title = page_title'
- )
- )
- )
- );
+ ],
+ 'conds' => $conds,
+ 'join_conds' => $joinConds
+ ];
}
function getOrderFields() {
// For some crazy reason ordering by a constant
// causes a filesort in MySQL 5
- if ( count( MWNamespace::getContentNamespaces() ) > 1 ) {
- return array( 'page_namespace', 'page_title' );
+ if ( count( MediaWikiServices::getInstance()->getNamespaceInfo()->
+ getContentNamespaces() ) > 1
+ ) {
+ return [ 'page_namespace', 'page_title' ];
} else {
- return array( 'page_title' );
+ return [ 'page_title' ];
}
}