From: Tim Starling Date: Sat, 31 Jul 2004 07:00:23 +0000 (+0000) Subject: Special:SiteMatrix, a method for displaying langlist and all.dblist to users X-Git-Tag: 1.5.0alpha1~2564 X-Git-Url: https://git.cyclocoop.org/%7B%24admin_url%7Dmembres/modifier.php?a=commitdiff_plain;h=666b205929a0f4f8a36a49bf3d34070a36d81ffc;p=lhc%2Fweb%2Fwiklou.git Special:SiteMatrix, a method for displaying langlist and all.dblist to users --- diff --git a/extensions/SiteMatrix.php b/extensions/SiteMatrix.php new file mode 100644 index 0000000000..94beb5cd3e --- /dev/null +++ b/extensions/SiteMatrix.php @@ -0,0 +1,96 @@ +setHeaders(); + + $langlist = array_map( 'trim', file( '/home/wikipedia/common/langlist' ) ); + sort( $langlist ); + $xLanglist = array_flip( $langlist ); + + $sites = array( 'wiki', 'wiktionary', 'wikibooks', 'wikiquote' ); + $names = array( + 'wiki' => 'Wikipedia
w', + 'wiktionary' => 'Wiktionary
wikt', + 'wikibooks' => 'Wikibooks
b', + 'wikiquote' => 'Wikiquote
q' + ); + $hosts = array( + 'wiki' => 'wikipedia.org', + 'wiktionary' => 'wiktionary.org', + 'wikibooks' => 'wikibooks.org', + 'wikiquote' => 'wikiquote.org' + ); + + # Tabulate the matrix + $specials = array(); + $matrix = array(); + foreach( $wgLocalDatabases as $db ) { + # Find suffix + foreach ( $sites as $site ) { + if ( preg_match( "/(.*)$site\$/", $db, $m ) ) { + $lang = $m[1]; + if ( empty( $xLanglist[$lang] ) && $site == 'wiki' ) { + $specials[] = $lang; + } else { + $matrix[$site][$lang] = 1; + } + break; + } + } + } + + # Construct the HTML + + # Header row + $s = ""; + foreach ( $names as $name ) { + $s .= ""; + } + $s .= "\n"; + + # Bulk of table + foreach ( $langlist as $lang ) { + $s .= ""; + foreach ( $names as $site => $name ) { + $url = "http://$lang." . $hosts[$site] . "/"; + if ( empty( $matrix[$site][$lang] ) ) { + # Non-existent wiki + $s .= ""; + } else { + # Wiki exists + $s .= ""; + } + } + $s .= "\n"; + } + $s .= "
$name
$lang$lang
\n"; + + # Specials + $s .= ""; + $wgOut->addHTML( $s ); + } +} + +SpecialPage::addPage( new SiteMatrixPage ); +global $wgMessageCache; +$wgMessageCache->addMessage( "sitematrix", "List of Wikimedia wikis" ); + +} # End of extension function +?>