gplx/mediawiki/includes/specials/SpecialWantedTemplates.php

91 lines
2.7 KiB
PHP

<?php
/**
* Copyright © 2008, Danny B.
* Based on SpecialWantedcategories.php by Ævar Arnfjörð Bjarmason <avarab@gmail.com>
* makeWlhLink() taken from SpecialMostlinkedtemplates by Rob Church <robchur@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
namespace MediaWiki\Specials;
use MediaWiki\Cache\LinkBatchFactory;
use MediaWiki\Linker\LinksMigration;
use MediaWiki\SpecialPage\WantedQueryPage;
use Wikimedia\Rdbms\IConnectionProvider;
/**
* List of the most wanted templates
*
* @ingroup SpecialPage
* @author Danny B.
*/
class SpecialWantedTemplates extends WantedQueryPage {
private LinksMigration $linksMigration;
/**
* @param IConnectionProvider $dbProvider
* @param LinkBatchFactory $linkBatchFactory
* @param LinksMigration $linksMigration
*/
public function __construct(
IConnectionProvider $dbProvider,
LinkBatchFactory $linkBatchFactory,
LinksMigration $linksMigration
) {
parent::__construct( 'Wantedtemplates' );
$this->setDatabaseProvider( $dbProvider );
$this->setLinkBatchFactory( $linkBatchFactory );
$this->linksMigration = $linksMigration;
}
public function getQueryInfo() {
$queryInfo = $this->linksMigration->getQueryInfo( 'templatelinks' );
[ $ns, $title ] = $this->linksMigration->getTitleFields( 'templatelinks' );
return [
'tables' => array_merge( $queryInfo['tables'], [ 'page' ] ),
'fields' => [
'namespace' => $ns,
'title' => $title,
'value' => 'COUNT(*)'
],
'conds' => [
'page_title' => null,
$ns => NS_TEMPLATE
],
'options' => [ 'GROUP BY' => [ $ns, $title ] ],
'join_conds' => array_merge(
[ 'page' => [ 'LEFT JOIN',
[ "page_namespace = $ns", "page_title = $title" ] ] ],
$queryInfo['joins']
)
];
}
protected function getGroupName() {
return 'maintenance';
}
}
/**
* Retain the old class name for backwards compatibility.
* @deprecated since 1.41
*/
class_alias( SpecialWantedTemplates::class, 'SpecialWantedTemplates' );