*/ /** * A special page that lists unused templates * * @ingroup SpecialPage */ class UnusedtemplatesPage extends QueryPage { function __construct( $name = 'Unusedtemplates' ) { parent::__construct( $name ); } function isExpensive() { return true; } function isSyndicated() { return false; } function sortDescending() { return false; } function getQueryInfo() { return array( 'tables' => array( 'page', 'templatelinks' ), 'fields' => array( 'namespace' => 'page_namespace', 'title' => 'page_title', 'value' => 'page_title' ), 'conds' => array( 'page_namespace' => NS_TEMPLATE, 'tl_from IS NULL', 'page_is_redirect' => 0 ), 'join_conds' => array( 'templatelinks' => array( 'LEFT JOIN', array( 'tl_title = page_title', 'tl_namespace = page_namespace' ) ) ) ); } /** * @param Skin $skin * @param object $result Result row * @return string */ function formatResult( $skin, $result ) { $title = Title::makeTitle( NS_TEMPLATE, $result->title ); $pageLink = Linker::linkKnown( $title, null, array(), array( 'redirect' => 'no' ) ); $wlhLink = Linker::linkKnown( SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedText() ), $this->msg( 'unusedtemplateswlh' )->escaped() ); return $this->getLanguage()->specialList( $pageLink, $wlhLink ); } function getPageHeader() { return $this->msg( 'unusedtemplatestext' )->parseAsBlock(); } protected function getGroupName() { return 'maintenance'; } }