From c81e480daaa233c35fec262e9907d35179db5e86 Mon Sep 17 00:00:00 2001 From: "mckenzierobotics.org" Date: Mon, 5 Sep 2011 14:46:23 -0700 Subject: (mostly) Fix the installer. We still need to set baseurl in the 'conf' table manually. --- installer/include.php | 15 +++++ installer/index.php | 149 ++++++++++++++++++++++++------------------- src/views/Template.class.php | 3 +- 3 files changed, 99 insertions(+), 68 deletions(-) diff --git a/installer/include.php b/installer/include.php index 7300e90..b7f7b19 100644 --- a/installer/include.php +++ b/installer/include.php @@ -79,3 +79,18 @@ function mm_mysql_table_exists($mysql, $table_name) { $total = $total[0]; return $total>0; } + +function mm_mysql_create_table($mysql, $table_name, $columns) { + $table_exists = mm_mysql_table_exists($mysql, $table_name); + if ($table_exists) { + return 0; + } + $query ="CREATE TABLE $table_name (\n"; + $query.=implode(",\n ", $columns); + $query.="\n);"; + $success = mysql_query($query); + if (!$success) { + return mysql_error($mysql); + } + return 1; +} diff --git a/installer/index.php b/installer/index.php index a0e9235..c16ec38 100644 --- a/installer/index.php +++ b/installer/index.php @@ -1,18 +1,30 @@ header('Message Manager: Installer'); @@ -34,11 +46,11 @@ if (!mm_isSqlConfigured($conf_file)) { $t->openFieldset("MySQL Authentication", $mysql); $t->inputText('db_host', 'Hostname', '', - getParam('db_host','localhost'), $mysql); + mm_getParam('db_host','localhost'), $mysql); $t->inputText('db_user', 'Username', '', - getParam('db_user'), $mysql); + mm_getParam('db_user'), $mysql); $t->inputPassword('db_password', 'Password', '', - getParam('db_password'), $mysql); + mm_getParam('db_password'), $mysql); if ($try && !$mysql) { $t->inputP("Could not authenticate: ".mysql_error(), true); } @@ -58,7 +70,7 @@ if (!mm_isSqlConfigured($conf_file)) { $db_message = ''; if ($charset) { $t->setRet(true); - $db = mm_mysql_db($mysql, $_POST['db_name'], $db_message); + $db = mm_mysql_create_db($mysql, $_POST['db_name'], $db_message); $t->setRet(false); } @@ -66,47 +78,42 @@ if (!mm_isSqlConfigured($conf_file)) { $table = false; if ($db) { - $table_exists = mm_mysql_table_exists($mysql,$db_prefix.'auth'); - if (!$table_exists) { - $query = ''; - $query.='CREATE TABLE '.$db_prefix."auth (\n". - " uid INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,\n". - " name VARCHAR(255),\n". - " hash CHAR(60)\n". - " status INT\n". - ");"; - $query.='CREATE TABLE '.$db_prefix."users (\n". - " uid INT UNSIGNED,\n". - " k VARCHAR(255),\n". - " v TEXT\n". - ");"; - $query.='CREATE TABLE '.$db_prefix."conf (\n". - " k VARCHAR(255),\n". - " v VARCHAR(255)\n". - ");"; - $query.='CREATE TABLE '.$db_prefix."plugins (\n". - " plugin VARCHAR(255),\n". - " k VARCHAR(255),\n". - " v VARCHAR(255)\n". - ");"; - $table = mysql_query($query); - if (!$table) { - $table_error = mysql_error($mysql); - } - } else { - $table = true; - } + $table_auth = + mm_mysql_create_table($mysql,$db_prefix.'auth', + array('uid INT UNSIGNED '. + 'AUTO_INCREMENT PRIMARY KEY', + 'name VARCHAR(255)', + 'hash CHAR(60)', + 'status INT')); + $table_users = + mm_mysql_create_table($mysql,$db_prefix.'users', + array('uid INT UNSIGNED', + 'k VARCHAR(255)', + 'v TEXT')); + $table_conf = + mm_mysql_create_table($mysql,$db_prefix.'conf', + array('k VARCHAR(255)', + 'v VARCHAR(255)')); + $table_plugins = + mm_mysql_create_table($mysql,$db_prefix.'plugins', + array('plugin VARCHAR(255)', + 'k VARCHAR(255)', + 'v VARCHAR(255)')); + $tables_ok=(!is_string($table_auth)) + && (!is_string($table_users)) + && (!is_string($table_conf)) + && (!is_string($table_plugins)); } //////////////////////////////////////////////////////////////////////// - $t->openFieldset("MySQL Settings", $table); + $t->openFieldset("MySQL Settings", $tables_ok); $t->inputText('db_charset', 'Charset', "I've heard that you may need to change this if ". "you use an old version of MySQL. 'utf8' is ". "generally a good option, though.", - getParam('db_charset','utf8'), $table); + mm_getParam('db_charset','utf8'), $tables_ok); if ($mysql) { $str = $_POST['db_charset']; if ($charset) { @@ -118,26 +125,34 @@ if (!mm_isSqlConfigured($conf_file)) { } $t->inputText('db_name', 'Database name', '', - getParam('db_name', 'messagemanager'), $table); + mm_getParam('db_name', 'messagemanager'), $tables_ok); echo $db_message; $t->inputText('db_prefix', 'Table prefix', 'Just use simple characters, like [A-Za-z0-9_], '. 'and keep it short.', - getParam('db_prefix','mm_'), $table); + mm_getParam('db_prefix','mm_'), $tables_ok); if ($db) { - $db_name = ''.$db_prefix.'auth'; - if ($table) { - if ($table_exists) { - $msg="Table $db_name already exists."; + $tables = array($db_prefix.'auth'=>$table_auth, + $db_prefix.'users'=>$table_users, + $db_prefix.'conf'=>$table_conf, + $db_prefix.'plugins'=>$table_plugins); + foreach ($tables as $name => $table) { + $htmlname = ''.htmlentities($name).''; + if (is_string($table)) { + $msg = "Could not create table $htmlname: ". + $table; } else { - $msg="Created table $db_name."; + switch ($table) { + case 0: $msg = "Table $htmlname already exists."; + break; + case 1: $msg = "Created table $htmlname."; + break; + } } - } else { - $msg="Could not create table $db_name: ".$table_error; + $t->inputP($msg, is_string($table)); } - $t->inputP($msg, !$table); } $t->closeFieldset(); @@ -145,24 +160,24 @@ if (!mm_isSqlConfigured($conf_file)) { //////////////////////////////////////////////////////////////////////// $fh = false; - if ($table) { - $fh = fopen('conf.php', 'w'); - if ($fh === FALSE) { + if ($tables_ok) { + $fh = fopen($conf_file, 'w'); + if ($fh === false) { $msg="Could not open file conf.php for writing."; - $template->paragraph($msg, true); + $t->paragraph($msg, array('class'=>'error')); } else { fwrite($fh, 'closeTag('form'); $t->openTag('form', array('action'=>$uri)); $t->tag('input', array('type'=>'submit', @@ -205,7 +220,7 @@ if (!mm_isSqlConfigured($conf_file)) { $uid = $db->addUser($user, $password); $admin = $db->setStatus($uid, 2); if (!$admin) { - $admin_error = mysql_error($mysql); + $admin_error = $db->mysql_error(); } } @@ -214,9 +229,9 @@ if (!mm_isSqlConfigured($conf_file)) { $t->openFieldset("First Account (administrator)",$admin); $t->inputText('mm_user', 'Username', "Must be <= 255 characters.", - getParam('mm_user','root'), $admin); + mm_getParam('mm_user','root'), $admin); $t->inputNewPassword('mm_password', 'Password', - ($pw?getParam('mm_password'):''), + ($pw?mm_getParam('mm_password'):''), $admin); if ($try && !$pw) { $msg="Passwords don't match."; @@ -244,7 +259,7 @@ if (!mm_isSqlConfigured($conf_file)) { } else { $t->paragraph("File conf.php already exists, and there ". "is at least one user. Return to the ". - "main page."); + "main page."); } $t->footer(); } diff --git a/src/views/Template.class.php b/src/views/Template.class.php index 7d4d1ff..b128ef3 100644 --- a/src/views/Template.class.php +++ b/src/views/Template.class.php @@ -15,7 +15,8 @@ class Template { public function __construct($base_url, $mm=null) { $this->base = $base_url; - $this->db = $mm->database(); + if ($mm!==null) + $this->db = $mm->database(); } public function setRet($ret) { -- cgit v1.2.3-54-g00ecf