Bug 589: make random selection slightly more random. PHP's
[lhc/web/wiklou.git] / includes / SpecialCategories.php
index ea39fca..9be3d1c 100644 (file)
@@ -1,43 +1,64 @@
 <?php
+/**
+ *
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
 
-function wfSpecialCategories()
-{
-       global $wgUser, $wgOut , $wgLang;
-
-       $sk = $wgUser->getSkin() ;
-       $sc = "Special:Categories" ;
-       $r = "" ;
-       $r .= "<ol>\n" ;
-       $cat = ucfirst ( wfMsg ( "category" ) ) ;
-       $sql = "SELECT cur_title FROM cur WHERE cur_namespace=".Namespace::getCategory() ;
-       $res = wfQuery ( $sql, DB_READ ) ;
-       while ( $x = wfFetchObject ( $res ) )
-         {
-           $t = explode ( ":" , $x->cur_title , 2 ) ;
-           $t = $t[1] ;
-           $r .= "<li>" ;
-           $r .= $sk->makeKnownLink ( $x->cur_title , $t ) ;
-           $r .= "</li>\n" ;
-         }
-       wfFreeResult ( $res ) ;
-       $r .= "</ol>\n" ;
-
-       $r .= "<hr />\n" ;
-       $sql = "SELECT DISTINCT bl_to FROM brokenlinks WHERE bl_to LIKE \"{$cat}:%\"" ;
-       $res = wfQuery ( $sql, DB_READ ) ;
-       $r .= "<ol>\n" ;
-       while ( $x = wfFetchObject ( $res ) )
-         {
-           $t = explode ( ":" , $x->bl_to , 2 ) ;
-           $t = $t[1] ;
-           $r .= "<li>" ;
-           $r .= $sk->makeBrokenLink ( $x->bl_to ) ;
-           $r .= "</li>\n" ;
-         }
-       wfFreeResult ( $res ) ;
-       $r .= "</ol>\n" ;
-
-       $wgOut->addHTML ( $r ) ;
+/**
+ *
+ */
+require_once("QueryPage.php");
+
+/**
+ *
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
+class CategoriesPage extends QueryPage {
+
+       function getName() {
+               return "Categories";
+       }
+
+       function isExpensive() {
+               return false;
+       }
+
+       function getPageHeader() {
+               return '<p>'.wfMsg('categoriespagetext')."</p><br>\n";
+       }
+       function getSQL() {
+               $NScat = NS_CATEGORY;
+               $dbr =& wfGetDB( DB_SLAVE );
+               $categorylinks = $dbr->tableName( 'categorylinks' );
+               return "SELECT DISTINCT 'Categories' as type, 
+                               {$NScat} as namespace,
+                               cl_to as title,
+                               1 as value
+                          FROM $categorylinks";
+       }
+       
+       function sortDescending() {
+               return false;
+       }
+
+       function formatResult( $skin, $result ) {
+               global $wgLang;
+               $title = Title::makeTitle( NS_CATEGORY, $result->title );
+               return $skin->makeLinkObj( $title, $title->getText() );
+       }
+}
+
+/**
+ *
+ */
+function wfSpecialCategories() {
+       list( $limit, $offset ) = wfCheckLimits();
+
+       $cap = new CategoriesPage();
+
+       return $cap->doQuery( $offset, $limit );
 }
 
 ?>