From 27f2fbb3c14e1a43a85a6dd15fd02a084aec76e0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=86var=20Arnfj=C3=B6r=C3=B0=20Bjarmason?= Date: Sat, 16 Apr 2005 23:51:42 +0000 Subject: [PATCH] * (bug 510) added the ability to do Special:Randompage/Namespace to get a random page from that namespace. --- includes/SpecialRandompage.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/includes/SpecialRandompage.php b/includes/SpecialRandompage.php index 7cd7ff0f9a..f2cf40aae3 100644 --- a/includes/SpecialRandompage.php +++ b/includes/SpecialRandompage.php @@ -6,11 +6,20 @@ /** * Constructor + * + * @param string $par the namespace to get a random page from (default NS_MAIN), + * used as e.g. Special:Randompage/Category */ -function wfSpecialRandompage() { - global $wgOut, $wgTitle, $wgArticle, $wgExtraRandompageSQL; +function wfSpecialRandompage( $par = NS_MAIN ) { + global $wgOut, $wgTitle, $wgArticle, $wgExtraRandompageSQL, $wgContLang; $fname = 'wfSpecialRandompage'; + # Determine the namespace to get a random page from. + $namespace = $wgContLang->getNsIndex($par); + if ($namespace === false || $namespace < NS_MAIN) { + $namespace = NS_MAIN; + } + # NOTE! We use a literal constant in the SQL instead of the RAND() # function because RAND() will return a different value for every row # in the table. That's both very slow and returns results heavily @@ -34,7 +43,7 @@ function wfSpecialRandompage() { } $sqlget = "SELECT page_id,page_title FROM $page $use_index - WHERE page_namespace=".NS_MAIN." AND page_is_redirect=0 $extra + WHERE page_namespace=".$namespace." AND page_is_redirect=0 $extra AND page_random>$randstr ORDER BY page_random LIMIT 1"; @@ -42,7 +51,7 @@ function wfSpecialRandompage() { $title = null; if( $s = $db->fetchObject( $res ) ) { - $title =& Title::makeTitle( NS_MAIN, $s->page_title ); + $title =& Title::makeTitle( $namespace, $s->page_title ); } if( is_null( $title ) ) { # That's not supposed to happen :) -- 2.20.1