Author: dherding
Description:
Hallo!
The PyWikipedia bot which can be used to handle categories doesn't work anymore
since beta4 because categories are now split up into lists of 200 articles each.
I created this is patch which allows calling URLs like this:
http://en.wikipedia.org/wiki/Category:American_actors?limit=500
to get more articles per page, allowing the bot to work again.
I have tested it on my local wiki, but it's the first patch I submitted for
MediaWiki, and it's the first time I did something with PHP, hope everything is OK.
Daniel
daniel@athene:/tmp/mediawiki/phase3> cvs diff -bud includes/CategoryPage.php
Index: includes/CategoryPage.php
RCS file: /cvsroot/wikipedia/phase3/includes/CategoryPage.php,v
retrieving revision 1.16
diff -b -u -d -r1.16 CategoryPage.php
- includes/CategoryPage.php 3 Feb 2005 08:44:59 -0000 1.16
+++ includes/CategoryPage.php 16 Feb 2005 18:59:26 -0000
@@ -10,7 +10,6 @@
die();
if( $wgCategoryMagicGallery )
- /** */ require_once('ImageGallery.php');
/**
@@ -49,7 +48,8 @@
$pageConditions = array(); $from = $wgRequest->getVal( 'from' ); $until = $wgRequest->getVal( 'until' );
- $wgOut->addHTML( $this->doCategoryMagic( $from, $until ) );
+ $limit = $wgRequest->getVal( 'limit' );
+ $wgOut->addHTML( $this->doCategoryMagic( $from, $until, $limit ) );
} /**
@@ -60,7 +60,7 @@
- @return string HTML output
- @access private */
- function doCategoryMagic( $from = '', $until = '' ) {
+ function doCategoryMagic( $from = '', $until = '', $limit = '') {
global $wgContLang,$wgUser, $wgCategoryMagicGallery; $fname = 'CategoryPage::doCategoryMagic'; wfProfileIn( $fname );
@@ -85,14 +85,16 @@
$pageCondition = '1'; $flip = false; }
+ if ($limit == '') {
$limit = 200;
+ }
$res = $dbr->select(
- array( 'page', 'categorylinks' ),
- array( 'page_title', 'page_namespace', 'cl_sortkey' ),
+ array( 'cur', 'categorylinks' ),
+ array( 'cur_title', 'cur_namespace', 'cl_sortkey' ),
array( $pageCondition,
- 'cl_from = page_id',
+ 'cl_from = cur_id',
'cl_to' => $this->mTitle->getDBKey(),
- 'page_is_redirect' => 0),
+ 'cur_is_redirect' => 0),
#+ $pageCondition, $fname, array( 'ORDER BY' => $flip ? 'cl_sortkey DESC' :
'cl_sortkey',
@@ -110,7 +112,7 @@
break; }
- $title = Title::makeTitle( $x->page_namespace,
$x->page_title );
+ $title = Title::makeTitle( $x->cur_namespace,
$x->cur_title );
if( $title->getNamespace() == NS_CATEGORY ) { // Subcategory; strip the 'Category' namespace
from the link text.
@@ -121,7 +123,7 @@
// Workaround: If sortkey == "Category:".$title,
than use $title for sorting,
// else use sortkey... if( $title->getPrefixedText() == $x->cl_sortkey ) {
- array_push( $children_start_char,
$wgContLang->firstChar( $x->page_title ) );
+ array_push( $children_start_char,
$wgContLang->firstChar( $x->cur_title ) );
} else { array_push( $children_start_char,
$wgContLang->firstChar( $x->cl_sortkey ) ) ;
}
@@ -311,12 +313,12 @@
$prevLink = htmlspecialchars( wfMsg( 'prevn', $limitText ) ); if( $first != '' ) { $prevLink = $sk->makeLinkObj( $title, $prevLink,
- wfArrayToCGI( $query + array( 'until' => $first
) ) );
+ wfArrayToCGI( $query + array( 'until' => $first,
'limit' => $limit ) ) );
} $nextLink = htmlspecialchars( wfMsg( 'nextn', $limitText ) ); if( $last != '' ) { $nextLink = $sk->makeLinkObj( $title, $nextLink,
- wfArrayToCGI( $query + array( 'from' => $last ) ) );
+ wfArrayToCGI( $query + array( 'from' => $last,
'limit' => $limit ) ) );
} return "($prevLink) ($nextLink)";
Version: 1.4.x
Severity: normal
OS: Linux
Platform: PC