more installer niceness
git-svn-id: file:///home/shish/svn/shimmie2/trunk@705 7f39781d-f577-437e-ae19-be835c7a54ca
This commit is contained in:
parent
4fb0092742
commit
97e72fa2af
123
install.php
123
install.php
@ -40,7 +40,6 @@ TD INPUT {width: 350px;}
|
|||||||
<div style="display: none;">
|
<div style="display: none;">
|
||||||
<PLAINTEXT>
|
<PLAINTEXT>
|
||||||
<?php }
|
<?php }
|
||||||
// FIXME: should be called from index
|
|
||||||
assert_options(ASSERT_ACTIVE, 1);
|
assert_options(ASSERT_ACTIVE, 1);
|
||||||
assert_options(ASSERT_BAIL, 1);
|
assert_options(ASSERT_BAIL, 1);
|
||||||
|
|
||||||
@ -90,20 +89,17 @@ function check_im_version() {
|
|||||||
return (empty($convert_check) ? 0 : 1);
|
return (empty($convert_check) ? 0 : 1);
|
||||||
}
|
}
|
||||||
// }}}
|
// }}}
|
||||||
// init {{{
|
function do_install() { // {{{
|
||||||
function do_install() {
|
|
||||||
session_start(); // hold temp stuff in session
|
session_start(); // hold temp stuff in session
|
||||||
|
|
||||||
$stage = isset($_GET['stage']) ? $_GET['stage'] : "begin";
|
if(!isset($_POST['database_dsn'])) {
|
||||||
|
begin();
|
||||||
switch($stage) {
|
|
||||||
default: begin(); break;
|
|
||||||
case 'install': install_process(); break;
|
|
||||||
}
|
}
|
||||||
}
|
else {
|
||||||
|
install_process();
|
||||||
|
}
|
||||||
function begin() {
|
} // }}}
|
||||||
|
function begin() { // {{{
|
||||||
if(check_gd_version() == 0 && check_im_version() == 0) {
|
if(check_gd_version() == 0 && check_im_version() == 0) {
|
||||||
$gd = "<h3>Error</h3>\nPHP's GD extension seems to be missing, ".
|
$gd = "<h3>Error</h3>\nPHP's GD extension seems to be missing, ".
|
||||||
"and imagemagick's \"convert\" command cannot be found - ".
|
"and imagemagick's \"convert\" command cannot be found - ".
|
||||||
@ -120,7 +116,7 @@ function begin() {
|
|||||||
$gd
|
$gd
|
||||||
|
|
||||||
<h3>Install</h3>
|
<h3>Install</h3>
|
||||||
<form action="install.php?stage=install" method="POST">
|
<form action="install.php" method="POST">
|
||||||
<center>
|
<center>
|
||||||
<table>
|
<table>
|
||||||
<tr><td>Database:</td><td><input type="text" name="database_dsn" size="40"></td></tr>
|
<tr><td>Database:</td><td><input type="text" name="database_dsn" size="40"></td></tr>
|
||||||
@ -142,9 +138,28 @@ function begin() {
|
|||||||
documentation wiki</a>.
|
documentation wiki</a>.
|
||||||
</div>
|
</div>
|
||||||
EOD;
|
EOD;
|
||||||
}
|
} // }}}
|
||||||
// }}}
|
function install_process() { // {{{
|
||||||
// common {{{
|
if(!isset($_POST['database_dsn']) || !isset($_POST["admin_name"]) || !isset($_POST["admin_pass"])) {
|
||||||
|
die("Install is missing some paramaters (database_dsn, admin_name, or admin_pass)");
|
||||||
|
}
|
||||||
|
else if(strlen($_POST["admin_name"]) < 1 || strlen($_POST["admin_pass"]) < 1) {
|
||||||
|
die("Admin name and password must be at least one character each");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$database_dsn = $_POST['database_dsn'];
|
||||||
|
$admin_name = $_POST["admin_name"];
|
||||||
|
$admin_pass = $_POST["admin_pass"];
|
||||||
|
}
|
||||||
|
|
||||||
|
set_admin_cookie($admin_name, $admin_pass);
|
||||||
|
create_tables($database_dsn);
|
||||||
|
insert_defaults($database_dsn, $admin_name, $admin_pass);
|
||||||
|
build_dirs();
|
||||||
|
write_config($database_dsn);
|
||||||
|
|
||||||
|
header("Location: index.php?q=setup");
|
||||||
|
} // }}}
|
||||||
function set_admin_cookie($admin_name, $admin_pass) { // {{{
|
function set_admin_cookie($admin_name, $admin_pass) { // {{{
|
||||||
$addr = $_SERVER['REMOTE_ADDR'];
|
$addr = $_SERVER['REMOTE_ADDR'];
|
||||||
$hash = md5(strtolower($admin_name) . $admin_pass);
|
$hash = md5(strtolower($admin_name) . $admin_pass);
|
||||||
@ -166,12 +181,32 @@ function create_tables($dsn) { // {{{
|
|||||||
$result = $schema->ExecuteSchema();
|
$result = $schema->ExecuteSchema();
|
||||||
|
|
||||||
if(!$result) {
|
if(!$result) {
|
||||||
define( 'XMLS_DEBUG', TRUE );
|
|
||||||
die("Error creating tables from XML schema");
|
die("Error creating tables from XML schema");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$db->Close();
|
$db->Close();
|
||||||
} // }}}
|
} // }}}
|
||||||
|
function insert_defaults($dsn, $admin_name, $admin_pass) { // {{{
|
||||||
|
$db = NewADOConnection($dsn);
|
||||||
|
if(!$db) {
|
||||||
|
die("Couldn't connect to \"$dsn\"");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$config_insert = $db->Prepare("INSERT INTO config(name, value) VALUES(?, ?)");
|
||||||
|
$user_insert = $db->Prepare("INSERT INTO users(name, pass, joindate, admin) VALUES(?, ?, now(), ?)");
|
||||||
|
$admin_pass = md5(strtolower($admin_name).$admin_pass);
|
||||||
|
|
||||||
|
$db->Execute($user_insert, Array('Anonymous', null, 'N'));
|
||||||
|
$db->Execute($config_insert, Array('anon_id', $db->Insert_ID()));
|
||||||
|
$db->Execute($user_insert, Array($admin_name, $admin_pass, 'Y'));
|
||||||
|
|
||||||
|
if(check_im_version() > 0) {
|
||||||
|
$db->Execute($config_insert, Array('thumb_engine', 'convert'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$db->Close();
|
||||||
|
}
|
||||||
|
} // }}}
|
||||||
function build_dirs() { // {{{
|
function build_dirs() { // {{{
|
||||||
if(!file_exists("images")) @mkdir("images"); // *try* and make default dirs. Ignore any errors --
|
if(!file_exists("images")) @mkdir("images"); // *try* and make default dirs. Ignore any errors --
|
||||||
if(!file_exists("thumbs")) @mkdir("thumbs"); // if something is amiss, we'll tell the user later
|
if(!file_exists("thumbs")) @mkdir("thumbs"); // if something is amiss, we'll tell the user later
|
||||||
@ -225,60 +260,6 @@ EOD;
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
} // }}}
|
} // }}}
|
||||||
function install_process() { // {{{
|
|
||||||
if(!isset($_POST['database_dsn']) || !isset($_POST["admin_name"]) || !isset($_POST["admin_pass"])) {
|
|
||||||
die("Install is missing some paramaters (database_dsn, admin_name, or admin_pass)");
|
|
||||||
}
|
|
||||||
else if(strlen($_POST["admin_name"]) < 1 || strlen($_POST["admin_pass"]) < 1) {
|
|
||||||
die("Admin name and password must be at least one character each");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$database_dsn = $_POST['database_dsn'];
|
|
||||||
$admin_name = $_POST["admin_name"];
|
|
||||||
$admin_pass = $_POST["admin_pass"];
|
|
||||||
}
|
|
||||||
|
|
||||||
set_admin_cookie($admin_name, $admin_pass);
|
|
||||||
create_tables($database_dsn);
|
|
||||||
insert_defaults($database_dsn, $admin_name, $admin_pass);
|
|
||||||
build_dirs();
|
|
||||||
write_config($database_dsn);
|
|
||||||
|
|
||||||
header("Location: index.php?q=setup");
|
|
||||||
} // }}}
|
|
||||||
function insert_defaults($dsn, $admin_name, $admin_pass) { // {{{
|
|
||||||
$db = NewADOConnection($dsn);
|
|
||||||
if(!$db) {
|
|
||||||
die("Couldn't connect to \"$dsn\"");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$config_insert = $db->Prepare("INSERT INTO config(name, value) VALUES(?, ?)");
|
|
||||||
$user_insert = $db->Prepare("INSERT INTO users(name, pass, joindate, admin) VALUES(?, ?, now(), ?)");
|
|
||||||
|
|
||||||
if(!$db->GetOne("SELECT * FROM users WHERE name=?", Array('Anonymous'))) {
|
|
||||||
$db->Execute($user_insert, Array('Anonymous', null, 'N'));
|
|
||||||
|
|
||||||
$db->Execute("DELETE FROM config WHERE name=?", Array('anon_id'));
|
|
||||||
$db->Execute($config_insert, Array('anon_id', $db->Insert_ID()));
|
|
||||||
}
|
|
||||||
|
|
||||||
# we can safely delete the user and recreate, hence changing the ID,
|
|
||||||
# because insert_defaults is only called during first installation
|
|
||||||
if($db->GetOne("SELECT * FROM users WHERE name=?", Array($admin_name))) {
|
|
||||||
$db->Execute("DELETE FROM users WHERE name=?", Array($admin_name));
|
|
||||||
}
|
|
||||||
|
|
||||||
$admin_pass = md5(strtolower($admin_name).$admin_pass);
|
|
||||||
$db->Execute($user_insert, Array($admin_name, $admin_pass, 'Y'));
|
|
||||||
|
|
||||||
if(check_im_version() > 0) {
|
|
||||||
$db->Execute($config_insert, Array('thumb_engine', 'convert'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$db->Close();
|
|
||||||
}
|
|
||||||
} // }}}
|
|
||||||
// }}}
|
|
||||||
?>
|
?>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user