diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2008-08-15 01:29:47 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2008-08-15 01:29:47 +0200 |
commit | 370e83bb0dfd0c70de268c93bf07ad5ee0897192 (patch) | |
tree | 491674f4c242e4d6ba0d04eafa305174c35a3391 /includes/specials/SpecialWithoutinterwiki.php | |
parent | f4debf0f12d0524d2b2427c55ea3f16b680fad97 (diff) |
Update auf 1.13.0
Diffstat (limited to 'includes/specials/SpecialWithoutinterwiki.php')
-rw-r--r-- | includes/specials/SpecialWithoutinterwiki.php | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/includes/specials/SpecialWithoutinterwiki.php b/includes/specials/SpecialWithoutinterwiki.php new file mode 100644 index 00000000..2092e43b --- /dev/null +++ b/includes/specials/SpecialWithoutinterwiki.php @@ -0,0 +1,88 @@ +<?php +/** + * @file + * @ingroup SpecialPage + */ + +/** + * Special page lists pages without language links + * + * @ingroup SpecialPage + * @author Rob Church <robchur@gmail.com> + */ +class WithoutInterwikiPage extends PageQueryPage { + private $prefix = ''; + + function getName() { + return 'Withoutinterwiki'; + } + + 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' ) ) . + Xml::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 isExpensive() { + return true; + } + + function isSyndicated() { + return false; + } + + function getSQL() { + $dbr = wfGetDB( DB_SLAVE ); + list( $page, $langlinks ) = $dbr->tableNamesN( 'page', 'langlinks' ); + $prefix = $this->prefix ? "AND page_title LIKE '" . $dbr->escapeLike( $this->prefix ) . "%'" : ''; + return + "SELECT 'Withoutinterwiki' AS type, + page_namespace AS namespace, + page_title AS title, + page_title AS value + FROM $page + LEFT JOIN $langlinks + ON ll_from = page_id + WHERE ll_title IS NULL + AND page_namespace=" . NS_MAIN . " + AND page_is_redirect = 0 + {$prefix}"; + } + + function setPrefix( $prefix = '' ) { + $this->prefix = $prefix; + } + +} + +function wfSpecialWithoutinterwiki() { + global $wgRequest, $wgContLang, $wgCapitalLinks; + list( $limit, $offset ) = wfCheckLimits(); + if( $wgCapitalLinks ) { + $prefix = $wgContLang->ucfirst( $wgRequest->getVal( 'prefix' ) ); + } else { + $prefix = $wgRequest->getVal( 'prefix' ); + } + $wip = new WithoutInterwikiPage(); + $wip->setPrefix( $prefix ); + $wip->doQuery( $offset, $limit ); +} |