Index: branches/REL1_17/phase3/maintenance/postgres/archives/patch-tag_summary.sql |
— | — | @@ -0,0 +1,9 @@ |
| 2 | +CREATE TABLE tag_summary ( |
| 3 | + ts_rc_id INTEGER NULL, |
| 4 | + ts_log_id INTEGER NULL, |
| 5 | + ts_rev_id INTEGER NULL, |
| 6 | + ts_tags TEXT NOT NULL |
| 7 | +); |
| 8 | +CREATE UNIQUE INDEX tag_summary_rc_id ON tag_summary(ts_rc_id); |
| 9 | +CREATE UNIQUE INDEX tag_summary_log_id ON tag_summary(ts_log_id); |
| 10 | +CREATE UNIQUE INDEX tag_summary_rev_id ON tag_summary(ts_rev_id); |
Index: branches/REL1_17/phase3/maintenance/postgres/archives/patch-valid_tag.sql |
— | — | @@ -0,0 +1,3 @@ |
| 2 | +CREATE TABLE valid_tag ( |
| 3 | + vt_tag TEXT NOT NULL PRIMARY KEY |
| 4 | +); |
Index: branches/REL1_17/phase3/maintenance/postgres/archives/patch-change_tag.sql |
— | — | @@ -1,28 +1,11 @@ |
2 | | - |
3 | 2 | CREATE TABLE change_tag ( |
4 | | - ct_rc_id INTEGER NULL, |
5 | | - ct_log_id INTEGER NULL, |
6 | | - ct_rev_id INTEGER NULL, |
7 | | - ct_tag TEXT NOT NULL, |
8 | | - ct_params TEXT NULL |
| 3 | + ct_rc_id INTEGER NULL, |
| 4 | + ct_log_id INTEGER NULL, |
| 5 | + ct_rev_id INTEGER NULL, |
| 6 | + ct_tag TEXT NOT NULL, |
| 7 | + ct_params TEXT NULL |
9 | 8 | ); |
10 | 9 | CREATE UNIQUE INDEX change_tag_rc_tag ON change_tag(ct_rc_id,ct_tag); |
11 | 10 | CREATE UNIQUE INDEX change_tag_log_tag ON change_tag(ct_log_id,ct_tag); |
12 | 11 | CREATE UNIQUE INDEX change_tag_rev_tag ON change_tag(ct_rev_id,ct_tag); |
13 | 12 | CREATE INDEX change_tag_tag_id ON change_tag(ct_tag,ct_rc_id,ct_rev_id,ct_log_id); |
14 | | - |
15 | | - |
16 | | -CREATE TABLE tag_summary ( |
17 | | - ts_rc_id INTEGER NULL, |
18 | | - ts_log_id INTEGER NULL, |
19 | | - ts_rev_id INTEGER NULL, |
20 | | - ts_tags TEXT NOT NULL |
21 | | -); |
22 | | -CREATE UNIQUE INDEX tag_summary_rc_id ON tag_summary(ts_rc_id); |
23 | | -CREATE UNIQUE INDEX tag_summary_log_id ON tag_summary(ts_log_id); |
24 | | -CREATE UNIQUE INDEX tag_summary_rev_id ON tag_summary(ts_rev_id); |
25 | | - |
26 | | - |
27 | | -CREATE TABLE valid_tag ( |
28 | | - vt_tag TEXT NOT NULL PRIMARY KEY |
29 | | -); |
Index: branches/REL1_17/phase3/maintenance/install.php |
— | — | @@ -65,7 +65,13 @@ |
66 | 66 | new CliInstaller( $siteName, $adminName, $this->mOptions ); |
67 | 67 | |
68 | 68 | if ( $this->hasOption( 'env-checks' ) ) { |
69 | | - $installer->doEnvironmentChecks(); |
| 69 | + $status = $installer->doEnvironmentChecks(); |
| 70 | + if( $status->isGood() ) { |
| 71 | + $installer->showMessage( 'config-env-good' ); |
| 72 | + } else { |
| 73 | + $installer->showStatusMessage( $status ); |
| 74 | + return; |
| 75 | + } |
70 | 76 | } else { |
71 | 77 | $installer->execute(); |
72 | 78 | $installer->writeConfigurationFile( $this->getOption( 'confpath', $IP ) ); |
Index: branches/REL1_17/phase3/maintenance/userDupes.inc |
— | — | @@ -31,21 +31,30 @@ |
32 | 32 | var $reassigned; |
33 | 33 | var $trimmed; |
34 | 34 | var $failed; |
| 35 | + private $outputCallback; |
35 | 36 | |
36 | | - function UserDupes( &$database ) { |
37 | | - $this->db =& $database; |
| 37 | + function __construct( &$database, $outputCallback ) { |
| 38 | + $this->db = $database; |
| 39 | + $this->outputCallback = $outputCallback; |
38 | 40 | } |
39 | 41 | |
40 | 42 | /** |
| 43 | + * Output some text via the output callback provided |
| 44 | + * @param $str String Text to print |
| 45 | + */ |
| 46 | + private function out( $str ) { |
| 47 | + call_user_func( $this->outputCallback, $str ); |
| 48 | + } |
| 49 | + |
| 50 | + /** |
41 | 51 | * Check if this database's user table has already had a unique |
42 | 52 | * user_name index applied. |
43 | 53 | * @return bool |
44 | 54 | */ |
45 | 55 | function hasUniqueIndex() { |
46 | | - $fname = 'UserDupes::hasUniqueIndex'; |
47 | | - $info = $this->db->indexInfo( 'user', 'user_name', $fname ); |
| 56 | + $info = $this->db->indexInfo( 'user', 'user_name', __METHOD__ ); |
48 | 57 | if ( !$info ) { |
49 | | - wfOut( "WARNING: doesn't seem to have user_name index at all!\n" ); |
| 58 | + $this->out( "WARNING: doesn't seem to have user_name index at all!\n" ); |
50 | 59 | return false; |
51 | 60 | } |
52 | 61 | |
— | — | @@ -92,11 +101,11 @@ |
93 | 102 | |
94 | 103 | $this->lock(); |
95 | 104 | |
96 | | - wfOut( "Checking for duplicate accounts...\n" ); |
| 105 | + $this->out( "Checking for duplicate accounts...\n" ); |
97 | 106 | $dupes = $this->getDupes(); |
98 | 107 | $count = count( $dupes ); |
99 | 108 | |
100 | | - wfOut( "Found $count accounts with duplicate records on " . wfWikiID() . ".\n" ); |
| 109 | + $this->out( "Found $count accounts with duplicate records on " . wfWikiID() . ".\n" ); |
101 | 110 | $this->trimmed = 0; |
102 | 111 | $this->reassigned = 0; |
103 | 112 | $this->failed = 0; |
— | — | @@ -106,34 +115,34 @@ |
107 | 116 | |
108 | 117 | $this->unlock(); |
109 | 118 | |
110 | | - wfOut( "\n" ); |
| 119 | + $this->out( "\n" ); |
111 | 120 | |
112 | 121 | if ( $this->reassigned > 0 ) { |
113 | 122 | if ( $doDelete ) { |
114 | | - wfOut( "$this->reassigned duplicate accounts had edits reassigned to a canonical record id.\n" ); |
| 123 | + $this->out( "$this->reassigned duplicate accounts had edits reassigned to a canonical record id.\n" ); |
115 | 124 | } else { |
116 | | - wfOut( "$this->reassigned duplicate accounts need to have edits reassigned.\n" ); |
| 125 | + $this->out( "$this->reassigned duplicate accounts need to have edits reassigned.\n" ); |
117 | 126 | } |
118 | 127 | } |
119 | 128 | |
120 | 129 | if ( $this->trimmed > 0 ) { |
121 | 130 | if ( $doDelete ) { |
122 | | - wfOut( "$this->trimmed duplicate user records were deleted from " . wfWikiID() . ".\n" ); |
| 131 | + $this->out( "$this->trimmed duplicate user records were deleted from " . wfWikiID() . ".\n" ); |
123 | 132 | } else { |
124 | | - wfOut( "$this->trimmed duplicate user accounts were found on " . wfWikiID() . " which can be removed safely.\n" ); |
| 133 | + $this->out( "$this->trimmed duplicate user accounts were found on " . wfWikiID() . " which can be removed safely.\n" ); |
125 | 134 | } |
126 | 135 | } |
127 | 136 | |
128 | 137 | if ( $this->failed > 0 ) { |
129 | | - wfOut( "Something terribly awry; $this->failed duplicate accounts were not removed.\n" ); |
| 138 | + $this->out( "Something terribly awry; $this->failed duplicate accounts were not removed.\n" ); |
130 | 139 | return false; |
131 | 140 | } |
132 | 141 | |
133 | 142 | if ( $this->trimmed == 0 || $doDelete ) { |
134 | | - wfOut( "It is now safe to apply the unique index on user_name.\n" ); |
| 143 | + $this->out( "It is now safe to apply the unique index on user_name.\n" ); |
135 | 144 | return true; |
136 | 145 | } else { |
137 | | - wfOut( "Run this script again with the --fix option to automatically delete them.\n" ); |
| 146 | + $this->out( "Run this script again with the --fix option to automatically delete them.\n" ); |
138 | 147 | return false; |
139 | 148 | } |
140 | 149 | } |
— | — | @@ -143,7 +152,6 @@ |
144 | 153 | * @access private |
145 | 154 | */ |
146 | 155 | function lock() { |
147 | | - $fname = 'UserDupes::lock'; |
148 | 156 | if ( $this->newSchema() ) { |
149 | 157 | $set = array( 'user', 'revision' ); |
150 | 158 | } else { |
— | — | @@ -152,7 +160,7 @@ |
153 | 161 | $names = array_map( array( $this, 'lockTable' ), $set ); |
154 | 162 | $tables = implode( ',', $names ); |
155 | 163 | |
156 | | - $this->db->query( "LOCK TABLES $tables", $fname ); |
| 164 | + $this->db->query( "LOCK TABLES $tables", __METHOD__ ); |
157 | 165 | } |
158 | 166 | |
159 | 167 | function lockTable( $table ) { |
— | — | @@ -171,8 +179,7 @@ |
172 | 180 | * @access private |
173 | 181 | */ |
174 | 182 | function unlock() { |
175 | | - $fname = 'UserDupes::unlock'; |
176 | | - $this->db->query( "UNLOCK TABLES", $fname ); |
| 183 | + $this->db->query( "UNLOCK TABLES", __METHOD__ ); |
177 | 184 | } |
178 | 185 | |
179 | 186 | /** |
— | — | @@ -181,13 +188,12 @@ |
182 | 189 | * @access private |
183 | 190 | */ |
184 | 191 | function getDupes() { |
185 | | - $fname = 'UserDupes::listDupes'; |
186 | 192 | $user = $this->db->tableName( 'user' ); |
187 | 193 | $result = $this->db->query( |
188 | 194 | "SELECT user_name,COUNT(*) AS n |
189 | 195 | FROM $user |
190 | 196 | GROUP BY user_name |
191 | | - HAVING n > 1", $fname ); |
| 197 | + HAVING n > 1", __METHOD__ ); |
192 | 198 | |
193 | 199 | $list = array(); |
194 | 200 | foreach ( $result as $row ) { |
— | — | @@ -205,44 +211,43 @@ |
206 | 212 | * @access private |
207 | 213 | */ |
208 | 214 | function examine( $name, $doDelete ) { |
209 | | - $fname = 'UserDupes::listDupes'; |
210 | 215 | $result = $this->db->select( 'user', |
211 | 216 | array( 'user_id' ), |
212 | 217 | array( 'user_name' => $name ), |
213 | | - $fname ); |
| 218 | + __METHOD__ ); |
214 | 219 | |
215 | 220 | $firstRow = $this->db->fetchObject( $result ); |
216 | 221 | $firstId = $firstRow->user_id; |
217 | | - wfOut( "Record that will be used for '$name' is user_id=$firstId\n" ); |
| 222 | + $this->out( "Record that will be used for '$name' is user_id=$firstId\n" ); |
218 | 223 | |
219 | 224 | foreach ( $result as $row ) { |
220 | 225 | $dupeId = $row->user_id; |
221 | | - wfOut( "... dupe id $dupeId: " ); |
| 226 | + $this->out( "... dupe id $dupeId: " ); |
222 | 227 | $edits = $this->editCount( $dupeId ); |
223 | 228 | if ( $edits > 0 ) { |
224 | 229 | $this->reassigned++; |
225 | | - wfOut( "has $edits edits! " ); |
| 230 | + $this->out( "has $edits edits! " ); |
226 | 231 | if ( $doDelete ) { |
227 | 232 | $this->reassignEdits( $dupeId, $firstId ); |
228 | 233 | $newEdits = $this->editCount( $dupeId ); |
229 | 234 | if ( $newEdits == 0 ) { |
230 | | - wfOut( "confirmed cleaned. " ); |
| 235 | + $this->out( "confirmed cleaned. " ); |
231 | 236 | } else { |
232 | 237 | $this->failed++; |
233 | | - wfOut( "WARNING! $newEdits remaining edits for $dupeId; NOT deleting user.\n" ); |
| 238 | + $this->out( "WARNING! $newEdits remaining edits for $dupeId; NOT deleting user.\n" ); |
234 | 239 | continue; |
235 | 240 | } |
236 | 241 | } else { |
237 | | - wfOut( "(will need to reassign edits on fix)" ); |
| 242 | + $this->out( "(will need to reassign edits on fix)" ); |
238 | 243 | } |
239 | 244 | } else { |
240 | | - wfOut( "ok, no edits. " ); |
| 245 | + $this->out( "ok, no edits. " ); |
241 | 246 | } |
242 | 247 | $this->trimmed++; |
243 | 248 | if ( $doDelete ) { |
244 | 249 | $this->trimAccount( $dupeId ); |
245 | 250 | } |
246 | | - wfOut( "\n" ); |
| 251 | + $this->out( "\n" ); |
247 | 252 | } |
248 | 253 | } |
249 | 254 | |
— | — | @@ -272,12 +277,11 @@ |
273 | 278 | * @access private |
274 | 279 | */ |
275 | 280 | function editCountOn( $table, $field, $userid ) { |
276 | | - $fname = 'UserDupes::editCountOn'; |
277 | 281 | return intval( $this->db->selectField( |
278 | 282 | $table, |
279 | 283 | 'COUNT(*)', |
280 | 284 | array( $field => $userid ), |
281 | | - $fname ) ); |
| 285 | + __METHOD__ ) ); |
282 | 286 | } |
283 | 287 | |
284 | 288 | /** |
— | — | @@ -302,13 +306,12 @@ |
303 | 307 | * @access private |
304 | 308 | */ |
305 | 309 | function reassignEditsOn( $table, $field, $from, $to ) { |
306 | | - $fname = 'UserDupes::reassignEditsOn'; |
307 | | - wfOut( "reassigning on $table... " ); |
| 310 | + $this->out( "reassigning on $table... " ); |
308 | 311 | $this->db->update( $table, |
309 | 312 | array( $field => $to ), |
310 | 313 | array( $field => $from ), |
311 | | - $fname ); |
312 | | - wfOut( "ok. " ); |
| 314 | + __METHOD__ ); |
| 315 | + $this->out( "ok. " ); |
313 | 316 | } |
314 | 317 | |
315 | 318 | /** |
— | — | @@ -317,10 +320,9 @@ |
318 | 321 | * @access private |
319 | 322 | */ |
320 | 323 | function trimAccount( $userid ) { |
321 | | - $fname = 'UserDupes::trimAccount'; |
322 | | - wfOut( "deleting..." ); |
323 | | - $this->db->delete( 'user', array( 'user_id' => $userid ), $fname ); |
324 | | - wfOut( " ok" ); |
| 324 | + $this->out( "deleting..." ); |
| 325 | + $this->db->delete( 'user', array( 'user_id' => $userid ), __METHOD__ ); |
| 326 | + $this->out( " ok" ); |
325 | 327 | } |
326 | 328 | |
327 | 329 | } |
Index: branches/REL1_17/phase3/maintenance/upgrade1_5.php |
— | — | @@ -619,9 +619,13 @@ |
620 | 620 | $this->log( 'Done with links.' ); |
621 | 621 | } |
622 | 622 | |
| 623 | + function userDupeCallback( $str ) { |
| 624 | + echo $str; |
| 625 | + } |
| 626 | + |
623 | 627 | function upgradeUser() { |
624 | 628 | // Apply unique index, if necessary: |
625 | | - $duper = new UserDupes( $this->dbw ); |
| 629 | + $duper = new UserDupes( $this->dbw, array( $this, 'userDupeCallback' ) ); |
626 | 630 | if ( $duper->hasUniqueIndex() ) { |
627 | 631 | $this->log( "Already have unique user_name index." ); |
628 | 632 | } else { |
Index: branches/REL1_17/phase3/includes/Defines.php |
— | — | @@ -19,6 +19,7 @@ |
20 | 20 | define( 'DBO_DEFAULT', 16 ); |
21 | 21 | define( 'DBO_PERSISTENT', 32 ); |
22 | 22 | define( 'DBO_SYSDBA', 64 ); //for oracle maintenance |
| 23 | +define( 'DBO_DDLMODE', 128 ); // when using schema files: mostly for Oracle |
23 | 24 | /**@}*/ |
24 | 25 | |
25 | 26 | /**@{ |
Index: branches/REL1_17/phase3/includes/search/SearchPostgres.php |
— | — | @@ -148,7 +148,7 @@ |
149 | 149 | |
150 | 150 | ## We need a separate query here so gin does not complain about empty searches |
151 | 151 | $SQL = "SELECT to_tsquery($prefix $searchstring)"; |
152 | | - $res = $this->db->doQuery($SQL); |
| 152 | + $res = $this->db->query($SQL); |
153 | 153 | if (!$res) { |
154 | 154 | ## TODO: Better output (example to catch: one 'two) |
155 | 155 | die ("Sorry, that was not a valid search string. Please go back and try again"); |
— | — | @@ -206,7 +206,7 @@ |
207 | 207 | $SQL = "UPDATE pagecontent SET textvector = NULL WHERE old_id IN ". |
208 | 208 | "(SELECT rev_text_id FROM revision WHERE rev_page = " . intval( $pageid ) . |
209 | 209 | " ORDER BY rev_text_id DESC OFFSET 1)"; |
210 | | - $this->db->doQuery($SQL); |
| 210 | + $this->db->query($SQL); |
211 | 211 | return true; |
212 | 212 | } |
213 | 213 | |
Index: branches/REL1_17/phase3/includes/GlobalFunctions.php |
— | — | @@ -3411,8 +3411,8 @@ |
3412 | 3412 | } |
3413 | 3413 | |
3414 | 3414 | /** |
3415 | | - * Output some plain text in command-line mode or in the installer (updaters.inc). |
3416 | | - * Do not use it in any other context, its behaviour is subject to change. |
| 3415 | + * Used to be used for outputting text in the installer/updater |
| 3416 | + * @deprecated Warnings in 1.19, removal in 1.20 |
3417 | 3417 | */ |
3418 | 3418 | function wfOut( $s ) { |
3419 | 3419 | global $wgCommandLineMode; |
Property changes on: branches/REL1_17/phase3/includes/GlobalFunctions.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
3420 | 3420 | Merged /trunk/phase3/includes/GlobalFunctions.php:r78231,78259,78300,78450,78531-78532,78823,78946,79056,79066,79191,79283,79537,79678,79684,79738,79741,79745,79750,79767-79768 |
Index: branches/REL1_17/phase3/includes/db/DatabaseOracle.php |
— | — | @@ -311,9 +311,10 @@ |
312 | 312 | |
313 | 313 | // handle some oracle specifics |
314 | 314 | // remove AS column/table/subquery namings |
315 | | - if ( !defined( 'MEDIAWIKI_INSTALL' ) ) { |
| 315 | + if( !$this->getFlag( DBO_DDLMODE ) ) { |
316 | 316 | $sql = preg_replace( '/ as /i', ' ', $sql ); |
317 | 317 | } |
| 318 | + |
318 | 319 | // Oracle has issues with UNION clause if the statement includes LOB fields |
319 | 320 | // So we do a UNION ALL and then filter the results array with array_unique |
320 | 321 | $union_unique = ( preg_match( '/\/\* UNION_UNIQUE \*\/ /', $sql ) != 0 ); |
Index: branches/REL1_17/phase3/includes/db/DatabasePostgres.php |
— | — | @@ -546,36 +546,6 @@ |
547 | 547 | } |
548 | 548 | } |
549 | 549 | |
550 | | - function setup_plpgsql() { |
551 | | - print '<li>Checking for PL/pgSQL ...'; |
552 | | - $SQL = "SELECT 1 FROM pg_catalog.pg_language WHERE lanname = 'plpgsql'"; |
553 | | - $rows = $this->numRows( $this->doQuery( $SQL ) ); |
554 | | - if ( $rows < 1 ) { |
555 | | - // plpgsql is not installed, but if we have a pg_pltemplate table, we should be able to create it |
556 | | - print 'not installed. Attempting to install PL/pgSQL ...'; |
557 | | - $SQL = "SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace) ". |
558 | | - "WHERE relname = 'pg_pltemplate' AND nspname='pg_catalog'"; |
559 | | - $rows = $this->numRows( $this->doQuery( $SQL ) ); |
560 | | - global $wgDBname; |
561 | | - if ( $rows >= 1 ) { |
562 | | - $olde = error_reporting( 0 ); |
563 | | - error_reporting( $olde - E_WARNING ); |
564 | | - $result = $this->doQuery( 'CREATE LANGUAGE plpgsql' ); |
565 | | - error_reporting( $olde ); |
566 | | - if ( !$result ) { |
567 | | - print '<b>FAILED</b>. You need to install the language PL/pgSQL in the database <tt>' . |
568 | | - htmlspecialchars( $wgDBname ) . '</tt></li>'; |
569 | | - dieout( ); |
570 | | - } |
571 | | - } else { |
572 | | - print '<b>FAILED</b>. You need to install the language PL/pgSQL in the database <tt>' . |
573 | | - htmlspecialchars( $wgDBname ) . '</tt></li>'; |
574 | | - dieout( ); |
575 | | - } |
576 | | - } |
577 | | - print "OK</li>\n"; |
578 | | - } |
579 | | - |
580 | 550 | /** |
581 | 551 | * Closes a database connection, if it is open |
582 | 552 | * Returns success, true if already closed |
Index: branches/REL1_17/phase3/includes/installer/DatabaseUpdater.php |
— | — | @@ -26,6 +26,11 @@ |
27 | 27 | |
28 | 28 | protected $extensionUpdates = array(); |
29 | 29 | |
| 30 | + /** |
| 31 | + * Handle to the database subclass |
| 32 | + * |
| 33 | + * @var DatabaseBase |
| 34 | + */ |
30 | 35 | protected $db; |
31 | 36 | |
32 | 37 | protected $shared = false; |
— | — | @@ -47,6 +52,7 @@ |
48 | 53 | global $wgDatabase; |
49 | 54 | $wgDatabase = $db; |
50 | 55 | $this->db = $db; |
| 56 | + $this->db->setFlag( DBO_DDLMODE ); // For Oracle's handling of schema files |
51 | 57 | $this->shared = $shared; |
52 | 58 | if ( $maintenance ) { |
53 | 59 | $this->maintenance = $maintenance; |
— | — | @@ -95,16 +101,20 @@ |
96 | 102 | } |
97 | 103 | |
98 | 104 | /** |
99 | | - * Output some text. Right now this is a wrapper for wfOut, but hopefully |
100 | | - * that function can go away some day :) |
| 105 | + * Output some text. If we're running from web, escape the text first. |
101 | 106 | * |
102 | 107 | * @param $str String: Text to output |
103 | 108 | */ |
104 | | - protected function output( $str ) { |
| 109 | + public function output( $str ) { |
105 | 110 | if ( $this->maintenance->isQuiet() ) { |
106 | 111 | return; |
107 | 112 | } |
108 | | - wfOut( $str ); |
| 113 | + global $wgCommandLineMode; |
| 114 | + if( !$wgCommandLineMode ) { |
| 115 | + $str = htmlspecialchars( $str ); |
| 116 | + } |
| 117 | + echo $str; |
| 118 | + flush(); |
109 | 119 | } |
110 | 120 | |
111 | 121 | /** |
— | — | @@ -115,14 +125,24 @@ |
116 | 126 | * first item is the callback function, it also can be a |
117 | 127 | * simple string with the name of a function in this class, |
118 | 128 | * following elements are parameters to the function. |
119 | | - * Note that callback functions will recieve this object as |
| 129 | + * Note that callback functions will receive this object as |
120 | 130 | * first parameter. |
121 | 131 | */ |
122 | | - public function addExtensionUpdate( $update ) { |
| 132 | + public function addExtensionUpdate( Array $update ) { |
123 | 133 | $this->extensionUpdates[] = $update; |
124 | 134 | } |
125 | 135 | |
126 | 136 | /** |
| 137 | + * Convenience wrapper for addExtensionUpdate() when adding a new table (which |
| 138 | + * is the most common usage of updaters in an extension) |
| 139 | + * @param $tableName String Name of table to create |
| 140 | + * @param $sqlPath String Full path to the schema file |
| 141 | + */ |
| 142 | + public function addExtensionTable( $tableName, $sqlPath ) { |
| 143 | + $this->extensionUpdates[] = array( 'addTable', $tableName, $sqlPath, true ); |
| 144 | + } |
| 145 | + |
| 146 | + /** |
127 | 147 | * Get the list of extension-defined updates |
128 | 148 | * |
129 | 149 | * @return Array |
— | — | @@ -331,7 +351,7 @@ |
332 | 352 | * @param $patch String Path to the patch file |
333 | 353 | * @param $fullpath Boolean Whether to treat $patch path as a relative or not |
334 | 354 | */ |
335 | | - function addIndex( $table, $index, $patch, $fullpath = false ) { |
| 355 | + protected function addIndex( $table, $index, $patch, $fullpath = false ) { |
336 | 356 | if ( $this->db->indexExists( $table, $index ) ) { |
337 | 357 | $this->output( "...$index key already set on $table table.\n" ); |
338 | 358 | } else { |
— | — | @@ -349,7 +369,7 @@ |
350 | 370 | * @param $patch String Path to the patch file |
351 | 371 | * @param $fullpath Boolean Whether to treat $patch path as a relative or not |
352 | 372 | */ |
353 | | - function dropField( $table, $field, $patch, $fullpath = false ) { |
| 373 | + protected function dropField( $table, $field, $patch, $fullpath = false ) { |
354 | 374 | if ( $this->db->fieldExists( $table, $field ) ) { |
355 | 375 | $this->output( "Table $table contains $field field. Dropping... " ); |
356 | 376 | $this->applyPatch( $patch, $fullpath ); |
— | — | @@ -367,7 +387,7 @@ |
368 | 388 | * @param $patch String: Path to the patch file |
369 | 389 | * @param $fullpath Boolean: Whether to treat $patch path as a relative or not |
370 | 390 | */ |
371 | | - function dropIndex( $table, $index, $patch, $fullpath = false ) { |
| 391 | + protected function dropIndex( $table, $index, $patch, $fullpath = false ) { |
372 | 392 | if ( $this->db->indexExists( $table, $index ) ) { |
373 | 393 | $this->output( "Dropping $index from table $table... " ); |
374 | 394 | $this->applyPatch( $patch, $fullpath ); |
— | — | @@ -457,7 +477,7 @@ |
458 | 478 | $this->output( "Done populating log_search table.\n" ); |
459 | 479 | } |
460 | 480 | |
461 | | - function doUpdateTranscacheField() { |
| 481 | + protected function doUpdateTranscacheField() { |
462 | 482 | if ( $this->updateRowExists( 'convert transcache field' ) ) { |
463 | 483 | $this->output( "...transcache tc_time already converted.\n" ); |
464 | 484 | return; |
Index: branches/REL1_17/phase3/includes/installer/MysqlUpdater.php |
— | — | @@ -521,7 +521,7 @@ |
522 | 522 | } |
523 | 523 | |
524 | 524 | protected function doUserUniqueUpdate() { |
525 | | - $duper = new UserDupes( $this->db ); |
| 525 | + $duper = new UserDupes( $this->db, array( $this, 'output' ) ); |
526 | 526 | if ( $duper->hasUniqueIndex() ) { |
527 | 527 | $this->output( "...already have unique user_name index.\n" ); |
528 | 528 | return; |
Property changes on: branches/REL1_17/phase3/includes/installer/MysqlUpdater.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
529 | 529 | Merged /trunk/phase3/includes/installer/MysqlUpdater.php:r78043,78231,78259,78300,78450,78531-78532,78823,78946,79056,79066,79191,79283,79537,79678,79684,79738,79741,79745,79750,79767-79768 |
Index: branches/REL1_17/phase3/includes/installer/OracleUpdater.php |
— | — | @@ -13,12 +13,6 @@ |
14 | 14 | * @since 1.17 |
15 | 15 | */ |
16 | 16 | class OracleUpdater extends DatabaseUpdater { |
17 | | - |
18 | | - protected function __construct( DatabaseBase &$db, $shared ) { |
19 | | - define( 'MEDIAWIKI_INSTALL', true ); |
20 | | - parent::__construct( $db, $shared ); |
21 | | - } |
22 | | - |
23 | 17 | protected function getCoreUpdateList() { |
24 | 18 | return array( |
25 | 19 | // 1.16 |
— | — | @@ -29,7 +23,6 @@ |
30 | 24 | ); |
31 | 25 | } |
32 | 26 | |
33 | | - |
34 | 27 | /** |
35 | 28 | * MySQL uses datatype defaults for NULL inserted into NOT NULL fields |
36 | 29 | * In namespace case that results into insert of 0 which is default namespace |
— | — | @@ -93,7 +86,7 @@ |
94 | 87 | public function doUpdates( $purge = true ) { |
95 | 88 | parent::doUpdates(); |
96 | 89 | |
97 | | - $this->db->doQuery( 'BEGIN fill_wiki_info; END;' ); |
| 90 | + $this->db->query( 'BEGIN fill_wiki_info; END;' ); |
98 | 91 | } |
99 | 92 | |
100 | 93 | } |
Index: branches/REL1_17/phase3/includes/installer/WebInstaller.php |
— | — | @@ -277,22 +277,6 @@ |
278 | 278 | * Start the PHP session. This may be called before execute() to start the PHP session. |
279 | 279 | */ |
280 | 280 | public function startSession() { |
281 | | - $sessPath = $this->getSessionSavePath(); |
282 | | - |
283 | | - if( $sessPath != '' ) { |
284 | | - if( strval( ini_get( 'open_basedir' ) ) != '' ) { |
285 | | - // we need to skip the following check when open_basedir is on. |
286 | | - // The session path probably *wont* be writable by the current |
287 | | - // user, and telling them to change it is bad. Bug 23021. |
288 | | - } elseif( !is_dir( $sessPath ) || !is_writeable( $sessPath ) ) { |
289 | | - $this->showError( 'config-session-path-bad', $sessPath ); |
290 | | - return false; |
291 | | - } |
292 | | - } else { |
293 | | - // If the path is unset it'll default to some system bit, which *probably* is ok... |
294 | | - // not sure how to actually get what will be used. |
295 | | - } |
296 | | - |
297 | 281 | if( wfIniGetBool( 'session.auto_start' ) || session_id() ) { |
298 | 282 | // Done already |
299 | 283 | return true; |
— | — | @@ -312,23 +296,6 @@ |
313 | 297 | } |
314 | 298 | |
315 | 299 | /** |
316 | | - * Get the value of session.save_path |
317 | | - * |
318 | | - * Per http://www.php.net/manual/en/session.configuration.php#ini.session.save-path, |
319 | | - * this may have an initial integer value to indicate the depth of session |
320 | | - * storage (eg /tmp/a/b/c). Explode on ; and check and see if this part is |
321 | | - * there or not. Should also allow paths with semicolons in them (if you |
322 | | - * really wanted your session files stored in /tmp/some;dir) which PHP |
323 | | - * supposedly supports. |
324 | | - * |
325 | | - * @return String |
326 | | - */ |
327 | | - private function getSessionSavePath() { |
328 | | - $parts = explode( ';', ini_get( 'session.save_path' ), 2 ); |
329 | | - return count( $parts ) == 1 ? $parts[0] : $parts[1]; |
330 | | - } |
331 | | - |
332 | | - /** |
333 | 300 | * Get a hash of data identifying this MW installation. |
334 | 301 | * |
335 | 302 | * This is used by config/index.php to prevent multiple installations of MW |
— | — | @@ -571,8 +538,9 @@ |
572 | 539 | */ |
573 | 540 | private function endPageWrapper() { |
574 | 541 | $this->output->addHTMLNoFlush( |
575 | | - "</div>\n" . |
576 | | - "<br style=\"clear:both\"/>\n" . |
| 542 | + "<div class=\"visualClear\"></div>\n" . |
| 543 | + "</div>\n" . |
| 544 | + "<div class=\"visualClear\"></div>\n" . |
577 | 545 | "</div>" ); |
578 | 546 | } |
579 | 547 | |
Index: branches/REL1_17/phase3/includes/installer/PostgresUpdater.php |
— | — | @@ -48,8 +48,8 @@ |
49 | 49 | array( 'addTable', 'redirect', 'patch-redirect.sql' ), |
50 | 50 | array( 'addTable', 'updatelog', 'patch-updatelog.sql' ), |
51 | 51 | array( 'addTable', 'change_tag', 'patch-change_tag.sql' ), |
52 | | - array( 'addTable', 'tag_summary', 'patch-change_tag.sql' ), |
53 | | - array( 'addTable', 'valid_tag', 'patch-change_tag.sql' ), |
| 52 | + array( 'addTable', 'tag_summary', 'patch-tag_summary.sql' ), |
| 53 | + array( 'addTable', 'valid_tag', 'patch-valid_tag.sql' ), |
54 | 54 | array( 'addTable', 'user_properties', 'patch-user_properties.sql' ), |
55 | 55 | array( 'addTable', 'log_search', 'patch-log_search.sql' ), |
56 | 56 | array( 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ), |
— | — | @@ -516,14 +516,10 @@ |
517 | 517 | protected function checkPgUser() { |
518 | 518 | global $wgDBmwschema, $wgDBts2schema, $wgDBuser; |
519 | 519 | |
520 | | - # Just in case their LocalSettings.php does not have this: |
521 | | - if ( !isset( $wgDBmwschema ) ) { |
522 | | - $wgDBmwschema = 'mediawiki'; |
523 | | - } |
| 520 | + $config = $this->db->selectField( |
| 521 | + 'pg_catalog.pg_user', "array_to_string(useconfig,'*')", |
| 522 | + array( 'usename' => $wgDBuser ), __METHOD__ ); |
524 | 523 | |
525 | | - $safeuser = $this->db->addQuotes( $wgDBuser ); |
526 | | - $SQL = "SELECT array_to_string(useconfig,'*') FROM pg_catalog.pg_user WHERE usename = $safeuser"; |
527 | | - $config = pg_fetch_result( $this->db->doQuery( $SQL ), 0, 0 ); |
528 | 524 | $conf = array(); |
529 | 525 | foreach ( explode( '*', $config ) as $c ) { |
530 | 526 | list( $x, $y ) = explode( '=', $c ); |
— | — | @@ -546,8 +542,8 @@ |
547 | 543 | } |
548 | 544 | $search_path = str_replace( ', ,', ',', $search_path ); |
549 | 545 | if ( array_key_exists( 'search_path', $conf ) === false || $search_path != $conf['search_path'] ) { |
550 | | - $this->db->doQuery( "ALTER USER $wgDBuser SET search_path = $search_path" ); |
551 | | - $this->db->doQuery( "SET search_path = $search_path" ); |
| 546 | + $this->db->query( "ALTER USER $wgDBuser SET search_path = $search_path" ); |
| 547 | + $this->db->query( "SET search_path = $search_path" ); |
552 | 548 | } else { |
553 | 549 | $path = $conf['search_path']; |
554 | 550 | $this->output( "... search_path for user \"$wgDBuser\" looks correct ($path)\n" ); |
— | — | @@ -562,8 +558,8 @@ |
563 | 559 | foreach ( $goodconf as $key => $value ) { |
564 | 560 | if ( !array_key_exists( $key, $conf ) or $conf[$key] !== $value ) { |
565 | 561 | $this->output( "Setting $key to '$value' for user \"$wgDBuser\"\n" ); |
566 | | - $this->db->doQuery( "ALTER USER $wgDBuser SET $key = '$value'" ); |
567 | | - $this->db->doQuery( "SET $key = '$value'" ); |
| 562 | + $this->db->query( "ALTER USER $wgDBuser SET $key = '$value'" ); |
| 563 | + $this->db->query( "SET $key = '$value'" ); |
568 | 564 | } else { |
569 | 565 | $this->output( "... default value of \"$key\" is correctly set to \"$value\" for user \"$wgDBuser\"\n" ); |
570 | 566 | } |
Index: branches/REL1_17/phase3/includes/installer/Installer.php |
— | — | @@ -139,7 +139,7 @@ |
140 | 140 | * Under the web subclass, it can already be assumed that PHP 5+ is in use |
141 | 141 | * and that sessions are working. |
142 | 142 | * |
143 | | - * @return boolean |
| 143 | + * @return Status |
144 | 144 | */ |
145 | 145 | public function doEnvironmentChecks() { |
146 | 146 | $this->showMessage( 'config-env-php', phpversion() ); |
— | — | @@ -155,13 +155,7 @@ |
156 | 156 | |
157 | 157 | $this->setVar( '_Environment', $good ); |
158 | 158 | |
159 | | - if ( $good ) { |
160 | | - $this->showMessage( 'config-env-good' ); |
161 | | - } else { |
162 | | - $this->showMessage( 'config-env-bad' ); |
163 | | - } |
164 | | - |
165 | | - return $good; |
| 159 | + return $good ? Status::newGood() : Status::newFatal( 'config-env-bad' ); |
166 | 160 | } |
167 | 161 | |
168 | 162 | /** |
— | — | @@ -227,18 +221,17 @@ |
228 | 222 | $_lsExists = file_exists( "$IP/LocalSettings.php" ); |
229 | 223 | wfRestoreWarnings(); |
230 | 224 | |
231 | | - if( $_lsExists ) { |
232 | | - require( "$IP/includes/DefaultSettings.php" ); |
233 | | - require( "$IP/LocalSettings.php" ); |
234 | | - if ( file_exists( "$IP/AdminSettings.php" ) ) { |
235 | | - require( "$IP/AdminSettings.php" ); |
236 | | - } |
237 | | - $vars = get_defined_vars(); |
238 | | - unset( $vars['_lsExists'] ); |
239 | | - return $vars; |
240 | | - } else { |
| 225 | + if( !$_lsExists ) { |
241 | 226 | return false; |
242 | 227 | } |
| 228 | + unset($_lsExists); |
| 229 | + |
| 230 | + require( "$IP/includes/DefaultSettings.php" ); |
| 231 | + require( "$IP/LocalSettings.php" ); |
| 232 | + if ( file_exists( "$IP/AdminSettings.php" ) ) { |
| 233 | + require( "$IP/AdminSettings.php" ); |
| 234 | + } |
| 235 | + return get_defined_vars(); |
243 | 236 | } |
244 | 237 | |
245 | 238 | /** |
— | — | @@ -573,7 +566,7 @@ |
574 | 567 | $names = array( "gdiff3", "diff3", "diff3.exe" ); |
575 | 568 | $versionInfo = array( '$1 --version 2>&1', 'GNU diffutils' ); |
576 | 569 | |
577 | | - $diff3 = $this->locateExecutableInDefaultPaths( $names, $versionInfo ); |
| 570 | + $diff3 = self::locateExecutableInDefaultPaths( $names, $versionInfo ); |
578 | 571 | |
579 | 572 | if ( $diff3 ) { |
580 | 573 | $this->setVar( 'wgDiff3', $diff3 ); |
— | — | @@ -588,7 +581,7 @@ |
589 | 582 | */ |
590 | 583 | protected function envCheckGraphics() { |
591 | 584 | $names = array( wfIsWindows() ? 'convert.exe' : 'convert' ); |
592 | | - $convert = $this->locateExecutableInDefaultPaths( $names, array( '$1 -version', 'ImageMagick' ) ); |
| 585 | + $convert = self::locateExecutableInDefaultPaths( $names, array( '$1 -version', 'ImageMagick' ) ); |
593 | 586 | |
594 | 587 | if ( $convert ) { |
595 | 588 | $this->setVar( 'wgImageMagickConvertCommand', $convert ); |
Index: branches/REL1_17/phase3/includes/installer/CoreInstaller.php |
— | — | @@ -179,13 +179,26 @@ |
180 | 180 | ); |
181 | 181 | |
182 | 182 | /** |
| 183 | + * URL to mediawiki-announce subscription |
| 184 | + */ |
| 185 | + protected $mediaWikiAnnounceUrl = 'https://lists.wikimedia.org/mailman/subscribe/mediawiki-announce'; |
| 186 | + |
| 187 | + /** |
| 188 | + * Supported language codes for Mailman |
| 189 | + */ |
| 190 | + protected $mediaWikiAnnounceLanguages = array( |
| 191 | + 'ca', 'cs', 'da', 'de', 'en', 'es', 'et', 'eu', 'fi', 'fr', 'hr', 'hu', |
| 192 | + 'it', 'ja', 'ko', 'lt', 'nl', 'no', 'pl', 'pt', 'pt-br', 'ro', 'ru', |
| 193 | + 'sl', 'sr', 'sv', 'tr', 'uk' |
| 194 | + ); |
| 195 | + |
| 196 | + /** |
183 | 197 | * TODO: document |
184 | 198 | * |
185 | 199 | * @param $status Status |
186 | 200 | */ |
187 | 201 | public abstract function showStatusMessage( Status $status ); |
188 | 202 | |
189 | | - |
190 | 203 | /** |
191 | 204 | * Constructor, always call this from child classes. |
192 | 205 | */ |
— | — | @@ -229,7 +242,7 @@ |
230 | 243 | } |
231 | 244 | |
232 | 245 | $this->parserTitle = Title::newFromText( 'Installer' ); |
233 | | - $this->parserOptions = new ParserOptions; |
| 246 | + $this->parserOptions = new ParserOptions; // language will be wrong :( |
234 | 247 | $this->parserOptions->setEditSection( false ); |
235 | 248 | } |
236 | 249 | |
— | — | @@ -246,6 +259,14 @@ |
247 | 260 | } |
248 | 261 | |
249 | 262 | /** |
| 263 | + * ParserOptions are constructed before we determined the language, so fix it |
| 264 | + */ |
| 265 | + public function setParserLanguage( $lang ) { |
| 266 | + $this->parserOptions->setTargetLanguage( $lang ); |
| 267 | + $this->parserOptions->setUserLang( $lang ); |
| 268 | + } |
| 269 | + |
| 270 | + /** |
250 | 271 | * Extension tag hook for a documentation link. |
251 | 272 | */ |
252 | 273 | public function docLink( $linkText, $attribs, $parser ) { |
— | — | @@ -480,12 +501,41 @@ |
481 | 502 | |
482 | 503 | $user->addGroup( 'sysop' ); |
483 | 504 | $user->addGroup( 'bureaucrat' ); |
| 505 | + if( $this->getVar( '_AdminEmail' ) ) { |
| 506 | + $user->setEmail( $this->getVar( '_AdminEmail' ) ); |
| 507 | + } |
484 | 508 | $user->saveSettings(); |
485 | 509 | } |
| 510 | + $status = Status::newGood(); |
486 | 511 | |
487 | | - return Status::newGood(); |
| 512 | + if( $this->getVar( '_Subscribe' ) && $this->getVar( '_AdminEmail' ) ) { |
| 513 | + $this->subscribeToMediaWikiAnnounce( $status ); |
| 514 | + } |
| 515 | + |
| 516 | + return $status; |
488 | 517 | } |
489 | 518 | |
| 519 | + private function subscribeToMediaWikiAnnounce( Status $s ) { |
| 520 | + $params = array( |
| 521 | + 'email' => $this->getVar( '_AdminEmail' ), |
| 522 | + 'language' => 'en', |
| 523 | + 'digest' => 0 |
| 524 | + ); |
| 525 | + |
| 526 | + // Mailman doesn't support as many languages as we do, so check to make |
| 527 | + // sure their selected language is available |
| 528 | + $myLang = $this->getVar( '_UserLang' ); |
| 529 | + if( in_array( $myLang, $this->mediaWikiAnnounceLanguages ) ) { |
| 530 | + $myLang = $myLang == 'pt-br' ? 'pt_BR' : $myLang; // rewrite to Mailman's pt_BR |
| 531 | + $params['language'] = $myLang; |
| 532 | + } |
| 533 | + |
| 534 | + $res = Http::post( $this->mediaWikiAnnounceUrl, array( 'postData' => $params ) ); |
| 535 | + if( !$res ) { |
| 536 | + $s->warning( 'config-install-subscribe-fail' ); |
| 537 | + } |
| 538 | + } |
| 539 | + |
490 | 540 | /** |
491 | 541 | * Insert Main Page with default content. |
492 | 542 | * |
Property changes on: branches/REL1_17/phase3/includes/installer/CoreInstaller.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
493 | 543 | Merged /trunk/phase3/includes/installer/CoreInstaller.php:r78043,78231,78259,78300,78450,78531-78532,78823,78946,79056,79066,79191,79283,79537,79678,79684,79738,79741,79745,79750,79767-79768 |
Index: branches/REL1_17/phase3/includes/installer/Installer.i18n.php |
— | — | @@ -38,7 +38,6 @@ |
39 | 39 | Restart the installation process.', |
40 | 40 | 'config-no-session' => 'Your session data was lost! |
41 | 41 | Check your php.ini and make sure <code>session.save_path</code> is set to an appropriate directory.', |
42 | | - 'config-session-path-bad' => 'Your <code>session.save_path</code> (<code>$1</code>) seems to be invalid or unwritable.', |
43 | 42 | 'config-your-language' => 'Your language:', |
44 | 43 | 'config-your-language-help' => 'Select a language to use during the installation process.', |
45 | 44 | 'config-wiki-language' => 'Wiki language:', |
— | — | @@ -79,8 +78,8 @@ |
80 | 79 | * [http://www.mediawiki.org/wiki/Help:Contents User's Guide] |
81 | 80 | * [http://www.mediawiki.org/wiki/Manual:Contents Administrator's Guide] |
82 | 81 | * [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]", |
83 | | - 'config-env-good' => '<span class="success-message">The environment has been checked. |
84 | | -You can install MediaWiki.</span>', // FIXME: take span out of message. |
| 82 | + 'config-env-good' => 'The environment has been checked. |
| 83 | +You can install MediaWiki.', |
85 | 84 | 'config-env-bad' => 'The environment has been checked. |
86 | 85 | You cannot install MediaWiki.', |
87 | 86 | 'config-env-php' => 'PHP $1 is installed.', |
— | — | @@ -234,9 +233,9 @@ |
235 | 234 | 'config-invalid-db-server-oracle' => 'Invalid database TNS "$1". |
236 | 235 | Use only ASCII letters (a-z, A-Z), numbers (0-9), underscores (_) and dots (.).', |
237 | 236 | 'config-invalid-db-name' => 'Invalid database name "$1". |
238 | | -Use only ASCII letters (a-z, A-Z), numbers (0-9) and underscores (_).', |
| 237 | +Use only ASCII letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-).', |
239 | 238 | 'config-invalid-db-prefix' => 'Invalid database prefix "$1". |
240 | | -Use only ASCII letters (a-z, A-Z), numbers (0-9) and underscores (_).', |
| 239 | +Use only ASCII letters (a-z, A-Z), numbers (0-9), underscores (_) and hyphens (-).', |
241 | 240 | 'config-connection-error' => '$1. |
242 | 241 | |
243 | 242 | Check the host, username and password below and try again.', |
— | — | @@ -344,6 +343,7 @@ |
345 | 344 | 'config-admin-email-help' => 'Enter an e-mail address here to allow you to receive e-mail from other users on the wiki, reset your password, and be notified of changes to pages on your watchlist.', |
346 | 345 | 'config-admin-error-user' => 'Internal error when creating an admin with the name "<nowiki>$1</nowiki>".', |
347 | 346 | 'config-admin-error-password' => 'Internal error when setting a password for the admin "<nowiki>$1</nowiki>": <pre>$2</pre>', |
| 347 | + 'config-admin-error-bademail' => 'You have entered an invalid e-mail address', |
348 | 348 | 'config-subscribe' => 'Subscribe to the [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce release announcements mailing list].', |
349 | 349 | 'config-subscribe-help' => 'This is a low-volume mailing list used for release announcements, including important security announcements. |
350 | 350 | You should subscribe to it and update your MediaWiki installation when new versions come out.', |
— | — | @@ -450,6 +450,7 @@ |
451 | 451 | 'config-install-pg-schema-failed' => 'Tables creation failed. |
452 | 452 | Make sure that the user "$1" can write to the schema "$2".', |
453 | 453 | 'config-install-pg-commit' => 'Committing changes', |
| 454 | + 'config-pg-no-plpgsql' => 'You need to install the language PL/pgSQL in the database $1', |
454 | 455 | 'config-install-user' => 'Creating database user', |
455 | 456 | 'config-install-user-failed' => 'Granting permission to user "$1" failed: $2', |
456 | 457 | 'config-install-tables' => 'Creating tables', |
— | — | @@ -465,6 +466,7 @@ |
466 | 467 | Consider changing it manually.", |
467 | 468 | 'config-install-upgradekey' => 'Generating default upgrade key', |
468 | 469 | 'config-install-sysop' => 'Creating administrator user account', |
| 470 | + 'config-install-subscribe-fail' => 'Unable to subscribe to mediawiki-announce', |
469 | 471 | 'config-install-mainpage' => 'Creating main page with default content', |
470 | 472 | 'config-install-mainpage-failed' => 'Could not insert main page.', |
471 | 473 | 'config-install-done' => "'''Congratulations!''' |
— | — | @@ -689,10 +691,10 @@ |
690 | 692 | * [http://www.mediawiki.org/wiki/Help:Contents Gebruikershandleiding] (Engelstalig) |
691 | 693 | * [http://www.mediawiki.org/wiki/Manual:Contents Administrateurshandleiding] (Engelstalig) |
692 | 694 | * [http://www.mediawiki.org/wiki/Manual:FAQ Algemene vrae] (Engelstalig)', |
693 | | - 'config-env-good' => '<span class="success-message">Die omgewing is gekontroleer. |
694 | | -U kan MediaWiki installeer.</span>', |
| 695 | + 'config-env-good' => 'Die omgewing is gekontroleer. |
| 696 | +U kan MediaWiki installeer.', |
695 | 697 | 'config-env-bad' => 'Die omgewing is gekontroleer. |
696 | | -U kan nie MediaWiki installeer nie.</span>', |
| 698 | +U kan nie MediaWiki installeer nie.', |
697 | 699 | 'config-env-php' => 'PHP $1 is tans geïnstalleer.', |
698 | 700 | 'config-env-latest-ok' => 'U is besig om die nuutste weergawe van MediaWiki te installeer.', |
699 | 701 | 'config-env-latest-new' => "'''Let op:''' U is besig om 'n ontwikkelingsweergawe van MediaWiki te installeer.", |
— | — | @@ -906,8 +908,8 @@ |
907 | 909 | * [http://www.mediawiki.org/wiki/Help:Contents Дапамога карыстальнікам] |
908 | 910 | * [http://www.mediawiki.org/wiki/Manual:Contents Дапамога адміністратарам] |
909 | 911 | * [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]', |
910 | | - 'config-env-good' => '<span class="success-message">Асяродзьдзе было праверанае. |
911 | | -Вы можаце ўсталёўваць MediaWiki.</span>', |
| 912 | + 'config-env-good' => 'Асяродзьдзе было праверанае. |
| 913 | +Вы можаце ўсталёўваць MediaWiki.', |
912 | 914 | 'config-env-bad' => 'Асяродзьдзе было праверанае. |
913 | 915 | Усталяваньне MediaWiki немагчымае.', |
914 | 916 | 'config-env-php' => 'Усталяваны PHP $1.', |
— | — | @@ -1323,6 +1325,288 @@ |
1324 | 1326 | Калі Вы гэта зробіце, Вы можаце '''[$2 ўвайсьці ў Вашую вікі]'''.", |
1325 | 1327 | ); |
1326 | 1328 | |
| 1329 | +/** Bulgarian (Български) |
| 1330 | + * @author DCLXVI |
| 1331 | + */ |
| 1332 | +$messages['bg'] = array( |
| 1333 | + 'config-desc' => 'Инсталатор на MediaWiki', |
| 1334 | + 'config-title' => 'Инсталиране на MediaWiki $1', |
| 1335 | + 'config-information' => 'Информация', |
| 1336 | + 'config-localsettings-upgrade' => 'Беше открит файл <code>LocalSettings.php</code>. |
| 1337 | +За надграждане на съществуващата инсталация, необходимо е в кутията по-долу да се въведе стойността на <code>$wgUpgradeKey</code>. |
| 1338 | +Тази информация е налична в LocalSettings.php.', |
| 1339 | + 'config-localsettings-cli-upgrade' => 'Беше открит файл LocalSettings.php. |
| 1340 | +За надграждане на наличната инсталация, необходимо е да се въведе ключ --upgrade=yes.', |
| 1341 | + 'config-localsettings-key' => 'Ключ за надграждане:', |
| 1342 | + 'config-localsettings-badkey' => 'Предоставеният ключ е неправилен.', |
| 1343 | + 'config-upgrade-key-missing' => 'Беше открита съществуваща инсталация на МедияУики. |
| 1344 | +За надграждане на съществуващата инсталация, необходимо е да се постави следният ред в края на файла LocalSettings.php: |
| 1345 | + |
| 1346 | +$1', |
| 1347 | + 'config-localsettings-incomplete' => 'Съществуващият файл LocalSettings.php изглежда непълен. |
| 1348 | +Променливата $1 не е зададена. |
| 1349 | +Необходимо е да се редактира файлът LocalSettings.php и да се зададе променливата, след което да се натисне "Продължаване".', |
| 1350 | + 'config-localsettings-connection-error' => 'Възникна грешка при свързване с базата от данни чрез данните, посочени в LocalSettings.php или AdminSettings.php. Необходимо е да се коригират тези настройки преди повторен опит за свързване. |
| 1351 | + |
| 1352 | +$1', |
| 1353 | + 'config-session-error' => 'Грешка при създаване на сесия: $1', |
| 1354 | + 'config-your-language' => 'Вашият език:', |
| 1355 | + 'config-your-language-help' => 'Избиране на език за използване по време на инсталацията.', |
| 1356 | + 'config-wiki-language' => 'Език на уикито:', |
| 1357 | + 'config-wiki-language-help' => 'Избиране на език, на който ще е основното съдържание на уикито.', |
| 1358 | + 'config-back' => '← Връщане', |
| 1359 | + 'config-continue' => 'Продължаване →', |
| 1360 | + 'config-page-language' => 'Език', |
| 1361 | + 'config-page-welcome' => 'Добре дошли в МедияУики!', |
| 1362 | + 'config-page-dbconnect' => 'Свързване с базата от данни', |
| 1363 | + 'config-page-upgrade' => 'Надграждане на съществуваща инсталация', |
| 1364 | + 'config-page-dbsettings' => 'Настройки на базата от данни', |
| 1365 | + 'config-page-name' => 'Име', |
| 1366 | + 'config-page-options' => 'Настройки', |
| 1367 | + 'config-page-install' => 'Инсталиране', |
| 1368 | + 'config-page-complete' => 'Готово!', |
| 1369 | + 'config-page-restart' => 'Рестартиране на инсталацията', |
| 1370 | + 'config-page-copying' => 'Лицензно споразумение', |
| 1371 | + 'config-page-upgradedoc' => 'Надграждане', |
| 1372 | + 'config-page-existingwiki' => 'Съществуващо уики', |
| 1373 | + 'config-help-restart' => 'Необходимо е потвърждение за изтриване на всички въведени и съхранени данни и започване отначало на процеса по инсталация.', |
| 1374 | + 'config-restart' => 'Да, започване отначало', |
| 1375 | + 'config-welcome' => '=== Проверка на средата === |
| 1376 | +Извършени бяха основни проверки, за да се провери дали средата е подходяща за инсталиране на МедияУики. |
| 1377 | +Ако е необходима помощ по време на инсталацията, резултатите от направените проверки трябва също да бъдат предоставени.', |
| 1378 | + 'config-copyright' => "=== Авторски права и Условия === |
| 1379 | + |
| 1380 | +$1 |
| 1381 | + |
| 1382 | +Тази програма е свободен софтуер, който може да се променя и/или разпространява според Общия публичен лиценз на GNU, както е публикуван от Free Software Foundation във версия на Лиценза 2 или по-късна версия. |
| 1383 | + |
| 1384 | +Тази програма се разпространява с надеждата, че ще е полезна, но '''без каквито и да е гаранции'''; без дори косвена гаранция за '''продаваемост''' или '''прогодност за конкретна употреба'''. |
| 1385 | +За повече подробности се препоръчва преглеждането на Общия публичен лиценз на GNU. |
| 1386 | + |
| 1387 | +Към програмата трябва да е приложено <doclink href=Copying>копие на Общия публичен лиценз на GNU</doclink>; ако не, можете да пишете на Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. или да [http://www.gnu.org/copyleft/gpl.html го прочетете онлайн].", |
| 1388 | + 'config-sidebar' => '* [http://www.mediawiki.org Сайт на MediaWiki] |
| 1389 | +* [http://www.mediawiki.org/wiki/Help:Contents Наръчник на потребителя] |
| 1390 | +* [http://www.mediawiki.org/wiki/Manual:Contents Наръчник на администратора] |
| 1391 | +* [http://www.mediawiki.org/wiki/Manual:FAQ ЧЗВ]', |
| 1392 | + 'config-env-good' => 'Средата беше проверена. |
| 1393 | +Инсталирането на МедияУики е възможно.', |
| 1394 | + 'config-env-bad' => 'Средата беше проверена. |
| 1395 | +Не е възможна инсталация на МедияУики.', |
| 1396 | + 'config-unicode-using-utf8' => 'Използване на utf8_normalize.so от Brion Vibber за Unicode-нормализация.', |
| 1397 | + 'config-unicode-using-intl' => 'Използване на разширението [http://pecl.php.net/intl intl PECL] за Unicode-нормализация.', |
| 1398 | + 'config-unicode-pure-php-warning' => "'''Предупреждение''': [http://pecl.php.net/intl Разширението intl PECL] не е налично за справяне с нормализацията на Unicode, превключване към по-бавното изпълнение на чист PHP. |
| 1399 | +Ако сайтът е с голям трафик, препоръчително е запознаването с [http://www.mediawiki.org/wiki/Unicode_normalization_considerations нормализацията на Unicode].", |
| 1400 | + 'config-no-db' => 'Не може да бъде открит подходящ драйвер за база от данни!', |
| 1401 | + 'config-no-fts3' => "'''Предупреждение''': SQLite е компилирана без [http://sqlite.org/fts3.html модула FTS3], затова възможностите за търсене няма да са достъпни.", |
| 1402 | + 'config-register-globals' => "'''Предупреждение: Настройката на PHP <code>[http://php.net/register_globals register_globals]</code> е включена.''' |
| 1403 | +'''При възможност е препоръчително тя да бъде изключена.''' |
| 1404 | +МедияУики ще работи, но сървърът е изложен на евентуални пропуски в сигурността.", |
| 1405 | + 'config-magic-quotes-runtime' => "'''Фатално: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] е активирана!''' |
| 1406 | +Това може да повреди непредвидимо въвеждането на данните. |
| 1407 | +Инсталацията на МедияУики е невъзможна докато тази настройка не бъде изключена.", |
| 1408 | + 'config-magic-quotes-sybase' => "'''Фатално: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] е активирана!''' |
| 1409 | +Това може да повреди непредвидимо въвеждането на данните. |
| 1410 | +Инсталацията на МедияУики е невъзможна докато тази настройка не бъде изключена.", |
| 1411 | + 'config-mbstring' => "'''Фатално: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] е активирана!''' |
| 1412 | +Това може да повреди непредвидимо въвеждането на данните. |
| 1413 | +Инсталацията на МедияУики е невъзможна докато тази настройка не бъде изключена.", |
| 1414 | + 'config-ze1' => "'''Фатално: [http://www.php.net/manual/en/ini.core.php zend.ze1_compatibility_mode] е активирана!''' |
| 1415 | +Тази настройка причинява ужасни грешки в МедияУики. |
| 1416 | +Невъзможно е инсталирането и използването на МедияУики докато тази настройка не бъде изключена.", |
| 1417 | + 'config-safe-mode' => "'''Предупреждение:''' PHP работи в [http://www.php.net/features.safe-mode безопасен режим]. |
| 1418 | +Това може да създаде проблеми, особено ако качването на файлове е разрешено, както и при поддръжката на <code>math</code>.", |
| 1419 | + 'config-pcre-no-utf8' => "'''Фатално''': Модулът PCRE на PHP изглежда е компилиран без поддръжка на PCRE_UTF8. |
| 1420 | +За да функционира правилно, МедияУики изисква поддръжка на UTF-8.", |
| 1421 | + 'config-memory-bad' => "'''Предупреждение:''' <code>memory_limit</code> на PHP е $1. |
| 1422 | +Стойността вероятно е твърде ниска. |
| 1423 | +Възможно е инсталацията да се провали!", |
| 1424 | + 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] е инсталиран', |
| 1425 | + 'config-apc' => '[http://www.php.net/apc APC] е инсталиран', |
| 1426 | + 'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] е инсталиран', |
| 1427 | + 'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] е инсталиран', |
| 1428 | + 'config-no-cache' => "'''Предупреждение:''' Не бяха открити [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC] [http://trac.lighttpd.net/xcache/ XCache] или [http://www.iis.net/download/WinCacheForPhp WinCache]. |
| 1429 | +Обектното кеширане не е включено.", |
| 1430 | + 'config-diff3-bad' => 'GNU diff3 не е намерен.', |
| 1431 | + 'config-imagemagick' => 'Открит е ImageMagick: <code>$1</code>. |
| 1432 | +Преоразмеряването на картинки ще бъде включено ако качването на файлове бъде разрешено.', |
| 1433 | + 'config-gd' => 'Открита е вградена графичната библиотека GD. |
| 1434 | +Ако качването на файлове бъде включено, ще бъде включена възможността за преоразмеряване на картинки.', |
| 1435 | + 'config-no-scaling' => 'Не са открити библиотеките GD или ImageMagick. |
| 1436 | +Преоразмеряването на картинки ще бъде изключено.', |
| 1437 | + 'config-no-uri' => "'''Грешка:''' Не може да се определи текущия адрес. |
| 1438 | +Инсталация беше прекратена.", |
| 1439 | + 'config-uploads-not-safe' => "'''Предупреждение:''' Папката по подразбиране за качване <code>$1</code> е уязвима от изпълнение на зловредни скриптове. |
| 1440 | +Въпреки че МедияУики извършва проверка за заплахи в сигурността на всички качени файлове, силно препоръчително е да се [http://www.mediawiki.org/wiki/Manual:Security#Upload_security затвори тази уязвимост в сигурността] преди разрешаване за качване на файлове.", |
| 1441 | + 'config-db-type' => 'Тип на базата от данни:', |
| 1442 | + 'config-db-host' => 'Хост на базата от данни:', |
| 1443 | + 'config-db-host-help' => 'Ако базата от данни е на друг сървър, в кутията се въвежда името на хоста или IP адреса. |
| 1444 | + |
| 1445 | +Ако се използва споделен уеб хостинг, доставчикът на услугата би трябвало да е предоставил в документацията си коректния хост. |
| 1446 | + |
| 1447 | +Ако инсталацията протича на Windows-сървър и се използва MySQL, използването на "localhost" може да е неприемливо. В такива случаи се използва "127.0.0.1" за локален IP адрес.', |
| 1448 | + 'config-db-wiki-settings' => 'Идентифициране на това уики', |
| 1449 | + 'config-db-name' => 'Име на базата от данни:', |
| 1450 | + 'config-db-name-help' => 'Избира се име, което да идентифицира уикито. |
| 1451 | +То не трябва да съдържа интервали или тирета. |
| 1452 | + |
| 1453 | +Ако се използва споделен хостинг, доставчикът на услугата би трябвало да е предоставил или име на базата от данни, която да бъде използвана, или да позволява създаването на бази от данни чрез контролния панел.', |
| 1454 | + 'config-db-install-account' => 'Потребителска сметка за инсталацията', |
| 1455 | + 'config-db-username' => 'Потребителско име за базата от данни:', |
| 1456 | + 'config-db-password' => 'Парола за базата от данни:', |
| 1457 | + 'config-db-install-username' => 'Въвежда се потребителско име, което ще се използва за свързване с базата от данни по време на процеса по инсталация. |
| 1458 | +Това не е потребителско име за сметка в МедияУики; това е потребителско име за базата от данни.', |
| 1459 | + 'config-db-install-password' => 'Въвежда се парола, която ще бъде използвана за свързване с базата от данни по време на инсталационния процес. |
| 1460 | +Това не е парола за сметка в МедияУики; това е парола за базата от данни.', |
| 1461 | + 'config-db-install-help' => 'Въвеждат се потребителско име и парола, които ще бъдат използвани за свързване с базата от данни по време на инсталационния процес.', |
| 1462 | + 'config-db-account-lock' => 'Използване на същото потребителско име и парола по време на нормална работа', |
| 1463 | + 'config-db-wiki-help' => 'Въвежда се потребителско име и парола, които ще се използват при нормалното функциониране на уикито. |
| 1464 | +Ако сметката не съществува и използваната при инсталацията сметка има необходимите права, тази потребителска сметка ще бъде създадена с минималните необходими права за работа с уикито.', |
| 1465 | + 'config-db-prefix' => 'Представка за таблиците в базата от данни:', |
| 1466 | + 'config-db-prefix-help' => 'Ако е необходимо да се сподели базата от данни между няколко уикита или между МедияУики и друго уеб приложение, може да се добави представка пред имената на таблиците, за да се избегнат конфликти. |
| 1467 | +Не се използват интервали и тирета. |
| 1468 | + |
| 1469 | +Това поле обикновено се оставя празно.', |
| 1470 | + 'config-mysql-old' => 'Изисква се MySQL $1 или по-нова версия, наличната версия е $2.', |
| 1471 | + 'config-db-schema' => 'Схема за МедияУики', |
| 1472 | + 'config-db-ts2-schema' => 'Схема за tsearch2', |
| 1473 | + 'config-db-schema-help' => 'Схемите по-горе обикновено са правилни. |
| 1474 | +Промени се извършват ако наистина е необходимо.', |
| 1475 | + 'config-sqlite-dir' => 'Директория за данни на SQLite:', |
| 1476 | + 'config-sqlite-dir-help' => "SQLite съхранява всички данни в един файл. |
| 1477 | + |
| 1478 | +По време на инсталацията уеб сървърът трябва да има права за писане в посочената директория. |
| 1479 | + |
| 1480 | +Тя '''не трябва''' да е достъпна през уеб, затова не е там, където са PHP файловете. |
| 1481 | + |
| 1482 | +Инсталаторът ще съхрани заедно с нея файл <code>.htaccess</code>, но ако този метод пропадне, някой може да придобие даостъп до суровите данни от базата от данни. |
| 1483 | +Това включва сурови данни за потребителите (адреси за е-поща, хеширани пароли), както и изтрити версии на страници и друга чувствителна и с ограничен достъп информация от и за уикито. |
| 1484 | + |
| 1485 | +Базата от данни е препоръчително да се разположи на друго място, например в <code>/var/lib/mediawiki/yourwiki</code>.", |
| 1486 | + 'config-support-info' => 'МедияУики поддържа следните системи за бази от данни: |
| 1487 | + |
| 1488 | +$1 |
| 1489 | + |
| 1490 | +Ако не виждате желаната за използване система в списъка по-долу, следвайте инструкциите за активиране на поддръжка по-горе.', |
| 1491 | + 'config-support-mysql' => '* $1 е най-фобре поддържата система за база от данни, най-добре поддържана от МедияУики ([http://www.php.net/manual/en/mysql.installation.php Как се компилира PHP с поддръжка на MySQL])', |
| 1492 | + 'config-support-postgres' => '* $1 е популярна система за бази от данни с отворен изходен код, която е алтернатива на MySQL ([http://www.php.net/manual/en/pgsql.installation.php как се компилира PHP с поддръжка на PostgreSQL])', |
| 1493 | + 'config-support-sqlite' => '* $1 е лека система за база от данни, която е много добре поддържана. ([http://www.php.net/manual/en/pdo.installation.php Как се компилира PHP с поддръжка на SQLite], използва PDO)', |
| 1494 | + 'config-support-oracle' => '* $1 ш комерсиална корпоративна база от данни. ([http://www.php.net/manual/en/oci8.installation.php Как се компилира PHP с поддръжка на OCI8])', |
| 1495 | + 'config-header-mysql' => 'Настройки за MySQL', |
| 1496 | + 'config-header-postgres' => 'Настройки за PostgreSQL', |
| 1497 | + 'config-header-sqlite' => 'Настройки за SQLite', |
| 1498 | + 'config-header-oracle' => 'Настройки за Oracle', |
| 1499 | + 'config-invalid-db-type' => 'Невалиден тип база от данни', |
| 1500 | + 'config-missing-db-name' => 'Необходимо е да се въведе стойност за "Име на базата от данни"', |
| 1501 | + 'config-connection-error' => '$1. |
| 1502 | + |
| 1503 | +Необходимо е да се проверят хостът, потребителското име и паролата, след което да се опита отново.', |
| 1504 | + 'config-postgres-old' => 'Изисква се PostgreSQL $1 или по-нова версия, наличната версия е $2.', |
| 1505 | + 'config-sqlite-name-help' => 'Избира се име, което да идентифицира уикито. |
| 1506 | +Не се използват интервали или тирета. |
| 1507 | +Това име ще се използва за име на файла за данни на SQLite.', |
| 1508 | + 'config-sqlite-readonly' => 'Файлът <code>$1</code> няма права за писане.', |
| 1509 | + 'config-sqlite-cant-create-db' => 'Файлът за базата от данни <code>$1</code> не може да бъде създаден.', |
| 1510 | + 'config-regenerate' => 'Създаване на LocalSettings.php →', |
| 1511 | + 'config-show-table-status' => 'Заявката SHOW TABLE STATUS не сполучи!', |
| 1512 | + 'config-unknown-collation' => "'''Предупреждение:''' Базата от данни използва неразпозната колация.", |
| 1513 | + 'config-db-web-account' => 'Сметка за уеб достъп до базата от данни', |
| 1514 | + 'config-db-web-help' => 'Избиране на потребителско име и парола, които уеб сървърът ще използва да се свързва с базата от данни при обичайната работа на уикито.', |
| 1515 | + 'config-db-web-account-same' => 'Използване на същата сметка като при инсталацията.', |
| 1516 | + 'config-db-web-create' => 'Създаване на сметката ако все още не съществува', |
| 1517 | + 'config-db-web-no-create-privs' => 'Посочената сметка за инсталацията не разполага с достатъчно права за създаване на нова сметка. |
| 1518 | +Необходимо е посочената сметка вече да съществува.', |
| 1519 | + 'config-mysql-innodb' => 'InnoDB', |
| 1520 | + 'config-mysql-myisam' => 'MyISAM', |
| 1521 | + 'config-mysql-engine-help' => "'''InnoDB''' почти винаги е най-добрата възможност заради навременната си поддръжка. |
| 1522 | + |
| 1523 | +'''MyISAM''' може да е по-бърза при инсталации с един потребител или само за четене. |
| 1524 | +Базите от данни MyISAM се повреждат по-често от InnoDB.", |
| 1525 | + 'config-mysql-charset' => 'Набор от символи в базата от данни:', |
| 1526 | + 'config-mysql-binary' => 'Бинарен', |
| 1527 | + 'config-mysql-utf8' => 'UTF-8', |
| 1528 | + 'config-mysql-charset-help' => "В '''бинарен режим''' МедияУики съхранява текстовете в UTF-8 в бинарни полета в базата от данни. |
| 1529 | +Това е по-ефективно от UTF-8 режима на MySQL и позволява използването на пълния набор от символи в Уникод. |
| 1530 | + |
| 1531 | +В '''UTF-8 режим''' MySQL ще знае в кой набор от символи са данните от уикито и ще може да ги показва и променя по подходящ начин, но няма да позволява складиране на символи извън [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Основния многоезичен набор].", |
| 1532 | + 'config-site-name' => 'Име на уикито:', |
| 1533 | + 'config-site-name-help' => 'Това име ще се показва в заглавната лента на браузъра и на различни други места.', |
| 1534 | + 'config-site-name-blank' => 'Необходимо е да се въведе име на уикито.', |
| 1535 | + 'config-project-namespace' => 'Именно пространство на проекта:', |
| 1536 | + 'config-ns-generic' => 'Проект', |
| 1537 | + 'config-ns-site-name' => 'Същото като името на уикито: $1', |
| 1538 | + 'config-ns-other' => 'Друго (уточняване)', |
| 1539 | + 'config-ns-other-default' => 'МоетоУики', |
| 1540 | + 'config-project-namespace-help' => 'Следвайки примера на Уикипедия, много уикита съхраняват страниците си с правила в "\'\'\'именно пространство на проекта\'\'\'", отделно от основното съдържание. |
| 1541 | +Всички заглавия на страниците в това именно пространство започват с определена представка, която може да бъде зададена тук. |
| 1542 | +Обикновено представката произлиза от името на уикито, но не може да съдържа символи като "#" или ":".', |
| 1543 | + 'config-ns-invalid' => 'Посоченото именно пространство "<nowiki>$1</nowiki>" е невалидно. |
| 1544 | +Необходимо е да бъде посочено друго.', |
| 1545 | + 'config-admin-box' => 'Администраторска сметка', |
| 1546 | + 'config-admin-name' => 'Потребителско име:', |
| 1547 | + 'config-admin-password' => 'Парола:', |
| 1548 | + 'config-admin-password-confirm' => 'Парола (повторно):', |
| 1549 | + 'config-admin-help' => 'Въвежда се предпочитаното потребителско име, например "Иванчо Иванчев". |
| 1550 | +Това ще е потребителското име, което администраторът ще използва за влизане в уикито.', |
| 1551 | + 'config-admin-name-blank' => 'Необходимо е да бъде въведено потребителско име на администратора.', |
| 1552 | + 'config-admin-name-invalid' => 'Посоченото потребителско име "<nowiki>$1</nowiki>" е невалидно. |
| 1553 | +Необходимо е да се посочи друго.', |
| 1554 | + 'config-admin-password-blank' => 'Неовходимо е да се въведе парола за администраторската сметка.', |
| 1555 | + 'config-admin-password-same' => 'Паролата не трябва да е същата като потребителското име.', |
| 1556 | + 'config-admin-password-mismatch' => 'Двете въведени пароли не съвпадат.', |
| 1557 | + 'config-admin-email' => 'Адрес за електронна поща:', |
| 1558 | + 'config-admin-error-user' => 'Възникна вътрешна грешка при създаване на администратор с името "<nowiki>$1</nowiki>".', |
| 1559 | + 'config-admin-error-password' => 'Възникна вътрешна грешка при задаване на парола за администратора "<nowiki>$1</nowiki>": <pre>$2</pre>', |
| 1560 | + 'config-subscribe' => 'Абониране за [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce пощенския списък за нови версии].', |
| 1561 | + 'config-almost-done' => 'Инсталацията е почти готова! |
| 1562 | +Възможно е пропускане на оставащата конфигурация и моментално инсталиране на уикито.', |
| 1563 | + 'config-optional-continue' => 'Задаване на допълнителни въпроси.', |
| 1564 | + 'config-optional-skip' => 'Достатъчно, инсталиране на уикито.', |
| 1565 | + 'config-profile' => 'Профил на потребителските права:', |
| 1566 | + 'config-profile-wiki' => 'Традиционно уики', |
| 1567 | + 'config-profile-no-anon' => 'Необходимо е създаване на сметка', |
| 1568 | + 'config-profile-fishbowl' => 'Само одобрени редактори', |
| 1569 | + 'config-profile-private' => 'Затворено уики', |
| 1570 | + 'config-profile-help' => "Уикитата функционират най-добре, когато позволяват на възможно най-много хора да ги редактират. |
| 1571 | +В МедияУики лесно се преглеждат последните промени и се възстановяват пораженип от недобронамерени потребители. |
| 1572 | + |
| 1573 | +Въпреки това мнозина смятат МедияУики за полезен софтуер по различни начини и често е трудно да се убедят всички от предимствата на уики модела. |
| 1574 | +Затова се предоставя възможност за избор. |
| 1575 | + |
| 1576 | +'''{{int:config-profile-wiki}}''' позволява на всички потребители да редактират, дори и без регистрация. |
| 1577 | +Уикитата от типа '''{{int:config-profile-no-anon}}''' позволяват достъп до страниците и редактирането им само след създаване на потребителска сметка. |
| 1578 | + |
| 1579 | +Уики, което е '''{{int:config-profile-fishbowl}}''' позволява на всички да преглеждат страниците, но само предварително одобрени редактори могат да редактират съдържанието. |
| 1580 | +В '''{{int:config-profile-private}}''' само предварително одобрени потребители могат да четат и редактират съдържанието. |
| 1581 | + |
| 1582 | +Детайлно обяснение на конфигурациите на потребителските права е достъпно след инсталацията в [http://www.mediawiki.org/wiki/Manual:User_rights Наръчника за потребителски права].", |
| 1583 | + 'config-license' => 'Авторски права и лиценз:', |
| 1584 | + 'config-license-cc-by-sa' => 'Криейтив Комънс Признание-Споделяне на споделеното (съвместим с Уикипедия)', |
| 1585 | + 'config-license-cc-by-nc-sa' => 'Криейтив Комънс Признание-Некомерсиално-Споделяне на споделеното', |
| 1586 | + 'config-license-gfdl-old' => 'Лиценз за свободна документация на GNU 1.2', |
| 1587 | + 'config-license-gfdl-current' => 'Лиценз за свободна документация на GNU 1.3 или по-нов', |
| 1588 | + 'config-license-pd' => 'Обществено достояние', |
| 1589 | + 'config-license-cc-choose' => 'Избиране на друг лиценз от Криейтив Комънс', |
| 1590 | + 'config-email-settings' => 'Настройки за е-поща', |
| 1591 | + 'config-upload-settings' => 'Картинки и качване на файлове', |
| 1592 | + 'config-upload-enable' => 'Позволяне качването на файлове', |
| 1593 | + 'config-upload-deleted' => 'Директория за изтритите файлове:', |
| 1594 | + 'config-upload-deleted-help' => 'Избиране на директория, в която ще се складират изтритите файлове. |
| 1595 | +В най-добрия случай тя не трябва да е достъпна през уеб.', |
| 1596 | + 'config-logo' => 'Адрес на логото:', |
| 1597 | + 'config-advanced-settings' => 'Разширена конфигурация', |
| 1598 | + 'config-cache-options' => 'Настройки за обектното кеширане:', |
| 1599 | + 'config-cache-none' => 'Без кеширане (не се премахва от функционалността, но това влияе на скоростта на по-големи уикита)', |
| 1600 | + 'config-cache-accel' => 'PHP обектно кеширане (APC, eAccelerator, XCache или WinCache)', |
| 1601 | + 'config-cache-memcached' => 'Използване на Memcached (изисква допълнителни настройки и конфигуриране)', |
| 1602 | + 'config-memcached-servers' => 'Memcached сървъри:', |
| 1603 | + 'config-extensions' => 'Разширения', |
| 1604 | + 'config-install-tables' => 'Създаване на таблиците', |
| 1605 | + 'config-install-interwiki-sql' => 'Файлът <code>interwiki.sql</code> не можа да бъде открит.', |
| 1606 | + 'config-install-secretkey' => 'Генериране на таен ключ', |
| 1607 | + 'config-download-localsettings' => 'Изтегляне на LocalSettings.php', |
| 1608 | + 'config-help' => 'помощ', |
| 1609 | +); |
| 1610 | + |
1327 | 1611 | /** Breton (Brezhoneg) |
1328 | 1612 | * @author Fulup |
1329 | 1613 | * @author Gwendal |
— | — | @@ -1514,8 +1798,8 @@ |
1515 | 1799 | * [http://www.mediawiki.org/wiki/Help:Contents Vodič za korisnike] |
1516 | 1800 | * [http://www.mediawiki.org/wiki/Manual:Contents Vodič za administratore] |
1517 | 1801 | * [http://www.mediawiki.org/wiki/Manual:FAQ NPP]', |
1518 | | - 'config-env-good' => '<span class="success-message">Okruženje je provjereno. |
1519 | | -Možete instalirati MediaWiki.</span>', |
| 1802 | + 'config-env-good' => 'Okruženje je provjereno. |
| 1803 | +Možete instalirati MediaWiki.', |
1520 | 1804 | 'config-env-php' => 'PHP $1 je instaliran.', |
1521 | 1805 | 'config-env-latest-ok' => 'Instalirate posljednju verziju MediaWiki.', |
1522 | 1806 | 'config-env-latest-new' => "'''Napomena:''' Instalirate razvojnu veziju MediaWiki.", |
— | — | @@ -1625,8 +1909,8 @@ |
1626 | 1910 | * [http://www.mediawiki.org/wiki/Help:Contents Nutzeranleitung] |
1627 | 1911 | * [http://www.mediawiki.org/wiki/Manual:Contents Administratorenanleitung] |
1628 | 1912 | * [http://www.mediawiki.org/wiki/Manual:FAQ Häufig gestellte Fragen]', |
1629 | | - 'config-env-good' => '<span class="success-message">Die Installationsumgebung wurde geprüft. |
1630 | | -MediaWiki kann installiert werden.</span>', |
| 1913 | + 'config-env-good' => 'Die Installationsumgebung wurde geprüft. |
| 1914 | +MediaWiki kann installiert werden.', |
1631 | 1915 | 'config-env-bad' => 'Die Installationsumgebung wurde geprüft. |
1632 | 1916 | MediaWiki kann nicht installiert werden.', |
1633 | 1917 | 'config-env-php' => 'PHP $1 ist installiert.', |
— | — | @@ -2119,8 +2403,8 @@ |
2120 | 2404 | * [http://www.mediawiki.org/wiki/Help:Contents Guía del usuario] |
2121 | 2405 | * [http://www.mediawiki.org/wiki/Manual:Contents Guía del administrador] |
2122 | 2406 | * [http://www.mediawiki.org/wiki/Manual:FAQ Preguntas frecuentes]', |
2123 | | - 'config-env-good' => '<span class="success-message">El entorno ha sido comprobado. |
2124 | | -Puedes instalar MediaWiki.</span>', |
| 2407 | + 'config-env-good' => 'El entorno ha sido comprobado. |
| 2408 | +Puedes instalar MediaWiki.', |
2125 | 2409 | 'config-env-bad' => 'El entorno ha sido comprobado. |
2126 | 2410 | No puedes instalar MediaWiki.', |
2127 | 2411 | 'config-env-php' => 'PHP $1 está instalado.', |
— | — | @@ -2538,8 +2822,8 @@ |
2539 | 2823 | * [http://www.mediawiki.org/wiki/Help:Contents Käyttöopas] |
2540 | 2824 | * [http://www.mediawiki.org/wiki/Manual:Contents Hallintaopas] |
2541 | 2825 | * [http://www.mediawiki.org/wiki/Manual:FAQ UKK]', |
2542 | | - 'config-env-good' => '<span class="success-message">Asennusympäristö on tarkastettu. |
2543 | | -Voit asentaa MediaWikin.</span>', |
| 2826 | + 'config-env-good' => 'Asennusympäristö on tarkastettu. |
| 2827 | +Voit asentaa MediaWikin.', |
2544 | 2828 | 'config-env-bad' => 'Asennusympäristö on tarkastettu. |
2545 | 2829 | Et voi asentaa MediaWikiä.', |
2546 | 2830 | 'config-env-php' => 'PHP $1 on asennettu.', |
— | — | @@ -2695,8 +2979,8 @@ |
2696 | 2980 | * [http://www.mediawiki.org/wiki/Help:Contents Guide de l’utilisateur] |
2697 | 2981 | * [http://www.mediawiki.org/wiki/Manual:Contents Guide de l’administrateur] |
2698 | 2982 | * [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]', |
2699 | | - 'config-env-good' => '<span class="success-message">L’environnement a été vérifié. |
2700 | | -Vous pouvez installer MediaWiki.</span>', |
| 2983 | + 'config-env-good' => 'L’environnement a été vérifié. |
| 2984 | +Vous pouvez installer MediaWiki.', |
2701 | 2985 | 'config-env-bad' => 'L’environnement a été vérifié. |
2702 | 2986 | vous ne pouvez pas installer MediaWiki.', |
2703 | 2987 | 'config-env-php' => 'PHP $1 est installé.', |
— | — | @@ -3175,8 +3459,8 @@ |
3176 | 3460 | * [http://www.mediawiki.org/wiki/Help:Contents Guía de usuario] |
3177 | 3461 | * [http://www.mediawiki.org/wiki/Manual:Contents Guía de administrador] |
3178 | 3462 | * [http://www.mediawiki.org/wiki/Manual:FAQ Preguntas máis frecuentes]', |
3179 | | - 'config-env-good' => '<span class="success-message">Rematou a comprobación do entorno. |
3180 | | -Pode instalar MediaWiki.</span>', |
| 3463 | + 'config-env-good' => 'Rematou a comprobación do entorno. |
| 3464 | +Pode instalar MediaWiki.', |
3181 | 3465 | 'config-env-bad' => 'Rematou a comprobación do entorno. |
3182 | 3466 | Non pode instalar MediaWiki.', |
3183 | 3467 | 'config-env-php' => 'PHP $1 está instalado.', |
— | — | @@ -3657,8 +3941,8 @@ |
3658 | 3942 | * [http://www.mediawiki.org/wiki/Help:Contents Nutzeraaleitig zue MediaWiki] |
3659 | 3943 | * [http://www.mediawiki.org/wiki/Manual:Contents Adminischtratoreaaleitig zue MediaWiki] |
3660 | 3944 | * [http://www.mediawiki.org/wiki/Manual:FAQ Vilmol gstellti Froge zue MediaWiki]', |
3661 | | - 'config-env-good' => '<span class="success-message">D Inschtallationsumgäbig isch prieft wore. |
3662 | | -Du chasch MediaWiki inschtalliere.</span>', |
| 3945 | + 'config-env-good' => 'D Inschtallationsumgäbig isch prieft wore. |
| 3946 | +Du chasch MediaWiki inschtalliere.', |
3663 | 3947 | 'config-env-bad' => 'D Inschtallationsumgäbigisch prieft wore. |
3664 | 3948 | Du chasch MediaWiki nit inschtalliere.', |
3665 | 3949 | 'config-env-php' => 'PHP $1 isch inschtalliert.', |
— | — | @@ -3875,8 +4159,8 @@ |
3876 | 4160 | * [http://www.mediawiki.org/wiki/Help:Contents Nawod za wužiwarjow] |
3877 | 4161 | * [http://www.mediawiki.org/wiki/Manual:Contents Nawod za administratorow] |
3878 | 4162 | * [http://www.mediawiki.org/wiki/Manual:FAQ Huste prašenja]', |
3879 | | - 'config-env-good' => '<span class="success-message">Wokolina je so skontrolowała. |
3880 | | -Móžeš MediaWiki instalować.</span>', |
| 4163 | + 'config-env-good' => 'Wokolina je so skontrolowała. |
| 4164 | +Móžeš MediaWiki instalować.', |
3881 | 4165 | 'config-env-bad' => 'Wokolina je so skontrolowała. |
3882 | 4166 | Njemóžeš MediaWiki instalować.', |
3883 | 4167 | 'config-env-php' => 'PHP $1 je instalowany.', |
— | — | @@ -4150,8 +4434,8 @@ |
4151 | 4435 | * [http://www.mediawiki.org/wiki/Help:Contents Felhasználói kézikönyv] |
4152 | 4436 | * [http://www.mediawiki.org/wiki/Manual:Contents Útmutató adminisztrátoroknak] |
4153 | 4437 | * [http://www.mediawiki.org/wiki/Manual:FAQ GyIK]', |
4154 | | - 'config-env-good' => '<span class="success-message">A környezet ellenőrzése befejeződött. |
4155 | | -A MediaWiki telepíthető.</span>', |
| 4438 | + 'config-env-good' => 'A környezet ellenőrzése befejeződött. |
| 4439 | +A MediaWiki telepíthető.', |
4156 | 4440 | 'config-env-bad' => 'A környezet ellenőrzése befejeződött. |
4157 | 4441 | A MediaWiki nem telepíthető.', |
4158 | 4442 | 'config-env-php' => 'A PHP verziója: $1', |
— | — | @@ -4450,8 +4734,8 @@ |
4451 | 4735 | * [http://www.mediawiki.org/wiki/Help:Contents Guida pro usatores] |
4452 | 4736 | * [http://www.mediawiki.org/wiki/Manual:Contents Guida pro administratores] |
4453 | 4737 | * [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]', |
4454 | | - 'config-env-good' => '<span class="success-message">Le ambiente ha essite verificate. |
4455 | | -Tu pote installar MediaWiki.</span>', |
| 4738 | + 'config-env-good' => 'Le ambiente ha essite verificate. |
| 4739 | +Tu pote installar MediaWiki.', |
4456 | 4740 | 'config-env-bad' => 'Le ambiente ha essite verificate. |
4457 | 4741 | Tu non pote installar MediaWiki.', |
4458 | 4742 | 'config-env-php' => 'PHP $1 es installate.', |
— | — | @@ -4934,8 +5218,8 @@ |
4935 | 5219 | * [http://www.mediawiki.org/wiki/Help:Contents Panduan Pengguna] |
4936 | 5220 | * [http://www.mediawiki.org/wiki/Manual:Contents Panduan Pengurus] |
4937 | 5221 | * [http://www.mediawiki.org/wiki/Manual:FAQ Pertanyaan yang Sering Diajukan]', |
4938 | | - 'config-env-good' => '<span class="success-message">Kondisi telah diperiksa. |
4939 | | -Anda dapat menginstal MediaWiki.</span>', |
| 5222 | + 'config-env-good' => 'Kondisi telah diperiksa. |
| 5223 | +Anda dapat menginstal MediaWiki.', |
4940 | 5224 | 'config-env-bad' => 'Kondisi telah diperiksa. |
4941 | 5225 | Anda tidak dapat menginstal MediaWiki.', |
4942 | 5226 | 'config-env-php' => 'PHP $1 diinstal.', |
— | — | @@ -5445,8 +5729,8 @@ |
5446 | 5730 | * [http://www.mediawiki.org/wiki/Help:Contents 利用者向け案内] |
5447 | 5731 | * [http://www.mediawiki.org/wiki/Manual:Contents 管理人向け案内] |
5448 | 5732 | * [http://www.mediawiki.org/wiki/Manual:FAQ よくある質問と回答]', |
5449 | | - 'config-env-good' => '<span class="success-message">環境は確認されました。 |
5450 | | -MediaWikiをインストール出来ます。</span>', |
| 5733 | + 'config-env-good' => '環境は確認されました。 |
| 5734 | +MediaWikiをインストール出来ます。', |
5451 | 5735 | 'config-env-bad' => '環境が確認されました。 |
5452 | 5736 | MediaWikiをインストール出来ません。', |
5453 | 5737 | 'config-env-php' => 'PHP $1がインストールされています。', |
— | — | @@ -5934,8 +6218,8 @@ |
5935 | 6219 | * [http://www.mediawiki.org/wiki/Help:Contents Handbooch för Aanwender] |
5936 | 6220 | * [http://www.mediawiki.org/wiki/Manual:Contents Handbooch för Administratore un Köbesse] |
5937 | 6221 | * [http://www.mediawiki.org/wiki/Manual:FAQ Wat öff jefrooch weed, un de Antwoote]', |
5938 | | - 'config-env-good' => '<span class="success-message">De Ömjävung es jeprööf. |
5939 | | -Do kanns MediaWiki opsäze.</span>', |
| 6222 | + 'config-env-good' => 'De Ömjävung es jeprööf. |
| 6223 | +Do kanns MediaWiki opsäze.', |
5940 | 6224 | 'config-env-bad' => 'De Ömjävung es jeprööf. |
5941 | 6225 | Do kanns MediaWiki nit opsäze.', |
5942 | 6226 | 'config-env-php' => 'PHP $1 es doh.', |
— | — | @@ -6103,8 +6387,8 @@ |
6104 | 6388 | * [http://www.mediawiki.org/wiki/Help:Contents Benotzerguide] |
6105 | 6389 | * [http://www.mediawiki.org/wiki/Manual:Contents Guide fir Administrateuren] |
6106 | 6390 | * [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]', |
6107 | | - 'config-env-good' => '<span class="success-message">Den Environement gouf nogekuckt. |
6108 | | -Dir kënnt MediaWiki installéieren.</span>', |
| 6391 | + 'config-env-good' => 'Den Environement gouf nogekuckt. |
| 6392 | +Dir kënnt MediaWiki installéieren.', |
6109 | 6393 | 'config-env-bad' => 'Den Environnement gouf iwwerpréift. |
6110 | 6394 | Dir kënnt MediWiki net installéieren.', |
6111 | 6395 | 'config-env-php' => 'PHP $1 ass installéiert.', |
— | — | @@ -6296,8 +6580,8 @@ |
6297 | 6581 | * [http://www.mediawiki.org/wiki/Help:Contents Водич закорисници] |
6298 | 6582 | * [http://www.mediawiki.org/wiki/Manual:Contents Водич за администратори] |
6299 | 6583 | * [http://www.mediawiki.org/wiki/Manual:FAQ ЧПП]', |
6300 | | - 'config-env-good' => '<span class="success-message">Околината е проверена. |
6301 | | -Можете да го инсталирате МедијаВики.</span>', |
| 6584 | + 'config-env-good' => 'Околината е проверена. |
| 6585 | +Можете да го инсталирате МедијаВики.', |
6302 | 6586 | 'config-env-bad' => 'Околината е проверена. |
6303 | 6587 | Не можете да го инсталирате МедијаВики.', |
6304 | 6588 | 'config-env-php' => 'PHP $1 е инсталиран.', |
— | — | @@ -6967,8 +7251,8 @@ |
6968 | 7252 | * [http://www.mediawiki.org/wiki/Help:Contents Gebruikershandleiding] (Engelstalig) |
6969 | 7253 | * [http://www.mediawiki.org/wiki/Manual:Contents Beheerdershandleiding] (Engelstalig) |
6970 | 7254 | * [http://www.mediawiki.org/wiki/Manual:FAQ Veel gestelde vragen] (Engelstalig)', |
6971 | | - 'config-env-good' => '<span class="success-message">De omgeving is gecontroleerd. |
6972 | | -U kunt MediaWiki installeren.</span>', |
| 7255 | + 'config-env-good' => 'De omgeving is gecontroleerd. |
| 7256 | +U kunt MediaWiki installeren.', |
6973 | 7257 | 'config-env-bad' => 'De omgeving is gecontroleerd. |
6974 | 7258 | U kunt MediaWiki niet installeren.', |
6975 | 7259 | 'config-env-php' => 'PHP $1 is op dit moment geïnstalleerd.', |
— | — | @@ -7500,8 +7784,8 @@ |
7501 | 7785 | * [http://www.mediawiki.org/wiki/Help:Contents Brukerguide] |
7502 | 7786 | * [http://www.mediawiki.org/wiki/Manual:Contents Administratorguide] |
7503 | 7787 | * [http://www.mediawiki.org/wiki/Manual:FAQ OSS]', |
7504 | | - 'config-env-good' => '<span class="success-message">Miljøet har blitt sjekket. |
7505 | | -Du kan installere MediaWiki.</span>', |
| 7788 | + 'config-env-good' => 'Miljøet har blitt sjekket. |
| 7789 | +Du kan installere MediaWiki.', |
7506 | 7790 | 'config-env-bad' => 'Miljøet har blitt sjekket. |
7507 | 7791 | Du kan installere MediaWiki.', |
7508 | 7792 | 'config-env-php' => 'PHP $1 er innstallert.', |
— | — | @@ -7920,8 +8204,8 @@ |
7921 | 8205 | * [http://www.mediawiki.org/wiki/Help:Contents Podręcznik użytkownika] |
7922 | 8206 | * [http://www.mediawiki.org/wiki/Manual:Contents Podręcznik administratora] |
7923 | 8207 | * [http://www.mediawiki.org/wiki/Manual:FAQ Odpowiedzi na często zadawane pytania]', |
7924 | | - 'config-env-good' => '<span class="success-message">Środowisko oprogramowania zostało sprawdzone. |
7925 | | -Możesz teraz zainstalować MediaWiki.</span>', |
| 8208 | + 'config-env-good' => 'Środowisko oprogramowania zostało sprawdzone. |
| 8209 | +Możesz teraz zainstalować MediaWiki.', |
7926 | 8210 | 'config-env-bad' => 'Środowisko oprogramowania zostało sprawdzone. |
7927 | 8211 | Nie możesz zainstalować MediaWiki.', |
7928 | 8212 | 'config-env-php' => 'Zainstalowane jest PHP w wersji $1.', |
— | — | @@ -8251,8 +8535,8 @@ |
8252 | 8536 | * [http://www.mediawiki.org/wiki/Help:Contents Guida dl'Utent] |
8253 | 8537 | * [http://www.mediawiki.org/wiki/Manual:Contents Guida dl'Aministrator] |
8254 | 8538 | * [http://www.mediawiki.org/wiki/Manual:FAQ Soens an ciamo]", |
8255 | | - 'config-env-good' => '<span class="success-message">L\'ambient a l\'é stàit controlà. |
8256 | | -It peule instalé MediaWiki.</span>', |
| 8539 | + 'config-env-good' => 'L\'ambient a l\'é stàit controlà. |
| 8540 | +It peule instalé MediaWiki.', |
8257 | 8541 | 'config-env-bad' => "L'ambient a l'é stàit controlà. |
8258 | 8542 | It peule pa instalé MediaWiki.", |
8259 | 8543 | 'config-env-php' => "PHP $1 a l'é instalà.", |
— | — | @@ -8727,8 +9011,8 @@ |
8728 | 9012 | * [http://www.mediawiki.org/wiki/Help:Contents/pt Ajuda] |
8729 | 9013 | * [http://www.mediawiki.org/wiki/Manual:Contents/pt Manual técnico] |
8730 | 9014 | * [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]', |
8731 | | - 'config-env-good' => '<span class="success-message">O ambiente foi verificado. |
8732 | | -Pode instalar o MediaWiki.</span>', |
| 9015 | + 'config-env-good' => 'O ambiente foi verificado. |
| 9016 | +Pode instalar o MediaWiki.', |
8733 | 9017 | 'config-env-bad' => 'O ambiente foi verificado. |
8734 | 9018 | Não pode instalar o MediaWiki.', |
8735 | 9019 | 'config-env-php' => 'O PHP $1 está instalado.', |
— | — | @@ -9206,8 +9490,8 @@ |
9207 | 9491 | * [http://www.mediawiki.org/wiki/Help:Contents/pt Ajuda] |
9208 | 9492 | * [http://www.mediawiki.org/wiki/Manual:Contents/pt Manual técnico] |
9209 | 9493 | * [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]', |
9210 | | - 'config-env-good' => '<span class="success-message">O ambiente foi verificado. |
9211 | | -Você pode instalar o MediaWiki.</span>', |
| 9494 | + 'config-env-good' => 'O ambiente foi verificado. |
| 9495 | +Você pode instalar o MediaWiki.', |
9212 | 9496 | 'config-env-bad' => 'O ambiente foi verificado. |
9213 | 9497 | Você não pode instalar o MediaWiki.', |
9214 | 9498 | 'config-env-php' => 'O PHP $1 está instalado.', |
— | — | @@ -9330,8 +9614,8 @@ |
9331 | 9615 | * [http://www.mediawiki.org/wiki/Help:Contents/ru Справка для пользователей] |
9332 | 9616 | * [http://www.mediawiki.org/wiki/Manual:Contents/ru Справка для администраторов] |
9333 | 9617 | * [http://www.mediawiki.org/wiki/Manual:FAQ/ru FAQ]', |
9334 | | - 'config-env-good' => '<span class="success-message">Проверка внешней среды была успешно проведена. |
9335 | | -Вы можете установить MediaWiki.</span>', |
| 9618 | + 'config-env-good' => 'Проверка внешней среды была успешно проведена. |
| 9619 | +Вы можете установить MediaWiki.', |
9336 | 9620 | 'config-env-bad' => 'Была проведена проверка внешней среды. |
9337 | 9621 | Вы не можете установить MediaWiki.', |
9338 | 9622 | 'config-env-php' => 'Установленная версия PHP: $1.', |
— | — | @@ -9901,8 +10185,8 @@ |
9902 | 10186 | * [http://www.mediawiki.org/wiki/Help:Contents Gabay ng Tagagamit] |
9903 | 10187 | * [http://www.mediawiki.org/wiki/Manual:Contents Gabay ng Tagapangasiwa] |
9904 | 10188 | * [http://www.mediawiki.org/wiki/Manual:FAQ Mga Malimit Itanong]', |
9905 | | - 'config-env-good' => '<span class="success-message">Nasuri na ang kapaligiran. |
9906 | | -Mailuluklok mo ang MediaWiki.</span>', |
| 10189 | + 'config-env-good' => 'Nasuri na ang kapaligiran. |
| 10190 | +Mailuluklok mo ang MediaWiki.', |
9907 | 10191 | 'config-env-bad' => 'Nasuri na ang kapaligiran. |
9908 | 10192 | Hindi mo mailuklok ang MediaWiki.', |
9909 | 10193 | 'config-env-php' => 'Naitalaga ang PHP na $1.', |
— | — | @@ -10126,8 +10410,8 @@ |
10127 | 10411 | * [http://www.mediawiki.org/wiki/Help:Contents/uk Керівництво користувача] |
10128 | 10412 | * [http://www.mediawiki.org/wiki/Manual:Contents/uk Керівництво адміністратора] |
10129 | 10413 | * [http://www.mediawiki.org/wiki/Manual:FAQ/uk FAQ]', |
10130 | | - 'config-env-good' => '<span class="success-message">Перевірку середовища успішно завершено. |
10131 | | -Ви можете встановити MediaWiki.</span>', |
| 10414 | + 'config-env-good' => 'Перевірку середовища успішно завершено. |
| 10415 | +Ви можете встановити MediaWiki.', |
10132 | 10416 | 'config-env-bad' => 'Було проведено перевірку середовища. Ви не можете встановити MediaWiki.', |
10133 | 10417 | 'config-env-php' => 'Встановлено версію PHP: $1.', |
10134 | 10418 | 'config-env-latest-ok' => 'Ви встановлюєте останню версію MediaWiki.', |
Index: branches/REL1_17/phase3/includes/installer/MysqlInstaller.php |
— | — | @@ -76,10 +76,10 @@ |
77 | 77 | $status = Status::newGood(); |
78 | 78 | if ( !strlen( $newValues['wgDBname'] ) ) { |
79 | 79 | $status->fatal( 'config-missing-db-name' ); |
80 | | - } elseif ( !preg_match( '/^[a-zA-Z0-9_]+$/', $newValues['wgDBname'] ) ) { |
| 80 | + } elseif ( !preg_match( '/^[a-z0-9_-]+$/i', $newValues['wgDBname'] ) ) { |
81 | 81 | $status->fatal( 'config-invalid-db-name', $newValues['wgDBname'] ); |
82 | 82 | } |
83 | | - if ( !preg_match( '/^[a-zA-Z0-9_]*$/', $newValues['wgDBprefix'] ) ) { |
| 83 | + if ( !preg_match( '/^[a-z0-9_-]*$/i', $newValues['wgDBprefix'] ) ) { |
84 | 84 | $status->fatal( 'config-invalid-db-prefix', $newValues['wgDBprefix'] ); |
85 | 85 | } |
86 | 86 | if ( !$status->isOK() ) { |
Index: branches/REL1_17/phase3/includes/installer/OracleInstaller.php |
— | — | @@ -195,7 +195,7 @@ |
196 | 196 | public function createTables() { |
197 | 197 | $status = parent::createTables(); |
198 | 198 | |
199 | | - $this->db->doQuery( 'BEGIN fill_wiki_info; END;' ); |
| 199 | + $this->db->query( 'BEGIN fill_wiki_info; END;' ); |
200 | 200 | |
201 | 201 | return $status; |
202 | 202 | } |
Index: branches/REL1_17/phase3/includes/installer/PostgresInstaller.php |
— | — | @@ -129,14 +129,14 @@ |
130 | 130 | $ctest = 'mediawiki_test_table'; |
131 | 131 | $safeschema = $conn->addIdentifierQuotes( $schema ); |
132 | 132 | if ( $conn->tableExists( $ctest, $schema ) ) { |
133 | | - $conn->doQuery( "DROP TABLE $safeschema.$ctest" ); |
| 133 | + $conn->query( "DROP TABLE $safeschema.$ctest" ); |
134 | 134 | } |
135 | | - $res = $conn->doQuery( "CREATE TABLE $safeschema.$ctest(a int)" ); |
| 135 | + $res = $conn->query( "CREATE TABLE $safeschema.$ctest(a int)" ); |
136 | 136 | if ( !$res ) { |
137 | 137 | $status->fatal( 'config-install-pg-schema-failed', |
138 | 138 | $this->getVar( 'wgDBuser'), $schema ); |
139 | 139 | } |
140 | | - $conn->doQuery( "DROP TABLE $safeschema.$ctest" ); |
| 140 | + $conn->query( "DROP TABLE $safeschema.$ctest" ); |
141 | 141 | |
142 | 142 | return $status; |
143 | 143 | } |
— | — | @@ -166,4 +166,26 @@ |
167 | 167 | $wgDBuser = $this->getVar( '_InstallUser' ); |
168 | 168 | $wgDBpassword = $this->getVar( '_InstallPassword' ); |
169 | 169 | } |
| 170 | + |
| 171 | + private function setupPLpgSQL() { |
| 172 | + $rows = $this->numRows( |
| 173 | + $this->db->query( "SELECT 1 FROM pg_catalog.pg_language WHERE lanname = 'plpgsql'" ) |
| 174 | + ); |
| 175 | + if ( $rows < 1 ) { |
| 176 | + // plpgsql is not installed, but if we have a pg_pltemplate table, we should be able to create it |
| 177 | + $SQL = "SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace) ". |
| 178 | + "WHERE relname = 'pg_pltemplate' AND nspname='pg_catalog'"; |
| 179 | + $rows = $this->numRows( $this->db->query( $SQL ) ); |
| 180 | + global $wgDBname; |
| 181 | + if ( $rows >= 1 ) { |
| 182 | + $result = $this->db->query( 'CREATE LANGUAGE plpgsql' ); |
| 183 | + if ( !$result ) { |
| 184 | + return Status::newFatal( 'config-pg-no-plpgsql', $wgDBname ); |
| 185 | + } |
| 186 | + } else { |
| 187 | + return Status::newFatal( 'config-pg-no-plpgsql', $wgDBname ); |
| 188 | + } |
| 189 | + } |
| 190 | + return Status::newGood(); |
| 191 | + } |
170 | 192 | } |
Index: branches/REL1_17/phase3/includes/installer/WebInstallerPage.php |
— | — | @@ -218,7 +218,6 @@ |
219 | 219 | $this->endForm( 'continue' ); |
220 | 220 | return 'output'; |
221 | 221 | } |
222 | | - return $this->handleExistingUpgrade( $vars ); |
223 | 222 | } |
224 | 223 | |
225 | 224 | // If there is no $wgUpgradeKey, tell the user to add one to LocalSettings.php |
— | — | @@ -345,11 +344,15 @@ |
346 | 345 | } |
347 | 346 | $this->parent->output->addWikiText( wfMsgNoTrans( 'config-welcome' ) ); |
348 | 347 | $status = $this->parent->doEnvironmentChecks(); |
349 | | - if ( $status ) { |
| 348 | + if ( $status->isGood() ) { |
| 349 | + $this->parent->output->addHTML( '<span class="success-message">' . |
| 350 | + wfMsgHtml( 'config-env-good' ) . '</span>' ); |
350 | 351 | $this->parent->output->addWikiText( wfMsgNoTrans( 'config-copyright', |
351 | 352 | SpecialVersion::getCopyrightAndAuthorList() ) ); |
352 | 353 | $this->startForm(); |
353 | 354 | $this->endForm(); |
| 355 | + } else { |
| 356 | + $this->parent->showStatusMessage( $status ); |
354 | 357 | } |
355 | 358 | } |
356 | 359 | |
— | — | @@ -597,16 +600,11 @@ |
598 | 601 | 'label' => 'config-admin-email', |
599 | 602 | 'help' => $this->parent->getHelpBox( 'config-admin-email-help' ) |
600 | 603 | ) ) . |
601 | | - /** |
602 | | - * Uncomment this feature once we've got some sort of API to mailman |
603 | | - * to handle these subscriptions. Some dummy wrapper script on the |
604 | | - * mailman box that shell's out to mailman/bin/add_members would do |
605 | | - $this->parent->getCheckBox( array( |
| 604 | + $this->parent->getCheckBox( array( |
606 | 605 | 'var' => '_Subscribe', |
607 | 606 | 'label' => 'config-subscribe', |
608 | 607 | 'help' => $this->parent->getHelpBox( 'config-subscribe-help' ) |
609 | 608 | ) ) . |
610 | | - */ |
611 | 609 | $this->getFieldSetEnd() . |
612 | 610 | $this->parent->getInfoBox( wfMsg( 'config-almost-done' ) ) . |
613 | 611 | $this->parent->getRadioSet( array( |
— | — | @@ -709,6 +707,14 @@ |
710 | 708 | $this->setVar( '_AdminPassword2', '' ); |
711 | 709 | $retVal = false; |
712 | 710 | } |
| 711 | + |
| 712 | + // Validate e-mail if provided |
| 713 | + $email = $this->getVar( '_AdminEmail' ); |
| 714 | + if( $email && !User::isValidEmailAddr( $email ) ) { |
| 715 | + $this->parent->showError( 'config-admin-error-bademail' ); |
| 716 | + $retVal = false; |
| 717 | + } |
| 718 | + |
713 | 719 | return $retVal; |
714 | 720 | } |
715 | 721 | |
Property changes on: branches/REL1_17/phase3/includes/installer/WebInstallerPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
716 | 722 | Merged /trunk/phase3/includes/installer/WebInstallerPage.php:r78043,78231,78259,78300,78450,78531-78532,78823,78946,79056,79066,79191,79283,79537,79678,79684,79738,79741,79745,79750,79767-79768 |
Index: branches/REL1_17/phase3/config/index.php |
— | — | @@ -39,6 +39,8 @@ |
40 | 40 | } |
41 | 41 | $wgLang = Language::factory( $langCode ); |
42 | 42 | |
| 43 | + $installer->setParserLanguage( $wgLang->getCode() ); |
| 44 | + |
43 | 45 | $wgMetaNamespace = $wgCanonicalNamespaceNames[NS_PROJECT]; |
44 | 46 | |
45 | 47 | $session = $installer->execute( $session ); |