+?>
+
+<?php
+ $host = $_POST['host'];
+ $database = $_POST['database'];
+ $username = $_POST['username'];
+ $password = $_POST['password'];
+ $sitename = $_POST['sitename'];
+ $path = $_POST['path'];
+ $fancy = !empty($_POST['fancy']);
+?>
+ <dl class="system_notice">
+ <dt>Page notice</dt>
+ <dd>
+ <ul>
+<?php
+ $fail = false;
+
+ if (empty($host)) {
+ updateStatus("No hostname specified.", true);
+ $fail = true;
+ }
+
+ if (empty($database)) {
+ updateStatus("No database specified.", true);
+ $fail = true;
+ }
+
+ if (empty($username)) {
+ updateStatus("No username specified.", true);
+ $fail = true;
+ }
+
+ if (empty($password)) {
+ updateStatus("No password specified.", true);
+ $fail = true;
+ }
+
+ if (empty($sitename)) {
+ updateStatus("No sitename specified.", true);
+ $fail = true;
+ }
+
+ if($fail){
+ showForm();
+ return;
+ }
+
+ updateStatus("Starting installation...");
+ updateStatus("Checking database...");
+ $conn = mysql_connect($host, $username, $password);
+ if (!$conn) {
+ updateStatus("Can't connect to server '$host' as '$username'.", true);
+ showForm();
+ return;
+ }
+ updateStatus("Changing to database...");
+ $res = mysql_select_db($database, $conn);
+ if (!$res) {
+ updateStatus("Can't change to database.", true);
+ showForm();
+ return;
+ }
+ updateStatus("Running database script...");
+ $res = runDbScript(INSTALLDIR.'/db/laconica.sql', $conn);
+ if ($res === false) {
+ updateStatus("Can't run database script.", true);
+ showForm();
+ return;
+ }
+ foreach (array('sms_carrier' => 'SMS carrier',
+ 'notice_source' => 'notice source',
+ 'foreign_services' => 'foreign service')
+ as $scr => $name) {
+ updateStatus(sprintf("Adding %s data to database...", $name));
+ $res = runDbScript(INSTALLDIR.'/db/'.$scr.'.sql', $conn);
+ if ($res === false) {
+ updateStatus(sprintf("Can't run %d script.", $name), true);
+ showForm();
+ return;
+ }
+ }
+ updateStatus("Writing config file...");
+ $sqlUrl = "mysqli://$username:$password@$host/$database";
+ $res = writeConf($sitename, $sqlUrl, $fancy, $path);
+ if (!$res) {
+ updateStatus("Can't write config file.", true);
+ showForm();
+ return;
+ }
+ updateStatus("Done!");
+ if ($path) $path .= '/';
+ updateStatus("You can visit your <a href='/$path'>new Laconica site</a>.");
+?>
+
+<?php
+}
+
+function writeConf($sitename, $sqlUrl, $fancy, $path)
+{
+ $res = file_put_contents(INSTALLDIR.'/config.php',
+ "<?php\n".
+ "if (!defined('LACONICA')) { exit(1); }\n\n".
+ "\$config['site']['name'] = \"$sitename\";\n\n".
+ ($fancy ? "\$config['site']['fancy'] = true;\n\n":'').
+ "\$config['site']['path'] = \"$path\";\n\n".
+ "\$config['db']['database'] = \"$sqlUrl\";\n\n".
+ "?>");
+ return $res;