diff options
Diffstat (limited to 'includes/specials/SpecialRandompage.php')
-rw-r--r-- | includes/specials/SpecialRandompage.php | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/includes/specials/SpecialRandompage.php b/includes/specials/SpecialRandompage.php index 0e7ada1d..f4bff30b 100644 --- a/includes/specials/SpecialRandompage.php +++ b/includes/specials/SpecialRandompage.php @@ -8,19 +8,23 @@ * @license GNU General Public Licence 2.0 or later */ class RandomPage extends SpecialPage { - private $namespace = NS_MAIN; // namespace to select pages from + private $namespaces; // namespaces to select pages from function __construct( $name = 'Randompage' ){ + global $wgContentNamespaces; + + $this->namespaces = $wgContentNamespaces; + parent::__construct( $name ); } - public function getNamespace() { - return $this->namespace; + public function getNamespaces() { + return $this->namespaces; } public function setNamespace ( $ns ) { if( $ns < NS_MAIN ) $ns = NS_MAIN; - $this->namespace = $ns; + $this->namespaces = array( $ns ); } // select redirects instead of normal pages? @@ -39,7 +43,7 @@ class RandomPage extends SpecialPage { if( is_null( $title ) ) { $this->setHeaders(); - $wgOut->addWikiMsg( strtolower( $this->mName ) . '-nopages' ); + $wgOut->addWikiMsg( strtolower( $this->mName ) . '-nopages', $wgContLang->getNsText( $this->namespace ) ); return; } @@ -67,7 +71,7 @@ class RandomPage extends SpecialPage { $row = $this->selectRandomPageFromDB( "0" ); if( $row ) - return Title::makeTitleSafe( $this->namespace, $row->page_title ); + return Title::makeTitleSafe( $row->page_namespace, $row->page_title ); else return null; } @@ -81,13 +85,13 @@ class RandomPage extends SpecialPage { $use_index = $dbr->useIndexClause( 'page_random' ); $page = $dbr->tableName( 'page' ); - $ns = (int) $this->namespace; + $ns = implode( ",", $this->namespaces ); $redirect = $this->isRedirect() ? 1 : 0; $extra = $wgExtraRandompageSQL ? "AND ($wgExtraRandompageSQL)" : ""; - $sql = "SELECT page_title + $sql = "SELECT page_title, page_namespace FROM $page $use_index - WHERE page_namespace = $ns + WHERE page_namespace IN ( $ns ) AND page_is_redirect = $redirect AND page_random >= $randstr $extra |