102 lines
2.4 KiB
PHP
102 lines
2.4 KiB
PHP
<?php
|
|
|
|
# Make an HTML table showing all the wikis on the site
|
|
|
|
# Not a valid entry point, skip unless MEDIAWIKI is defined
|
|
if (defined('MEDIAWIKI')) {
|
|
|
|
$wgExtensionFunctions[] = "wfSiteMatrix";
|
|
|
|
function wfSiteMatrix() {
|
|
global $IP;
|
|
require_once( "$IP/includes/SpecialPage.php" );
|
|
|
|
class SiteMatrixPage extends SpecialPage
|
|
{
|
|
function SiteMatrixPage() {
|
|
SpecialPage::SpecialPage("SiteMatrix");
|
|
}
|
|
|
|
function execute( $par ) {
|
|
global $wgRequest, $wgOut, $wgTitle, $wgLocalDatabases;
|
|
$this->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<br />w',
|
|
'wiktionary' => 'Wiktionary<br />wikt',
|
|
'wikibooks' => 'Wikibooks<br />b',
|
|
'wikiquote' => 'Wikiquote<br />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 = "<table><tr>";
|
|
foreach ( $names as $name ) {
|
|
$s .= "<td><strong>$name</strong></td>";
|
|
}
|
|
$s .= "</tr>\n";
|
|
|
|
# Bulk of table
|
|
foreach ( $langlist as $lang ) {
|
|
$s .= "<tr>";
|
|
foreach ( $names as $site => $name ) {
|
|
$url = "http://$lang." . $hosts[$site] . "/";
|
|
if ( empty( $matrix[$site][$lang] ) ) {
|
|
# Non-existent wiki
|
|
$s .= "<td><a href=\"$url\" class=\"new\">$lang</a></td>";
|
|
} else {
|
|
# Wiki exists
|
|
$s .= "<td><a href=\"$url\">$lang</a></td>";
|
|
}
|
|
}
|
|
$s .= "</tr>\n";
|
|
}
|
|
$s .= "</table>\n";
|
|
|
|
# Specials
|
|
$s .= "<ul>";
|
|
foreach ( $specials as $lang ) {
|
|
$s .= "<li><a href=\"http://$lang.wikipedia.org/\">$lang</a></li>\n";
|
|
}
|
|
$s .= "</ul>";
|
|
$wgOut->addHTML( $s );
|
|
}
|
|
}
|
|
|
|
SpecialPage::addPage( new SiteMatrixPage );
|
|
global $wgMessageCache;
|
|
$wgMessageCache->addMessage( "sitematrix", "List of Wikimedia wikis" );
|
|
|
|
} # End of extension function
|
|
} # End of invocation protection
|
|
?>
|