summaryrefslogtreecommitdiff
path: root/maintenance/InitialiseMessages.inc
diff options
context:
space:
mode:
Diffstat (limited to 'maintenance/InitialiseMessages.inc')
-rw-r--r--maintenance/InitialiseMessages.inc257
1 files changed, 0 insertions, 257 deletions
diff --git a/maintenance/InitialiseMessages.inc b/maintenance/InitialiseMessages.inc
deleted file mode 100644
index 22e26b94..00000000
--- a/maintenance/InitialiseMessages.inc
+++ /dev/null
@@ -1,257 +0,0 @@
-<?php
-/**
- * Script to initialise the MediaWiki namespace
- *
- * This script is included from update.php and install.php. Do not run it
- * by itself.
- *
- * @deprecated
- * @package MediaWiki
- * @subpackage Maintenance
- */
-
-/** */
-function initialiseMessages( $overwrite = false, $messageArray = false, $outputCallback = false ) {
- global $wgContLang, $wgContLanguageCode;
- global $wgContLangClass;
- global $wgDisableLangConversion;
- global $wgForceUIMsgAsContentMsg;
- global $wgLanguageNames;
- global $IP;
-
- # overwrite language conversion option so that all variants
- # of the messages are initialised
- $wgDisableLangConversion = false;
-
- if ( $messageArray ) {
- $sortedArray = $messageArray;
- } else {
- $sortedArray = Language::getMessagesFor( 'en' );
- }
-
- ksort( $sortedArray );
- $messages=array();
-
- $variants = $wgContLang->getVariants();
- if(!in_array($wgContLanguageCode, $variants))
- $variants[]=$wgContLanguageCode;
-
- foreach ($variants as $v) {
- $lang = Language::factory( $v );
-
- if($v==$wgContLanguageCode)
- $suffix='';
- else
- $suffix="/$v";
- foreach ($sortedArray as $key => $msg) {
- $messages[$key.$suffix] = $lang->getMessage($key);
- }
- }
-
- require_once('languages/Names.php');
-
- /*
- initialize all messages in $wgForceUIMsgAsContentMsg for all
- languages in Names.php
- */
- if( is_array( $wgForceUIMsgAsContentMsg ) ) {
- foreach( $wgForceUIMsgAsContentMsg as $uikey ) {
- foreach( $wgLanguageNames as $code => $name) {
- if( $code == $wgContLanguageCode )
- continue;
- $msg = $wgContLang->getMessage( $uikey );
- if( $msg )
- $messages[$uikey. '/' . $code] = $msg;
- }
- }
- }
- initialiseMessagesReal( $overwrite, $messages, $outputCallback );
-}
-
-/** */
-function initialiseMessagesReal( $overwrite = false, $messageArray = false, $outputCallback = false ) {
- global $wgContLang, $wgScript, $wgServer, $wgLanguageCode;
- global $wgOut, $wgArticle, $wgUser;
- global $wgMessageCache, $wgMemc, $wgUseMemCached;
-
- # Initialise $wgOut and $wgUser for a command line script
- $wgOut->disable();
-
- $wgUser = new User;
- $wgUser->setLoaded( true ); # Don't load from DB
- $wgUser->setName( 'MediaWiki default' );
-
- # Don't try to draw messages from the database we're initialising
- $wgMessageCache->disable();
- $wgMessageCache->disableTransform();
-
- $fname = 'initialiseMessages';
- $ns = NS_MEDIAWIKI;
- # username responsible for the modifications
- # Don't change it unless you're prepared to update the DBs accordingly, otherwise the
- # default messages won't be overwritten
- $username = 'MediaWiki default';
-
- if ( !$outputCallback ) {
- # Print is not a function, and there doesn't appear to be any built-in
- # workalikes, so let's just make our own anonymous function to do the
- # same thing.
- $outputCallback = create_function( '$s', 'print $s;' );
- }
-
- $outputCallback( "Initialising \"MediaWiki\" namespace for language code $wgLanguageCode...\n" );
-
- # Check that the serialized data files are OK
- if ( Language::isLocalisationOutOfDate( $wgLanguageCode ) ) {
- $outputCallback( "Warning: serialized data file may be out of date.\n" );
- }
-
- $dbr =& wfGetDB( DB_SLAVE );
- $dbw =& wfGetDB( DB_MASTER );
- $page = $dbr->tableName( 'page' );
- $revision = $dbr->tableName( 'revision' );
-
- $timestamp = wfTimestampNow();
-
- $first = true;
- if ( $messageArray ) {
- $sortedArray = $messageArray;
- } else {
- $sortedArray = $wgContLang->getAllMessages();
- }
-
- ksort( $sortedArray );
-
- # SELECT all existing messages
- # Can't afford to be locking all rows for update, this script can take quite a long time to complete
- $rows = array();
- $nitems = count($sortedArray);
- $maxitems = $dbr->maxListLen();
- $pos = 0;
- if ($maxitems)
- $chunks = array_chunk($sortedArray, $maxitems);
- else
- $chunks = array($sortedArray);
-
- foreach ($chunks as $chunk) {
- $first = true;
- $sql = "SELECT page_title,page_is_new,rev_user_text FROM $page, $revision WHERE
- page_namespace=$ns AND rev_id=page_latest AND page_title IN(";
-
- foreach ( $chunk as $key => $enMsg ) {
- if ( $key == '' ) {
- continue; // Skip odd members
- }
- if ( $first ) {
- $first = false;
- } else {
- $sql .= ',';
- }
- $titleObj = Title::newFromText( $wgContLang->ucfirst( $key ) );
- $enctitle = $dbr->strencode($titleObj->getDBkey());
- $sql .= "'$enctitle'";
- }
-
- $sql .= ')';
- $res = $dbr->query( $sql );
- while ($row = $dbr->fetchObject($res))
- $rows[] = $row;
- }
-
- # Read the results into an array
- # Decide whether or not each one needs to be overwritten
- $existingTitles = array();
- foreach ($rows as $row) {
- if ( $row->rev_user_text != $username && $row->rev_user_text != 'Template namespace initialisation script' ) {
- $existingTitles[$row->page_title] = 'keep';
- } else {
- $existingTitles[$row->page_title] = 'chuck';
- }
- }
-
- # Insert queries are done in one multi-row insert
- # Here's the start of it:
- $arr = array();
- $talk = $wgContLang->getNsText( NS_TALK );
- $mwtalk = $wgContLang->getNsText( NS_MEDIAWIKI_TALK );
-
- $numUpdated = 0;
- $numKept = 0;
- $numInserted = 0;
-
- # Merge these into a single transaction for speed
- $dbw->begin();
-
- # Process each message
- foreach ( $sortedArray as $key => $message ) {
- if ( $key == '' ) {
- continue; // Skip odd members
- }
- # Get message text
- if ( !$messageArray ) {
- $message = wfMsgNoDBForContent( $key );
- }
- if ( is_null( $message ) ) {
- # This happens sometimes with out of date serialized data files
- $outputCallback( "Warning: Skipping null message $key\n" );
- continue;
- }
-
- $titleObj = Title::newFromText( $wgContLang->ucfirst( $key ), NS_MEDIAWIKI );
- $title = $titleObj->getDBkey();
-
- # Update messages which already exist
- if ( array_key_exists( $title, $existingTitles ) ) {
- if ( $existingTitles[$title] == 'chuck' || $overwrite) {
- # Don't bother writing a new revision if we're the same
- # as the current text!
- $revision = Revision::newFromTitle( $titleObj );
- if( is_null( $revision ) || $revision->getText() != $message ) {
- $article = new Article( $titleObj );
- $article->quickEdit( $message );
- ++$numUpdated;
- } else {
- ++$numKept;
- }
- } else {
- ++$numKept;
- }
- } else {
- $article = new Article( $titleObj );
- $newid = $article->insertOn( $dbw );
- # FIXME: set restrictions
- $revision = new Revision( array(
- 'page' => $newid,
- 'text' => $message,
- 'user' => 0,
- 'user_text' => $username,
- 'comment' => '',
- ) );
- $revid = $revision->insertOn( $dbw );
- $article->updateRevisionOn( $dbw, $revision );
- ++$numInserted;
- }
- }
- $dbw->commit();
-
- # Clear the relevant memcached key
- $wgMessageCache->clear();
- $outputCallback( "Done. Updated: $numUpdated, inserted: $numInserted, kept: $numKept.\n" );
-}
-
-/** */
-function loadLanguageFile( $filename ) {
- $contents = file_get_contents( $filename );
- # Remove header line
- $p = strpos( $contents, "\n" ) + 1;
- $contents = substr( $contents, $p );
- # Unserialize
- return unserialize( $contents );
-}
-
-/** */
-function doUpdates() {
- global $wgDeferredUpdateList;
- foreach ( $wgDeferredUpdateList as $up ) { $up->doUpdate(); }
-}
-?>