*/ /** * 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 ) { global $wgRequest; $this->prefix = Title::capitalize( $wgRequest->getVal( 'prefix', $par ), NS_MAIN ); parent::execute( $par ); } function getPageHeader() { global $wgScript, $wgMiserMode; # Do not show useless input form if wiki is running in misermode if( $wgMiserMode ) { return ''; } $prefix = $this->prefix; $t = SpecialPage::getTitleFor( $this->getName() ); return Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . Xml::openElement( 'fieldset' ) . Xml::element( 'legend', null, wfMsg( 'withoutinterwiki-legend' ) ) . Html::hidden( 'title', $t->getPrefixedText() ) . Xml::inputLabel( wfMsg( 'allpagesprefix' ), 'prefix', 'wiprefix', 20, $prefix ) . ' ' . Xml::submitButton( wfMsg( 'withoutinterwiki-submit' ) ) . 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 ( 'page_namespace AS namespace', 'page_title AS title', 'page_title AS value' ), 'conds' => array ( 'll_title IS NULL', 'page_namespace' => NS_MAIN, '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; } }