Shorttags fix
[mediawiki.git] / maintenance / InitialiseMessages.inc
blob6da89df8f564785e413f40dda01bc63ddafb550c
1 <?php
3 # This script is included from update.php and install.php. Do not run it 
4 # by itself.
6 function initialiseMessages( $overwrite = false) {
7         global $wgLang, $wgScript, $wgServer, $wgAllMessagesEn;
8         global $wgOut, $wgArticle, $wgUser;
10         $fname = "initialiseMessages";
11         $ns = NS_MEDIAWIKI;
13         $timestamp = wfTimestampNow();
14         $invTimestamp = wfInvertTimestamp( $timestamp );
15         $navText = wfMsgNoDB( "allmessagestext" );
16         $navText .= "
18 <table border=1 width=100%><tr><td>
19   '''Name'''
20 </td><td>
21   '''Default text'''
22 </td><td>
23   '''Current text'''
24 </td></tr>";
25         
26         print "Initialising \"MediaWiki\" namespace...\n";
27         $sql = "SELECT cur_title FROM cur WHERE cur_namespace=$ns AND cur_title IN(";
29         $first = true;
30         $sortedArray = $wgAllMessagesEn;
31         ksort( $sortedArray );
33         foreach ( $sortedArray as $key => $enMsg ) {
34                 if ( $first ) {
35                         $first = false;
36                 } else {
37                         $sql .= ",";
38                 }
40                 $message = wfMsgNoDB( $key );
41                 $titleObj = Title::newFromText( $key );
42                 $enctitle = wfStrencode($titleObj->getDBkey());
43                 $sql .= "'$enctitle'";
44         }
45         $sql .= ")";
46         print "Reading...";
47         $res = wfQuery( $sql, DB_READ );
48         print ".";
49         $row = wfFetchObject( $res );
50         print "done\n";
52         print "Setting up...";
53         $exists = array();
54         while ( $row ) {
55                 $exists[$row->cur_title] = 1;
56                 $row = wfFetchObject( $res );
57         }
58         print ".";
59         $sql = "INSERT INTO cur (cur_namespace, cur_title, cur_text,
60                 cur_user_text, cur_timestamp, cur_restrictions,
61                 cur_is_new, inverse_timestamp, cur_touched) VALUES      ";
62         $first = true;
63         $mwObj =& MagicWord::get( MAG_MSGNW );
64         $msgnw = $mwObj->getSynonym( 0 );
65         print "Done\n";
66         
67         print "Processing...";
68         
69         foreach ( $sortedArray as $key => $enMsg ) {
70                 $message = wfMsgNoDB( $key );
71                 $titleObj = Title::newFromText( $key );
72                 $title = $titleObj->getDBkey();
73                 $dbencMsg = wfStrencode( $message );
75                 $doInsert = true;
76                 if ( $overwrite ) {
77                         wfQuery( "DELETE FROM cur WHERE cur_namespace=$ns AND cur_title='$title'", DB_WRITE, $fname );
78                 } else {        
79                         if (array_key_exists($title, $exists)) {
80                                 $doInsert = false;
81                         }
82                 }
83                 if ( $doInsert ) {
84                         if ( $first ) {
85                                 $first = false;
86                         } else {
87                                 $sql .= ",";
88                         }
89                         $sql .=
90                                 "($ns,
91                                 '$title',
92                                 '$dbencMsg',
93                                 'MediaWiki default',
94                                 '$timestamp',
95                                 'sysop',
96                                 1,
97                                 '$invTimestamp',
98                                 '$timestamp')";
99                 }
100                 $mw = str_replace( "$1", $key, $msgnw );
102                 $message = wfEscapeWikiText( $message );
103                 $navText .= 
104 "<tr><td>
105   [$wgServer$wgScript?title=MediaWiki:$title&action=edit $key]
106 </td><td>
107   $message
108 </td><td>
109   $mw
110 </td></tr>";
111         }
112         print "Done\n";
113         print "Writing...";
115         if ( !$first ) {
116                 wfQuery( $sql, DB_WRITE, $fname );
117         }
119         print "Done\n";
121         $navText .= "</table>";
123         $title = wfMsgNoDB( "allmessages" );
124         $titleObj = Title::makeTitle( NS_MEDIAWIKI, $title );
125         $wgArticle = new Article( $titleObj );
126         $wgOut->disable();
127         $wgUser = User::newFromName( 'MediaWiki default' );
128         print "Writing to " . $titleObj->getPrefixedDBkey() . "\n";
129         if ( $titleObj->getArticleID() ) {
130                 $wgArticle->updateArticle( $navText, '', 0, 0 );
131         } else {
132                 $wgArticle->insertNewArticle( $navText, '', 0, 0 );
133         }
134         print "Finished\n";