delayed user creation
This commit is contained in:
parent
cffbaac039
commit
b336b5296f
@ -83,10 +83,15 @@ class Index implements Extension {
|
|||||||
$count = $config->get_int('index_width') * $config->get_int('index_height');
|
$count = $config->get_int('index_width') * $config->get_int('index_height');
|
||||||
$images = Image::find_images($config, $database, ($page_number-1)*$count, $count, $search_terms);
|
$images = Image::find_images($config, $database, ($page_number-1)*$count, $count, $search_terms);
|
||||||
|
|
||||||
send_event(new PostListBuildingEvent($event->page, $search_terms));
|
if(!(count($search_terms) == 0 && count($images) == 0)) {
|
||||||
|
send_event(new PostListBuildingEvent($event->page, $search_terms));
|
||||||
|
|
||||||
$this->theme->set_page($page_number, $total_pages, $search_terms);
|
$this->theme->set_page($page_number, $total_pages, $search_terms);
|
||||||
$this->theme->display_page($event->page, $images);
|
$this->theme->display_page($event->page, $images);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->theme->display_intro($event->page);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($event instanceof SetupBuildingEvent) {
|
if($event instanceof SetupBuildingEvent) {
|
||||||
|
@ -7,6 +7,22 @@ class IndexTheme extends Themelet {
|
|||||||
$this->search_terms = $search_terms;
|
$this->search_terms = $search_terms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function display_intro(Page $page) {
|
||||||
|
$text = <<<EOD
|
||||||
|
<div style="text-align: left;">
|
||||||
|
<p>The first thing you'll probably want to do is create a new account; note
|
||||||
|
that the first account you create will by default be marked as the board's
|
||||||
|
administrator, and any further accounts will be regular users.
|
||||||
|
|
||||||
|
<p>Once logged in you can play with the settings, install extra features,
|
||||||
|
and of course start organising your images :-)
|
||||||
|
</div>
|
||||||
|
EOD;
|
||||||
|
$page->set_title("Welcome to Shimmie ".VERSION);
|
||||||
|
$page->set_heading("Welcome to Shimmie");
|
||||||
|
$page->add_block(new Block("Welcome", $text, "main", 0));
|
||||||
|
}
|
||||||
|
|
||||||
public function display_page(Page $page, $images) {
|
public function display_page(Page $page, $images) {
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
|
@ -233,9 +233,13 @@ class UserPage implements Extension {
|
|||||||
$hash = md5(strtolower($event->username) . $event->password);
|
$hash = md5(strtolower($event->username) . $event->password);
|
||||||
$email = (!empty($event->email)) ? $event->email : null;
|
$email = (!empty($event->email)) ? $event->email : null;
|
||||||
|
|
||||||
|
// if there are currently no admins, the new user should be one
|
||||||
|
$need_admin = ($database->db->GetOne("SELECT COUNT(*) FROM users WHERE admin IN ('Y', 't', '1')") == 0);
|
||||||
|
$admin = $need_admin ? 'Y' : 'N';
|
||||||
|
|
||||||
$database->Execute(
|
$database->Execute(
|
||||||
"INSERT INTO users (name, pass, joindate, email) VALUES (?, ?, now(), ?)",
|
"INSERT INTO users (name, pass, joindate, email, admin) VALUES (?, ?, now(), ?, ?)",
|
||||||
array($event->username, $hash, $email));
|
array($event->username, $hash, $email, $admin));
|
||||||
}
|
}
|
||||||
|
|
||||||
private function set_login_cookie($name, $pass) {
|
private function set_login_cookie($name, $pass) {
|
||||||
|
43
install.php
43
install.php
@ -59,16 +59,6 @@ require_once "lib/adodb/adodb-xmlschema03.inc.php";
|
|||||||
do_install();
|
do_install();
|
||||||
|
|
||||||
// utilities {{{
|
// utilities {{{
|
||||||
function installer_write_file($fname, $data) {
|
|
||||||
$fp = fopen($fname, "w");
|
|
||||||
if(!$fp) return false;
|
|
||||||
|
|
||||||
fwrite($fp, $data);
|
|
||||||
fclose($fp);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_gd_version() {
|
function check_gd_version() {
|
||||||
$gdversion = 0;
|
$gdversion = 0;
|
||||||
|
|
||||||
@ -120,8 +110,6 @@ function begin() { // {{{
|
|||||||
<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>
|
||||||
<tr><td>Admin Name:</td><td><input type="text" name="admin_name" size="40"></td></tr>
|
|
||||||
<tr><td>Admin Pass:</td><td><input type="password" name="admin_pass" size="40"></td></tr>
|
|
||||||
<tr><td colspan="2"><center><input type="submit" value="Go!"></center></td></tr>
|
<tr><td colspan="2"><center><input type="submit" value="Go!"></center></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
@ -140,32 +128,13 @@ function begin() { // {{{
|
|||||||
EOD;
|
EOD;
|
||||||
} // }}}
|
} // }}}
|
||||||
function install_process() { // {{{
|
function install_process() { // {{{
|
||||||
if(!isset($_POST['database_dsn']) || !isset($_POST["admin_name"]) || !isset($_POST["admin_pass"])) {
|
$database_dsn = $_POST['database_dsn'];
|
||||||
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);
|
create_tables($database_dsn);
|
||||||
insert_defaults($database_dsn, $admin_name, $admin_pass);
|
insert_defaults($database_dsn);
|
||||||
build_dirs();
|
build_dirs();
|
||||||
write_config($database_dsn);
|
write_config($database_dsn);
|
||||||
|
|
||||||
header("Location: index.php?q=setup");
|
header("Location: index.php");
|
||||||
} // }}}
|
|
||||||
function set_admin_cookie($admin_name, $admin_pass) { // {{{
|
|
||||||
$addr = $_SERVER['REMOTE_ADDR'];
|
|
||||||
$addr = inet_ntop(inet_pton($addr) & inet_pton("255.255.0.0"));
|
|
||||||
$hash = md5(strtolower($admin_name) . $admin_pass);
|
|
||||||
setcookie("shm_user", $admin_name, time()+60*60*24*365);
|
|
||||||
setcookie("shm_session", md5($hash.$addr), time()+60*60*24*7, "/");
|
|
||||||
} // }}}
|
} // }}}
|
||||||
function create_tables($dsn) { // {{{
|
function create_tables($dsn) { // {{{
|
||||||
$db = NewADOConnection($dsn);
|
$db = NewADOConnection($dsn);
|
||||||
@ -186,7 +155,7 @@ function create_tables($dsn) { // {{{
|
|||||||
}
|
}
|
||||||
$db->Close();
|
$db->Close();
|
||||||
} // }}}
|
} // }}}
|
||||||
function insert_defaults($dsn, $admin_name, $admin_pass) { // {{{
|
function insert_defaults($dsn) { // {{{
|
||||||
$db = NewADOConnection($dsn);
|
$db = NewADOConnection($dsn);
|
||||||
if(!$db) {
|
if(!$db) {
|
||||||
die("Couldn't connect to \"$dsn\"");
|
die("Couldn't connect to \"$dsn\"");
|
||||||
@ -194,11 +163,9 @@ function insert_defaults($dsn, $admin_name, $admin_pass) { // {{{
|
|||||||
else {
|
else {
|
||||||
$config_insert = $db->Prepare("INSERT INTO config(name, value) VALUES(?, ?)");
|
$config_insert = $db->Prepare("INSERT INTO config(name, value) VALUES(?, ?)");
|
||||||
$user_insert = $db->Prepare("INSERT INTO users(name, pass, joindate, admin) VALUES(?, ?, now(), ?)");
|
$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($user_insert, Array('Anonymous', null, 'N'));
|
||||||
$db->Execute($config_insert, Array('anon_id', $db->Insert_ID()));
|
$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) {
|
if(check_im_version() > 0) {
|
||||||
$db->Execute($config_insert, Array('thumb_engine', 'convert'));
|
$db->Execute($config_insert, Array('thumb_engine', 'convert'));
|
||||||
@ -240,7 +207,7 @@ function build_dirs() { // {{{
|
|||||||
function write_config($dsn) { // {{{
|
function write_config($dsn) { // {{{
|
||||||
$file_content = "<?php \$database_dsn='$dsn'; ?>";
|
$file_content = "<?php \$database_dsn='$dsn'; ?>";
|
||||||
|
|
||||||
if(is_writable("./") && installer_write_file("config.php", $file_content)) {
|
if(is_writable("./") && file_put_contents("config.php", $file_content)) {
|
||||||
assert(file_exists("config.php"));
|
assert(file_exists("config.php"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user