summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlyourself.ca>2009-02-28 20:33:22 -0800
committerEvan Prodromou <evan@controlyourself.ca>2009-02-28 20:33:22 -0800
commit2ad667f704300dcb825a4822d567cbc8ebfebe02 (patch)
tree9c49c8f4cbac4b9902a7602ac2754d46955caf1d
parent1d610d3c6f9bb15a5cea93758ddd8d0ce64099f6 (diff)
first pass at a working install.php
-rw-r--r--install.php96
1 files changed, 94 insertions, 2 deletions
diff --git a/install.php b/install.php
index 5ee6b10b3..a34214c48 100644
--- a/install.php
+++ b/install.php
@@ -1,6 +1,9 @@
<?
+define('INSTALLDIR', dirname(__FILE__));
+
function main()
{
+ checkPrereqs();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
handlePost();
} else {
@@ -8,11 +11,15 @@ function main()
}
}
+function checkPrereqs()
+{
+}
+
function showForm()
{
?>
<p>Enter your database connection information below to initialize the database.</p>
-<form method='post'>
+<form method='post' action='install.php'>
<fieldset>
<ul class='form_data'>
<li>
@@ -22,11 +29,15 @@ function showForm()
</li>
<li>
<li>
- <label for='host'>Database host</label>
+ <label for='host'>Hostname</label>
<input type='text' id='host' name='host' />
<p>Database hostname</p>
</li>
<li>
+ <label for='host'>Database</label>
+ <input type='text' id='database' name='database' />
+ <p>Database name</p>
+ </li>
<li>
<label for='username'>Username</label>
<input type='text' id='username' name='username' />
@@ -44,9 +55,90 @@ function showForm()
<?
}
+function updateStatus($status, $error=false)
+{
+?>
+ <li>
+<?
+ print $status;
+?>
+ </li>
+<?
+}
+
function handlePost()
{
+?>
+ <ul>
+<?
+ $host = $_POST['host'];
+ $database = $_POST['database'];
+ $username = $_POST['username'];
+ $password = $_POST['password'];
+ $sitename = $_POST['sitename'];
+
+ 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;
+ }
+ updateStatus("Writing config file...");
+ $sqlUrl = "mysqli://$username:$password@$host/$database";
+ $res = writeConf($sitename, $sqlUrl);
+ if (!$res) {
+ updateStatus("Can't write config file.", true);
+ showForm();
+ return;
+ }
+ updateStatus("Done!");
+?>
+ </ul>
+<?
+}
+
+function writeConf($sitename, $sqlUrl)
+{
+ $res = file_put_contents(INSTALLDIR.'/config.php',
+ "<?\n".
+ "\$config['site']['name'] = \"$sitename\";\n\n".
+ "\$config['db']['database'] = \"$sqlUrl\";\n\n");
+ return $res;
}
+
+function runDbScript($filename, $conn)
+{
+ $sql = trim(file_get_contents($filename));
+ $stmts = explode(';', $sql);
+ foreach ($stmts as $stmt) {
+ $stmt = trim($stmt);
+ if (!mb_strlen($stmt)) {
+ continue;
+ }
+ $res = mysql_query($stmt, $conn);
+ if ($res === false) {
+ return $res;
+ }
+ }
+ return true;
+}
+
?>
<html>
<head>