diff options
author | Evan Prodromou <evan@controlyourself.ca> | 2009-02-28 20:33:22 -0800 |
---|---|---|
committer | Evan Prodromou <evan@controlyourself.ca> | 2009-02-28 20:33:22 -0800 |
commit | 2ad667f704300dcb825a4822d567cbc8ebfebe02 (patch) | |
tree | 9c49c8f4cbac4b9902a7602ac2754d46955caf1d /install.php | |
parent | 1d610d3c6f9bb15a5cea93758ddd8d0ce64099f6 (diff) |
first pass at a working install.php
Diffstat (limited to 'install.php')
-rw-r--r-- | install.php | 96 |
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> |