fixing $id notice
[lhc/web/wiklou.git] / config / index.php
1 <?php
2 # MediaWiki web-based config/installation
3 # Copyright (C) 2004 Brion Vibber <brion@pobox.com>
4 # http://www.mediawiki.org/
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License along
17 # with this program; if not, write to the Free Software Foundation, Inc.,
18 # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 # http://www.gnu.org/copyleft/gpl.html
20
21 header( "Content-type: text/html; charset=utf-8" );
22
23 ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
24 "http://www.w3.org/TR/html4/loose.dtd">
25 <html>
26 <head>
27 <meta http-equiv="Content-type" content="text/html; charset=utf-8">
28 <meta name="robots" content="noindex,nofollow">
29 <title>MediaWiki installation</title>
30 <style type="text/css">
31 #credit {
32 float: right;
33 width: 200px;
34 font-size: 0.7em;
35 background-color: #eee;
36 color: black;
37 border: solid 1px #444;
38 padding: 8px;
39 margin-left: 8px;
40 }
41
42 dl.setup dd {
43 margin-left: 0;
44 }
45 dl.setup dd label.column {
46 clear: left;
47 font-weight: bold;
48 width: 12em;
49 float: left;
50 text-align: right;
51 padding-right: 1em;
52 }
53 dl.setup dt {
54 clear: left;
55 font-size: 0.8em;
56 margin-left: 10em;
57 /* margin-right: 200px; */
58 margin-bottom: 2em;
59 }
60 .error {
61 color: red;
62 }
63 ul.plain {
64 list-style: none;
65 clear: both;
66 margin-left: 12em;
67 }
68 </style>
69 </head>
70
71 <body>
72
73 <div id="credit">
74 <center>
75 <a href="http://www.mediawiki.org/"><img
76 src="../images/wiki.png" width="135" height="135" alt="" border="0" /></a>
77 </center>
78
79 <b><a href="http://www.mediawiki.org/">MediaWiki</a></b> is
80 Copyright (C) 2001-2004 by Magnus Manske, Brion Vibber, Lee Daniel Crocker,
81 Tim Starling, Erik M&ouml;ller, and others.</p>
82
83 <ul>
84 <li><a href="../README">Readme</a></li>
85 <li><a href="../RELEASE-NOTES">Release notes</a></li>
86 <li><a href="../docs/">doc/</a></li>
87 <li><a href="http://meta.wikipedia.org/wiki/MediaWiki_User's_Guide">User's Guide</a></li>
88 </ul>
89
90 <p>This program is free software; you can redistribute it and/or modify
91 it under the terms of the GNU General Public License as published by
92 the Free Software Foundation; either version 2 of the License, or
93 (at your option) any later version.</p>
94
95 <p>This program is distributed in the hope that it will be useful,
96 but WITHOUT ANY WARRANTY; without even the implied warranty of
97 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
98 GNU General Public License for more details.</p>
99
100 <p>You should have received <a href="../COPYING">a copy of the GNU General Public License</a>
101 along with this program; if not, write to the Free Software
102 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
103 or <a href="http://www.gnu.org/copyleft/gpl.html">read it online</a></p>
104 </div>
105
106 <?php
107
108 $IP = ".."; # Just to suppress notices, not for anything useful
109 include( "../includes/DefaultSettings.php" );
110 ?>
111
112 <h1>MediaWiki <?php print $wgVersion ?> installation</h1>
113
114
115 <?php
116
117 /* Check for existing configurations and bug out! */
118
119 if( file_exists( "../LocalSettings.php" ) || file_exists( "../AdminSettings.php" ) ) {
120 dieout( "<h2>Wiki is configured.</h2>
121
122 <p>Already configured... <a href='../index.php'>return to the wiki</a>.</p>
123
124 <p>(You should probably remove this directory for added security.)</p>" );
125 }
126
127 if( file_exists( "./LocalSettings.php" ) || file_exists( "./AdminSettings.php" ) ) {
128 dieout( "<h2>You're configured!</h2>
129
130 <p>Please move <tt>LocalSettings.php</tt> to the parent directory, then
131 <a href='../index.php'>try out your wiki</a>.
132 (You should remove this config directory for added security once you're done.)</p>" );
133 }
134
135 if( !is_writable( "." ) ) {
136 dieout( "<h2>Can't write config file, aborting</h2>
137
138 <p>In order to configure the wiki you have to make the <tt>config</tt> subdirectory
139 writable by the web server. Once configuration is done you'll move the created
140 <tt>LocalSettings.php</tt> to the parent directory, and for added safety you can
141 then remove the <tt>config</tt> subdirectory entirely.</p>
142
143 <p>To make the directory writable on a Unix/Linux system:</p>
144
145 <pre>
146 cd <i>/path/to/wiki</i>
147 chmod a+w config
148 </pre>" );
149 }
150
151
152 include( "../install-utils.inc" );
153 include( "../maintenance/updaters.inc" );
154 class ConfigData {
155 function getEncoded( $data ) {
156 # Hackish
157 global $wgInputEncoding;
158 if( strcasecmp( $wgInputEncoding, "utf-8" ) == 0 ) {
159 return $data;
160 } else {
161 return utf8_decode( $data ); /* to latin1 wikis */
162 }
163 }
164 function getSitename() { return $this->getEncoded( $this->Sitename ); }
165 function getSysopName() { return $this->getEncoded( $this->SysopName ); }
166 function getSysopPass() { return $this->getEncoded( $this->SysopPass ); }
167 }
168
169 ?>
170
171
172 <h2>Checking environment...</h2>
173 <ul>
174 <?php
175 $endl = "
176 ";
177 $conf = new ConfigData;
178
179 install_version_checks();
180 print "<li>PHP " . phpversion() . " ok</li>\n";
181
182 $sapi = php_sapi_name();
183 $conf->prettyURLs = true;
184 print "<li>PHP server API is $sapi; ";
185 switch( $sapi ) {
186 case "apache":
187 print "ok, using pretty URLs (<tt>index.php/Page_Title</tt>)";
188 break;
189 case "cgi":
190 case "cgi-fcgi":
191 print "using ugly URLs (<tt>index.php?title=Page_Title</tt>)";
192 $conf->prettyURLs = false;
193 break;
194 default:
195 print "unknown; using pretty URLs (<tt>index.php/Page_Title</tt>), if you have trouble change this in <tt>LocalSettings.php</tt>";
196 }
197 print "</li>\n";
198
199 $conf->zlib = function_exists( "gzencode" );
200 if( $conf->zlib ) {
201 print "<li>Have zlib support; enabling output compression.</li>\n";
202 } else {
203 print "<li>No zlib support.</li>\n";
204 }
205
206 $conf->ImageMagick = false;
207
208 $conf->HaveGD = function_exists( "imagejpeg" );
209 if( $conf->HaveGD ) {
210 print "<li>Found GD graphics library built-in, image thumbnailing will be enabled if you enable uploads.</li>\n";
211 } else {
212 $imcheck = array( "/usr/bin", "/usr/local/bin", "/sw/bin" );
213 foreach( $imcheck as $dir ) {
214 $im = "$dir/convert";
215 if( file_exists( $im ) ) {
216 print "<li>Found ImageMagick: <tt>$im</tt>; image thumbnailing will be enabled if you enable uploads.</li>\n";
217 $conf->ImageMagick = $im;
218 break;
219 }
220 }
221 if( !$conf->ImageMagick ) {
222 print "<li>Couldn't find GD library or ImageMagick; image thumbnailing disabled.</li>\n";
223 }
224 }
225
226 $conf->UseImageResize = $conf->HaveGD || $conf->ImageMagick;
227
228 # $conf->IP = "/Users/brion/Sites/inplace";
229 chdir( ".." );
230 $conf->IP = getcwd();
231 $conf->IP = preg_replace( "/\\\\/","\\\\\\\\",$conf->IP ); // For Windows, \ -> \\
232 chdir( "config" );
233 print "<li>Installation directory: <tt>" . htmlspecialchars( $conf->IP ) . "</tt></li>\n";
234
235 # $conf->ScriptPath = "/~brion/inplace";
236 $conf->ScriptPath = preg_replace( '{^(.*)/config.*$}', '$1', $_SERVER["REQUEST_URI"] );
237 print "<li>Script URI path: <tt>" . htmlspecialchars( $conf->ScriptPath ) . "</tt></li>\n";
238
239 $conf->posted = ($_SERVER["REQUEST_METHOD"] == "POST");
240
241 $conf->Sitename = ucfirst( importPost( "Sitename", "" ) );
242 $conf->EmergencyContact = importPost( "EmergencyContact", $_SERVER["SERVER_ADMIN"] );
243 $conf->DBserver = importPost( "DBserver", "localhost" );
244 $conf->DBname = importPost( "DBname", "wikidb" );
245 $conf->DBuser = importPost( "DBuser", "wikiuser" );
246 $conf->DBpassword = importPost( "DBpassword" );
247 $conf->DBpassword2 = importPost( "DBpassword2" );
248 $conf->RootPW = importPost( "RootPW" );
249 $conf->LanguageCode = importPost( "LanguageCode", "en-utf8" );
250 $conf->SysopName = importPost( "SysopName", "WikiSysop" );
251 $conf->SysopPass = importPost( "SysopPass" );
252 $conf->SysopPass2 = importPost( "SysopPass2" );
253
254 /* Check for validity */
255 $errs = array();
256
257 if( $conf->Sitename == "" || $conf->Sitename == "MediaWiki" || $conf->Sitename == "Mediawiki" ) {
258 $errs["Sitename"] = "Must not be blank or \"MediaWiki\".";
259 }
260 if( $conf->DBpassword == "" ) {
261 $errs["DBpassword"] = "Must not be blank";
262 }
263 if( $conf->DBpassword != $conf->DBpassword2 ) {
264 $errs["DBpassword2"] = "Passwords don't match!";
265 }
266
267 if( $conf->SysopPass == "" ) {
268 $errs["SysopPass"] = "Must not be blank";
269 }
270 if( $conf->SysopPass != $conf->SysopPass2 ) {
271 $errs["SysopPass2"] = "Passwords don't match!";
272 }
273
274 $conf->License = importPost( "License", "none" );
275 if( $conf->License == "gfdl" ) {
276 $conf->RightsUrl = "http://www.gnu.org/copyleft/fdl.html";
277 $conf->RightsText = "GNU Free Documentation License 1.2";
278 $conf->RightsCode = "gfdl";
279 $conf->RightsIcon = "{$conf->ScriptPath}/images/gnu-fdl.png";
280 } elseif( $conf->License == "none" ) {
281 $conf->RightsUrl = $conf->RightsText = $conf->RightsCode = $conf->RightsIcon = "";
282 } else {
283 $conf->RightsUrl = importPost( "RightsUrl", "" );
284 $conf->RightsText = importPost( "RightsText", "" );
285 $conf->RightsCode = importPost( "RightsCode", "" );
286 $conf->RightsIcon = importPost( "RightsIcon", "" );
287 }
288
289 if( $conf->posted && ( 0 == count( $errs ) ) ) {
290 do { /* So we can 'continue' to end prematurely */
291 $conf->Root = ($conf->RootPW != "");
292
293 /* Load up the settings and get installin' */
294 $local = writeLocalSettings( $conf );
295 $wgCommandLineMode = false;
296 eval($local);
297
298 $wgDBadminuser = $wgDBuser;
299 $wgDBadminpassword = $wgDBpassword;
300 $wgCommandLineMode = true;
301 $wgUseDatabaseMessages = false; /* FIXME: For database failure */
302 include_once( "Setup.php" );
303 include_once( "../maintenance/InitialiseMessages.inc" );
304
305 $wgTitle = Title::newFromText( "Installation script" );
306 $wgDatabase = Database::newFromParams( $wgDBserver, "root", $conf->RootPW, "", 1 );
307 $wgDatabase->mIgnoreErrors = true;
308
309 @$myver = mysql_get_server_info( $wgDatabase->mConn );
310 if( !$myver ) {
311 print "<li>MySQL error " . ($err = mysql_errno() ) .
312 ": " . htmlspecialchars( mysql_error() );
313 $ok = false;
314 switch( $err ) {
315 case 1045:
316 if( $conf->Root ) {
317 $errs["RootPW"] = "Check password";
318 } else {
319 print "<li>Trying regular user...\n";
320 /* Try the regular user... */
321 $wgDatabase = Database::newFromParams( $wgDBserver, $wgDBuser, $wgDBpassword, "", 1 );
322 $wgDatabase->isOpen();
323 $wgDatabase->mIgnoreErrors = true;
324 @$myver = mysql_get_server_info( $wgDatabase->mConn );
325 if( !$myver ) {
326 $errs["DBuser"] = "Check name/pass";
327 $errs["DBpassword"] = "or enter root";
328 $errs["DBpassword2"] = "password below";
329 $errs["RootPW"] = "Got root?";
330 print " need password.</li>\n";
331 } else {
332 $conf->Root = false;
333 $conf->RootPW = "";
334 print " ok.</li>\n";
335 # And keep going...
336 $ok = true;
337 }
338 break;
339 }
340 case 2002:
341 case 2003:
342 $errs["DBserver"] = "Connection failed";
343 break;
344 default:
345 $errs["DBserver"] = "Couldn't connect to database";
346 break;
347 }
348 if( !$ok ) continue;
349 }
350
351 if ( !$wgDatabase->isOpen() ) {
352 $errs["DBserver"] = "Couldn't connect to database";
353 continue;
354 }
355
356 print "<li>Connected to database... $myver";
357 if( version_compare( $myver, "4.0.0" ) >= 0 ) {
358 print "; enabling MySQL 4 enhancements";
359 $conf->DBmysql4 = true;
360 $local = writeLocalSettings( $conf );
361 }
362 print "</li>\n";
363
364 @$sel = mysql_select_db( $wgDBname, $wgDatabase->mConn );
365 if( $sel ) {
366 print "<li>Database <tt>" . htmlspecialchars( $wgDBname ) . "</tt> exists</li>\n";
367 } else {
368 $res = $wgDatabase->query( "CREATE DATABASE `$wgDBname`" );
369 if( !$res ) {
370 print "<li>Couldn't create database <tt>" .
371 htmlspecialchars( $wgDBname ) .
372 "</tt>; try with root access or check your username/pass.</li>\n";
373 $errs["RootPW"] = "&lt;- Enter";
374 continue;
375 }
376 print "<li>Created database <tt>" . htmlspecialchars( $wgDBname ) . "</tt></li>\n";
377 }
378
379 $wgDatabase->selectDB( $wgDBname );
380
381 if( $wgDatabase->tableExists( "cur" ) ) {
382 print "<li>There are already MediaWiki tables in this database. Checking if updates are needed...</li>\n<pre>";
383
384 chdir( ".." );
385 flush();
386 do_ipblocks_update(); flush();
387 do_interwiki_update(); flush();
388 do_index_update(); flush();
389 do_linkscc_update(); flush();
390 do_hitcounter_update(); flush();
391 do_recentchanges_update(); flush();
392 initialiseMessages(); flush();
393 chdir( "config" );
394
395 print "</pre>\n";
396 print "<li>Finished update checks.</li>\n";
397 } else {
398 # FIXME: Check for errors
399 print "<li>Creating tables...";
400 dbsource( "../maintenance/tables.sql", $wgDatabase );
401 dbsource( "../maintenance/interwiki.sql", $wgDatabase );
402 dbsource( "../maintenance/indexes.sql", $wgDatabase );
403 print " done.</li>\n";
404
405 print "<li>Initializing data...";
406 $wgDatabase->query( "INSERT INTO site_stats (ss_row_id,ss_total_views," .
407 "ss_total_edits,ss_good_articles) VALUES (1,0,0,0)" );
408
409 if( $conf->SysopName ) {
410 $u = User::newFromName( $conf->getSysopName() );
411 if ( 0 == $u->idForName() ) {
412 $u->addToDatabase();
413 $u->setPassword( $conf->getSysopPass() );
414 $u->addRight( "sysop" );
415 $u->addRight( "bureaucrat" );
416 $u->saveSettings();
417 print "<li>Created sysop account <tt>" .
418 htmlspecialchars( $conf->SysopName ) . "</tt>.</li>\n";
419 } else {
420 print "<li>Could not create user - already exists!</li>\n";
421 }
422 } else {
423 print "<li>Skipped sysop account creation, no name given.</li>\n";
424 }
425
426 print "<li>Initialising log pages...";
427 $logs = array(
428 "uploadlogpage" => "uploadlogpagetext",
429 "dellogpage" => "dellogpagetext",
430 "protectlogpage" => "protectlogtext",
431 "blocklogpage" => "blocklogtext"
432 );
433 $metaNamespace = Namespace::getWikipedia();
434 $now = wfTimestampNow();
435 $won = wfInvertTimestamp( $now );
436 foreach( $logs as $page => $text ) {
437 $logTitle = wfStrencode( $wgLang->ucfirst( str_replace( " ", "_", wfMsgNoDB( $page ) ) ) );
438 $logText = wfStrencode( wfMsgNoDB( $text ) );
439 $wgDatabase->query( "INSERT INTO cur (cur_namespace,cur_title,cur_text," .
440 "cur_restrictions,cur_timestamp,inverse_timestamp,cur_touched) " .
441 "VALUES ($metaNamespace,'$logTitle','$logText','sysop','$now','$won','$now')" );
442 }
443 print "</li>\n";
444
445 $titleobj = Title::newFromText( wfMsgNoDB( "mainpage" ) );
446 $title = $titleobj->getDBkey();
447 $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text,cur_timestamp,inverse_timestamp,cur_touched) " .
448 "VALUES (0,'$title','" .
449 wfStrencode( wfMsg( "mainpagetext" ) ) . "','$now','$won','$now')";
450 $wgDatabase->query( $sql, $fname );
451
452 print "<li><pre>";
453 initialiseMessages();
454 print "</pre></li>\n";
455
456 if( $conf->Root ) {
457 # Grant user permissions
458 dbsource( "../maintenance/users.sql", $wgDatabase );
459 }
460 }
461
462 /* Write out the config file now that all is well */
463 print "<p>Creating LocalSettings.php...</p>\n\n";
464 $localSettings = "<" . "?php$endl$local$endl?" . ">";
465
466 if( version_compare( phpversion(), "4.3.2" ) >= 0 ) {
467 $xt = "xt"; # Refuse to overwrite an existing file
468 } else {
469 $xt = "wt"; # 'x' is not available prior to PHP 4.3.2. We did check above, but race conditions blah blah
470 }
471 $f = fopen( "LocalSettings.php", $xt );
472
473 if( $f == false ) {
474 dieout( "<p>Couldn't write out LocalSettings.php. Check that the directory permissions are correct and that there isn't already a file of that name here...</p>\n" .
475 "<p>Here's the file that would have been written, try to paste it into place manually:</p>\n" .
476 "<pre>\n" . htmlspecialchars( $localSettings ) . "</pre>\n" );
477 }
478 fwrite( $f, $localSettings );
479 fclose( $f );
480
481 print "<p>Success! Move the LocalSettings.php file into the parent directory, then follow
482 <a href='{$conf->ScriptPath}/index.php'>this link</a> to your wiki.</p>\n";
483
484 } while( false );
485 }
486 ?>
487 </ul>
488
489
490 <?php
491
492 if( count( $errs ) ) {
493 /* Display options form */
494
495 if( $conf->posted ) {
496 echo "<p class='error'>Something's not quite right yet; make sure everything below is filled out correctly.</p>\n";
497 }
498 ?>
499
500 <form name="config" method="post">
501
502
503 <h2>Site config</h2>
504
505 <dl class="setup">
506 <dd>
507 <?php
508 aField( $conf, "Sitename", "Site name:" );
509 ?>
510 </dd>
511 <dt>
512 Your site name should be a relatively short word. It'll appear as the namespace
513 name for 'meta' pages as well as throughout the user interface. Good site names
514 are things like "<a href="http://www.wikipedia.org/">Wikipedia</a>" and
515 "<a href="http://openfacts.berlios.de/">OpenFacts</a>"; avoid punctuation,
516 which may cause problems.
517 </dt>
518
519 <dd>
520 <?php
521 aField( $conf, "EmergencyContact", "Contact e-mail" );
522 ?>
523 </dd>
524 <dt>
525 This will be used as the return address for password reminders and
526 may be displayed in some error conditions so visitors can get in
527 touch with you.
528 </dt>
529
530 <dd>
531 <label class='column' for="LanguageCode">Language</label>
532 <select id="LanguageCode" name="LanguageCode">
533 <?php
534 $list = getLanguageList();
535 foreach( $list as $code => $name ) {
536 $sel = ($code == $conf->LanguageCode) ? "selected" : "";
537 echo "\t\t<option value=\"$code\" $sel>$name</option>\n";
538 }
539 ?>
540 </select>
541 </dd>
542 <dt>
543 You may select the language for the user interface of the wiki...
544 Some localizations are less complete than others. This also controls
545 the character encoding; Unicode is more flexible, but Latin-1 may be
546 more compatible with older browsers for some languages. Unicode will
547 be used where not specified otherwise.
548 </dt>
549
550 <dd>
551 <label class='column'>Copyright/license metadata</label>
552 <div>Select one:</div>
553
554 <ul class="plain">
555 <li><?php aField( $conf, "License", "no license metadata", "radio", "none" ); ?></li>
556 <li><?php aField( $conf, "License", "GNU Free Documentation License 1.2 (Wikipedia-compatible)", "radio", "gfdl" ); ?></li>
557 <li><?php
558 aField( $conf, "License", "a Creative Commons license...", "radio", "cc" );
559 $partner = "MediaWiki";
560 $exit = urlencode( "$wgServer{$conf->ScriptPath}/config/index.php?License=cc&RightsUrl=[license_url]&RightsText=[license_name]&RightsCode=[license_code]&RightsIcon=[license_button]" );
561 $icon = urlencode( "$wgServer$wgUploadPath/wiki.png" );
562 $ccApp = htmlspecialchars( "http://creativecommons.org/license/?partner=$partner&exit_url=$exit&partner_icon_url=$icon" );
563 print "<a href=\"$ccApp\">choose</a>";
564 ?></li>
565 <li><?php aField( $conf, "RightsUrl", $conf->RightsUrl, "hidden" ); ?></li>
566 <li><?php aField( $conf, "RightsText", $conf->RightsText, "hidden" ); ?></li>
567 <li><?php aField( $conf, "RightsCode", $conf->RightsCode, "hidden" ); ?></li>
568 <li><?php aField( $conf, "RightsIcon", $conf->RightsIcon, "hidden" ); ?></li>
569 </ul>
570 </dd>
571 <dt>
572 MediaWiki can include a basic license notice, icon, and machine-reable
573 copyright metadata if your wiki's content is to be licensed under
574 the GNU FDL or a Creative Commons license. If you're not sure, leave
575 it at "none".
576 </dt>
577
578
579 <dd>
580 <?php aField( $conf, "SysopName", "Sysop account name:", "" ) ?>
581 </dd>
582 <dd>
583 <?php aField( $conf, "SysopPass", "password:", "password" ) ?>
584 </dd>
585 <dd>
586 <?php aField( $conf, "SysopPass2", "again:", "password" ) ?>
587 </dd>
588 <dt>
589 A sysop user account can lock or delete pages, block problematic IP
590 addresses from editing, and other maintenance tasks. If creating a new
591 wiki database, a sysop account will be created with the given name
592 and password.
593 </dt>
594 </dl>
595
596 <h2>Database config</h2>
597
598 <dl class="setup">
599 <dd><?php
600 aField( $conf, "DBserver", "MySQL server" );
601 ?></dd>
602 <dt>
603 If your database server isn't on your web server, enter the name
604 or IP address here.
605 </dt>
606
607 <dd><?php
608 aField( $conf, "DBname", "Database name" );
609 ?></dd>
610 <dd><?php
611 aField( $conf, "DBuser", "DB username" );
612 ?></dd>
613 <dd><?php
614 aField( $conf, "DBpassword", "DB password", "password" );
615 ?></dd>
616 <dd><?php
617 aField( $conf, "DBpassword2", "again", "password" );
618 ?></dd>
619 <dt>
620 If you only have a single user account and database available,
621 enter those here. If you have database root access (see below)
622 you can specify new accounts/databases to be created.
623 </dt>
624
625
626 <dd>
627 <?php
628 aField( $conf, "RootPW", "DB root password", "password" );
629 ?>
630 </dd>
631 <dt>
632 You will only need this if the database and/or user account
633 above don't already exist.
634 Do <em>not</em> type in your machine's root password! MySQL
635 has its own "root" user with a separate password. (It might
636 even be blank, depending on your configuration.)
637 </dt>
638
639 <dd>
640 <label class='column'>&nbsp;</label>
641 <input type="submit" value="Install!" />
642 </dd>
643 </dl>
644
645
646 </form>
647
648 <?php
649 }
650
651 /* -------------------------------------------------------------------------------------- */
652
653 function writeAdminSettings( $conf ) {
654 return "
655 \$wgDBadminuser = \"{$conf->DBadminuser}\";
656 \$wgDBadminpassword = \"{$conf->DBadminpassword}\";
657 ";
658 }
659
660 function writeLocalSettings( $conf ) {
661 $conf->DBmysql4 = @$conf->DBmysql4 ? 'true' : 'false';
662 $conf->UseImageResize = $conf->UseImageResize ? 'true' : 'false';
663 $conf->PasswordSender = $conf->EmergencyContact;
664 if( $conf->LanguageCode == "en-utf8" ) {
665 $conf->LanguageCode = "en";
666 $conf->Encoding = "UTF-8";
667 }
668 $zlib = ($conf->zlib ? "" : "# ");
669 $magic = ($conf->ImageMagick ? "" : "# ");
670 $convert = ($conf->ImageMagick ? $conf->ImageMagick : "/usr/bin/convert" );
671 $pretty = ($conf->prettyURLs ? "" : "# ");
672 $ugly = ($conf->prettyURLs ? "# " : "");
673 $rights = ($conf->RightsUrl) ? "" : "# ";
674
675 # $proxyKey = Parser::getRandomString() . Parser::getRandomString();
676
677 $sep = (DIRECTORY_SEPARATOR == "\\") ? ";" : ":";
678 return "
679 # This file was automatically generated by the MediaWiki installer.
680 # If you make manual changes, please keep track in case you need to
681 # recreate them later.
682
683 \$IP = \"{$conf->IP}\";
684 ini_set( \"include_path\", \"\$IP/includes$sep\$IP/languages$sep\" . ini_get(\"include_path\") );
685 include_once( \"DefaultSettings.php\" );
686
687 if ( \$wgCommandLineMode ) {
688 if ( isset( \$_SERVER ) && array_key_exists( 'REQUEST_METHOD', \$_SERVER ) ) {
689 die( \"This script must be run from the command line\\n\" );
690 }
691 } else {
692 ## Compress output if the browser supports it
693 {$zlib}if( !ini_get( 'zlib.output_compression' ) ) ob_start( 'ob_gzhandler' );
694 }
695
696 \$wgSitename = \"{$conf->Sitename}\";
697
698 \$wgScriptPath = \"{$conf->ScriptPath}\";
699 \$wgScript = \"\$wgScriptPath/index.php\";
700 \$wgRedirectScript = \"\$wgScriptPath/redirect.php\";
701
702 ## If using PHP as a CGI module, use the ugly URLs
703 {$pretty}\$wgArticlePath = \"\$wgScript/\$1\";
704 {$ugly}\$wgArticlePath = \"\$wgScript?title=\$1\";
705
706 \$wgStyleSheetPath = \"\$wgScriptPath/stylesheets\";
707 \$wgStyleSheetDirectory = \"\$IP/stylesheets\";
708
709 \$wgUploadPath = \"\$wgScriptPath/images\";
710 \$wgUploadDirectory = \"\$IP/images\";
711 \$wgLogo = \"\$wgUploadPath/wiki.png\";
712
713 \$wgEmergencyContact = \"{$conf->EmergencyContact}\";
714 \$wgPasswordSender = \"{$conf->PasswordSender}\";
715
716 \$wgDBserver = \"{$conf->DBserver}\";
717 \$wgDBname = \"{$conf->DBname}\";
718 \$wgDBuser = \"{$conf->DBuser}\";
719 \$wgDBpassword = \"{$conf->DBpassword}\";
720
721 ## To allow SQL queries through the wiki's Special:Askaql page,
722 ## uncomment the next lines. THIS IS VERY INSECURE. If you want
723 ## to allow semipublic read-only SQL access for your sysops,
724 ## you should define a MySQL user with limited privileges.
725 ## See MySQL docs: http://www.mysql.com/doc/en/GRANT.html
726 #
727 # \$wgAllowSysopQueries = true;
728 # \$wgDBsqluser = \"sqluser\";
729 # \$wgDBsqlpassword = \"sqlpass\";
730
731 \$wgDBmysql4 = \$wgEnablePersistentLC = {$conf->DBmysql4};
732
733 ## To enable image uploads, make sure the 'images' directory
734 ## is writable, then uncomment this:
735 # \$wgDisableUploads = false;
736 \$wgUseImageResize = {$conf->UseImageResize};
737 {$magic}\$wgUseImageMagick = true;
738 {$magic}\$wgImageMagickConvertCommand = \"{$convert}\";
739
740 ## If you have the appropriate support software installed
741 ## you can enable inline LaTeX equations:
742 # \$wgUseTeX = true;
743 \$wgMathPath = \"{\$wgUploadPath}/math\";
744 \$wgMathDirectory = \"{\$wgUploadDirectory}/math\";
745 \$wgTmpDirectory = \"{\$wgUploadDirectory}/tmp\";
746
747 \$wgUsePHPTal = true;
748 if ( \$wgUsePHPTal ) {
749 ini_set( \"include_path\", \"\$IP/PHPTAL-NP-0.7.0/libs$sep\" . ini_get(\"include_path\") );
750 }
751
752 \$wgLocalInterwiki = \$wgSitename;
753
754 \$wgLanguageCode = \"{$conf->LanguageCode}\";
755 " . ($conf->Encoding ? "\$wgInputEncoding = \$wgOutputEncoding = \"{$conf->Encoding}\";" : "" ) . "
756
757 #\$wgProxyKey = $proxyKey;
758
759 ## For attaching licensing metadata to pages, and displaying an
760 ## appropriate copyright notice / icon. GNU Free Documentation
761 ## License and Creative Commons licenses are supported so far.
762 {$rights}\$wgEnableCreativeCommonsRdf = true;
763 \$wgRightsPage = \"\"; # Set to the title of a wiki page that describes your license/copyright
764 \$wgRightsUrl = \"{$conf->RightsUrl}\";
765 \$wgRightsText = \"{$conf->RightsText}\";
766 \$wgRightsIcon = \"{$conf->RightsIcon}\";
767 # \$wgRightsCode = \"{$conf->RightsCode}\"; # Not yet used
768 ";
769 }
770
771 function dieout( $text ) {
772 die( $text . "\n\n</body>\n</html>" );
773 }
774
775 function importPost( $name, $default = "" ) {
776 if( isset( $_REQUEST[$name] ) ) {
777 return $_REQUEST[$name];
778 } else {
779 return $default;
780 }
781 }
782
783 function aField( &$conf, $field, $text, $type = "", $value = "" ) {
784 if( $type != "" ) {
785 $xtype = "type=\"$type\"";
786 } else {
787 $xtype = "";
788 }
789
790 if(!(isset($id)) or ($id == "") ) $id = $field;
791 $nolabel = ($type == "radio") || ($type == "hidden");
792 if( $nolabel ) {
793 echo "\t\t<label>";
794 } else {
795 echo "\t\t<label class='column' for=\"$id\">$text</label>\n";
796 }
797
798 if( $type == "radio" && $value == $conf->$field ) {
799 $checked = "checked='checked'";
800 } else {
801 $checked = "";
802 }
803 echo "\t\t<input $xtype name=\"$field\" id=\"$id\" $checked value=\"";
804 if( $type == "radio" ) {
805 echo htmlspecialchars( $value );
806 } else {
807 echo htmlspecialchars( $conf->$field );
808 }
809 echo "\" />\n";
810 if( $nolabel ) {
811 echo " $text</label>\n";
812 }
813
814 global $errs;
815 if(isset($errs[$field])) echo "<span class='error'>" . $errs[$field] . "</span>\n";
816 }
817
818 function getLanguageList() {
819 global $wgLanguageNames;
820 if( !isset( $wgLanguageNames ) ) {
821 $wgLanguageCode = "xxx";
822 function wfLocalUrl( $x ) { return $x; }
823 function wfLocalUrlE( $x ) { return $x; }
824 include( "../languages/Language.php" );
825 }
826
827 $codes = array();
828 $latin1 = array( "da", "de", "en", "es", "nl", "sv" );
829
830 $d = opendir( "../languages" );
831 while( false !== ($f = readdir( $d ) ) ) {
832 if( preg_match( '/Language([A-Z][a-z]+)\.php$/', $f, $m ) ) {
833 $code = strtolower( $m[1] );
834 $codes[$code] = "$code - " . $wgLanguageNames[$code];
835 if( in_array( $code, $latin1 ) ) {
836 $codes[$code] .= " - Latin-1";
837 }
838 }
839 }
840 $codes["en-utf8"] = "en - English - Unicode";
841 closedir( $d );
842 ksort( $codes );
843 return $codes;
844 }
845
846 ?>
847
848 </body>
849 </html>