*/ /** * Special page lists pages without language links * * @ingroup SpecialPage */ class WithoutInterwikiPage extends PageQueryPage { private $prefix = ''; function __construct( $name = 'Withoutinterwiki' ) { parent::__construct( $name ); } function execute( $par ) { $this->prefix = Title::capitalize( $this->getRequest()->getVal( 'prefix', $par ), NS_MAIN ); parent::execute( $par ); } function getPageHeader() { global $wgScript; # Do not show useless input form if special page is cached if( $this->isCached() ) { return ''; } $prefix = $this->prefix; $t = $this->getTitle(); return Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . Xml::openElement( 'fieldset' ) . Xml::element( 'legend', null, $this->msg( 'withoutinterwiki-legend' )->text() ) . Html::hidden( 'title', $t->getPrefixedText() ) . Xml::inputLabel( $this->msg( 'allpagesprefix' )->text(), 'prefix', 'wiprefix', 20, $prefix ) . ' ' . Xml::submitButton( $this->msg( 'withoutinterwiki-submit' )->text() ) . Xml::closeElement( 'fieldset' ) . Xml::closeElement( 'form' ); } function sortDescending() { return false; } function getOrderFields() { return array( 'page_namespace', 'page_title' ); } function isExpensive() { return true; } function isSyndicated() { return false; } function getQueryInfo() { $query = array ( 'tables' => array ( 'page', 'langlinks' ), 'fields' => array ( 'namespace' => 'page_namespace', 'title' => 'page_title', 'value' => 'page_title' ), 'conds' => array ( 'll_title IS NULL', 'page_namespace' => MWNamespace::getContentNamespaces(), 'page_is_redirect' => 0 ), 'join_conds' => array ( 'langlinks' => array ( 'LEFT JOIN', 'll_from = page_id' ) ) ); if ( $this->prefix ) { $dbr = wfGetDB( DB_SLAVE ); $query['conds'][] = 'page_title ' . $dbr->buildLike( $this->prefix, $dbr->anyString() ); } return $query; } protected function getGroupName() { return 'maintenance'; } }