loadAllMessages(); $wgOut->setRobotpolicy( 'noindex,nofollow' ); # Is this really needed? $sk = $wgUser->getSkin(); /** Pages available to all */ wfSpecialSpecialpages_gen( SpecialPage::getRegularPages(), 'spheading', $sk ); /** Restricted special pages */ wfSpecialSpecialpages_gen( SpecialPage::getRestrictedPages(), 'restrictedpheading', $sk ); } /** * sub function generating the list of pages * @param $pages the list of pages * @param $heading header to be used * @param $sk skin object ??? */ function wfSpecialSpecialpages_gen($pages,$heading,$sk) { global $wgOut, $wgSortSpecialPages; if( count( $pages ) == 0 ) { # Yeah, that was pointless. Thanks for coming. return; } /** Put them into a sortable array */ $groups = array(); foreach ( $pages as $page ) { if ( $page->isListed() ) { $group = SpecialPage::getGroup( $page ); if( !isset($groups[$group]) ) { $groups[$group] = array(); } $groups[$group][$page->getDescription()] = $page->getTitle(); } } /** Sort */ if ( $wgSortSpecialPages ) { foreach( $groups as $group => $sortedPages ) { ksort( $groups[$group] ); } } /** Always move "other" to end */ if( array_key_exists('other',$groups) ) { $other = $groups['other']; unset( $groups['other'] ); $groups['other'] = $other; } /** Now output the HTML */ $wgOut->addHTML( '

' . wfMsgHtml( $heading ) . "

\n" ); foreach ( $groups as $group => $sortedPages ) { $middle = ceil( count($sortedPages)/2 ); $total = count($sortedPages); $count = 0; $wgOut->addHTML( "

".wfMsgHtml("specialpages-group-$group")."

\n" ); $wgOut->addHTML( "" ); $wgOut->addHTML( "
    \n" ); foreach ( $sortedPages as $desc => $title ) { $link = $sk->makeKnownLinkObj( $title , htmlspecialchars( $desc ) ); $wgOut->addHTML( "
  • {$link}
  • \n" ); # Slit up the larger groups $count++; if( $total > 3 && $count == $middle ) { $wgOut->addHTML( "
    " ); } } $wgOut->addHTML( "
\n" ); } }