function wfPRRenderPageList( $input, $args ) {
global $wgUser, $wgTitle;
wfLoadExtensionMessages( 'ProofreadPage' );
$index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
if ( !preg_match( "/^$index_namespace:(.*?)(\/([0-9]*)|)$/", $wgTitle->getPrefixedText(), $m ) ) {
return true;
}
$imageTitle = Title::makeTitleSafe( NS_IMAGE, $m[1] );
if ( !$imageTitle ) {
return true;
}
$image = Image::newFromTitle( $imageTitle );
$return="";
if ( $image->isMultipage() ) {
$name = $imageTitle->getDBkey();
$count = $image->pageCount();
$dbr = wfGetDB( DB_SLAVE );
$pagetable = $dbr->tableName( 'page' );
$page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
$page_ns_index = Namespace::getCanonicalIndex( strtolower( $page_namespace ) );
if( $page_ns_index == NULL ) {
$page_ns_index = NS_MAIN;
}
for( $i=0; $i<$count ; $i++) {
if ( !isset( $query ) ) {
$query = "SELECT page_id, page_title, page_namespace";
$query .= " FROM $pagetable WHERE (page_namespace=$page_ns_index AND page_title IN(";
} else {
$query .= ', ';
}
$link_name = "$name" . '/'. ($i+1) ;
$query .= $dbr->addQuotes( $link_name );
}
$query .= '))';
$res = $dbr->query( $query, __METHOD__ );
$colours = array();
$linkcolour_ids = array();
while ( $s = $dbr->fetchObject($res) ) {
$title = Title::makeTitle( $s->page_namespace, $s->page_title );
$pdbk = $title->getPrefixedDBkey();
$colours[$pdbk] = 'known';
$linkcolour_ids[$s->page_id] = $pdbk;
}
wfPRLinkColours( $linkcolour_ids, $colours );
$sk = $wgUser->getSkin();
$offset = 0;
$mode = 'normal';
for( $i=1; $i<$count+1 ; $i++) {
$pdbk = "$page_namespace:$name" . '/'. $i ;
$single=false;
foreach ( $args as $num => $param ) {
if($i == $num) {
$param = explode(";",$param);
if(isset($param[1])) $mode = $param[1]; else $mode='normal';
if(is_numeric($param[0])) $offset = $i - $param[0];
else $single=$param[0];
}
}
if( $single ) { $view = $single; $single=false; $offset=$offset+1;}
else {
$view = ($i - $offset);
if($mode == 'highroman') $view = ' '.toRoman($view);
elseif($mode == 'roman') $view = ' '.strtolower(toRoman($view));
elseif($mode == 'normal') $view = ''.$view;
else $view = $mode.$view;
}
$n = strlen($count) - strlen($view);
if( $n && ($mode == 'normal') ){
$txt = '<span style="visibility:hidden;">';
for( $j=0; $j<$n; $j++) $txt = $txt.'0';
$view = $txt.'</span>'.$view;
}
$title = Title::newFromText( $pdbk );
if ( !isset( $colours[$pdbk] ) ) {
$link = $sk->makeBrokenLinkObj( $title, $view );
} else {
$link = $sk->makeColouredLinkObj( $title, $colours[$pdbk], $view );
}
$return .= "{$link} ";
}
}
return $return;
}