]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
first pass at a working install.php
authorEvan Prodromou <evan@controlyourself.ca>
Sun, 1 Mar 2009 04:33:22 +0000 (20:33 -0800)
committerEvan Prodromou <evan@controlyourself.ca>
Sun, 1 Mar 2009 04:33:22 +0000 (20:33 -0800)
install.php

index 5ee6b10b3eb61403925040b1d0ecb647e7d642d8..a34214c48a45c12fc14e00fb7b4497e887df1c15 100644 (file)
@@ -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>