Open main menu

Manual:sites table


Other languages:
English • ‎español • ‎русский • ‎中文 • ‎日本語 • ‎한국어
Manual:Contents MediaWiki database layout sites table


Contents

MediaWiki version: 1.21

The sites table, introduced in MediaWiki 1.21 in May 2013, holds all the sites known to the wiki.

FieldsEdit

site_idEdit

MediaWiki version: 1.21

Numeric id of the site. This is an auto-incrementing primary key.

site_global_keyEdit

MediaWiki version: 1.21

Global identifier for the site, ie 'enwiktionary'

site_typeEdit

MediaWiki version: 1.21

Type of the site, ie 'mediawiki'

site_groupEdit

MediaWiki version: 1.21

Group of the site, ie 'wikipedia'

site_sourceEdit

MediaWiki version: 1.21

Source of the site data, ie 'local', 'wikidata', 'my-magical-repo'

site_languageEdit

MediaWiki version: 1.21

Language code of the sites primary language.

site_protocolEdit

MediaWiki version: 1.21

Protocol of the site, ie 'http://', 'irc://', '//'.

This field is an index for lookups and is built from type specific data in site_data.

site_domainEdit

MediaWiki version: 1.21

Domain of the site in reverse order, ie 'org.mediawiki.www.'.

This field is an index for lookups and is built from type specific data in site_data.

site_dataEdit

MediaWiki version: 1.21

Type dependent site data.

site_forwardEdit

MediaWiki version: 1.21

If site.tld/path/key:pageTitle should forward users to the page on the actual site, where "key" is the local identifier.

site_configEdit

MediaWiki version: 1.21

Type dependent site config. For instance if template transclusion should be allowed if it's a MediaWiki.

Managing the sites tableEdit

The sites table is shipped without data for a new MediaWiki installation.

Importing sites table from another wikiEdit

There're two ways of populating the sites table using another wiki as a source. If you've access to the other wikis server, you can run the exportSite.php maintenance script and import the data using the importSites.php maintenance script of your MediaWiki installation.

If you don't have access to the other wikis server but the other MediaWiki installation has the SiteMatrix extension installed, you can use a maintenance script from the Wikibase extension (populateSitesTable.php) to import all sites from the other wiki.

Adding a new siteEdit

If you want to add a new site into your MediaWiki's site table, you can use the maintenance script addSite.php.

Additionally, the above mentioned importSites.php maintenance script can be used to add an arbitrary group of wikis from custom made XML file in the following format:

<sites version="1.0" xmlns="http://www.mediawiki.org/xml/sitelist-1.0/">
	<site type="mediawiki">
		<globalid>wikisite1</globalid>
		<group>mywikigroup</group>
		<path type="file_path">https://www.wikisite1.org/$1</path>
		<path type="page_path">https://www.wikisite1.org/index.php/$1</path>
	</site>
	<site type="mediawiki">
		<globalid>wikisite2</globalid>
		<group>mywikigroup</group>
		<path type="file_path">https://www.wikisite2.org/w/$1</path>
		<path type="page_path">https://www.wikisite2.org/wiki/$1</path>
	</site>
</sites>

Each <site> element representing a site.

file_path and page_path can be inferred from Special:Version page of the intended wiki.

Insert wiki family (using Script)Edit

Sometimes, you have to add your wikis in this table. You can use this code:

$sites = array();
foreach ( array( 'en', 'fr' ) as $langCode ) {
     $site = new MediaWikiSite();
     $site->setGlobalId( $langCode . 'mywiki' );
     $site->setGroup( 'mywiki' );
     $site->setLanguageCode( $langCode );
     $site->addInterwikiId( $langCode );
     $site->addNavigationId( $langCode );
     $site->setPath( MediaWikiSite::PATH_PAGE, "http://$langCode.mywiki.org/wiki/$1" );
     $site->setPath( MediaWikiSite::PATH_FILE, "http://$langCode.mywiki.org/w/$1" );           
     $sites[] = $site;
}
          
$sitesTable = SiteSQLStore::newInstance();
$sitesTable->clear(); // This will remove all previous entries from the table. Remove this call if you want to keep them.
$sitesTable->saveSites( $sites );


Schema summaryEdit

MediaWiki version: 1.21

DESCRIBE sites;

+-----------------+------------------+------+-----+---------+----------------+
| Field           | Type             | Null | Key | Default | Extra          |
+-----------------+------------------+------+-----+---------+----------------+
| site_id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| site_global_key | varbinary(32)    | NO   | UNI | NULL    |                |
| site_type       | varbinary(32)    | NO   | MUL | NULL    |                |
| site_group      | varbinary(32)    | NO   | MUL | NULL    |                |
| site_source     | varbinary(32)    | NO   | MUL | NULL    |                |
| site_language   | varbinary(32)    | NO   | MUL | NULL    |                |
| site_protocol   | varbinary(32)    | NO   | MUL | NULL    |                |
| site_domain     | varbinary(255)   | NO   | MUL | NULL    |                |
| site_data       | blob             | NO   |     | NULL    |                |
| site_forward    | tinyint(1)       | NO   | MUL | NULL    |                |
| site_config     | blob             | NO   |     | NULL    |                |
+-----------------+------------------+------+-----+---------+----------------+