From MediaWiki.org
<?php
class InterwikiList extends SpecialPage
{
function Interwikilist() {
SpecialPage::SpecialPage("InterwikiList");
self::loadMessages();
}
function execute( $par ) {
global $wgOut;
$wgOut->setPagetitle( wfMsg( 'interwikilist' ) );
$selfTitle = Title::makeTitle( NS_SPECIAL, 'Interwikilist' );
$wgOut->addHTML( $this->getInterwikis() );
}
/** Load all messages for this
*/
function loadMessages() {
static $messagesLoaded = false;
global $wgMessageCache;
if ( $messagesLoaded ) return true;
$messagesLoaded = true;
require( dirname( __FILE__ ) . '/Interwikilist.i18n.php' );
foreach ( $allMessages as $lang => $langMessages ) {
$wgMessageCache->addMessages( $langMessages, $lang );
}
return true;
}
/** Get all Interwiki Links - the heart of the function
*
*/
function getInterwikis() {
$dbr = wfGetDB( DB_SLAVE );
$results = $dbr->select( 'interwiki', '*' );
$resultCount = $dbr->numRows( $results );
$text = Xml::openElement( 'table', array( 'id' => 'sv-software' ) ) .
"<tr>
<th>" . wfMsg( 'interwikilist-linkname' ) . "</th>
<th>" . wfMsg( 'interwikilist-target' ) . "</th>
</tr>\n";
while ( $row = $dbr->fetchObject( $results ) ) {
$text .= "<tr>
<td>" . $row->iw_prefix . "</td>
<td>" . $row->iw_url . "</td>
</tr>\n";
}
$text .= Xml::closeElement( 'table' );
return $text;
}
}