X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSpecialRandompage.php;h=0dd0f51d291a741be95442758626de3ee46efa17;hb=8485b649c605bc4e785f8eacc359855c297b0fdb;hp=59836c9fedfe1f83f842e21bfa0406cba93d8d86;hpb=fde3fdc9b7498e32c4b2ea5245e3ed9eb3f37ce5;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialRandompage.php b/includes/SpecialRandompage.php index 59836c9fed..0dd0f51d29 100644 --- a/includes/SpecialRandompage.php +++ b/includes/SpecialRandompage.php @@ -1,25 +1,22 @@ getNsIndex($par); - if ($namespace === false || $namespace < NS_MAIN) { - $namespace = NS_MAIN; - } - + # Determine namespace + $t = Title::newFromText ( $par . ":Dummy" ) ; + $namespace = $t->getNamespace () ; + # 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 @@ -28,11 +25,11 @@ function wfSpecialRandompage( $par = NS_MAIN ) { # # Using a literal constant means the whole thing gets optimized on # the index, and the comparison is both fast and fair. - + # interpolation and sprintf() can muck up with locale-specific decimal separator $randstr = wfRandom(); - - $db =& wfGetDB( DB_SLAVE ); + + $db = wfGetDB( DB_SLAVE ); $use_index = $db->useIndexClause( 'page_random' ); $page = $db->tableName( 'page' ); @@ -41,17 +38,17 @@ function wfSpecialRandompage( $par = NS_MAIN ) { FROM $page $use_index WHERE page_namespace=$namespace AND page_is_redirect=0 $extra AND page_random>$randstr - ORDER BY page_random - LIMIT 1"; + ORDER BY page_random"; + $sql = $db->limitResult($sql, 1, 0); $res = $db->query( $sql, $fname ); - + $title = null; if( $s = $db->fetchObject( $res ) ) { $title =& Title::makeTitle( $namespace, $s->page_title ); - } + } if( is_null( $title ) ) { # That's not supposed to happen :) - $title =& Title::newFromText( wfMsg( 'mainpage' ) ); + $title = Title::newMainPage(); } $wgOut->reportTime(); # for logfile $wgOut->redirect( $title->getFullUrl() );