move some installer bits to util.php
This commit is contained in:
parent
2d20cf388e
commit
9b50e98927
4 changed files with 232 additions and 232 deletions
|
@ -67,6 +67,7 @@ require_once "core/exceptions.php";
|
||||||
require_once "core/cacheengine.php";
|
require_once "core/cacheengine.php";
|
||||||
require_once "core/dbengine.php";
|
require_once "core/dbengine.php";
|
||||||
require_once "core/database.php";
|
require_once "core/database.php";
|
||||||
|
require_once "core/util.php";
|
||||||
|
|
||||||
if (is_readable("data/config/shimmie.conf.php")) {
|
if (is_readable("data/config/shimmie.conf.php")) {
|
||||||
die("Shimmie is already installed.");
|
die("Shimmie is already installed.");
|
||||||
|
@ -76,29 +77,6 @@ do_install();
|
||||||
|
|
||||||
// TODO: Can some of these be pushed into "core/???.inc.php" ?
|
// TODO: Can some of these be pushed into "core/???.inc.php" ?
|
||||||
|
|
||||||
function check_gd_version(): int
|
|
||||||
{
|
|
||||||
$gdversion = 0;
|
|
||||||
|
|
||||||
if (function_exists('gd_info')) {
|
|
||||||
$gd_info = gd_info();
|
|
||||||
if (substr_count($gd_info['GD Version'], '2.')) {
|
|
||||||
$gdversion = 2;
|
|
||||||
} elseif (substr_count($gd_info['GD Version'], '1.')) {
|
|
||||||
$gdversion = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $gdversion;
|
|
||||||
}
|
|
||||||
|
|
||||||
function check_im_version(): int
|
|
||||||
{
|
|
||||||
$convert_check = exec("convert");
|
|
||||||
|
|
||||||
return (empty($convert_check) ? 0 : 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
function do_install()
|
function do_install()
|
||||||
{
|
{
|
||||||
if (file_exists("data/config/auto_install.conf.php")) {
|
if (file_exists("data/config/auto_install.conf.php")) {
|
||||||
|
@ -115,7 +93,23 @@ function do_install()
|
||||||
|
|
||||||
define("CACHE_DSN", null);
|
define("CACHE_DSN", null);
|
||||||
define("DATABASE_KA", true);
|
define("DATABASE_KA", true);
|
||||||
install_process();
|
try {
|
||||||
|
create_dirs();
|
||||||
|
create_tables(new Database());
|
||||||
|
write_config();
|
||||||
|
} catch (InstallerException $e) {
|
||||||
|
print <<<EOD
|
||||||
|
<div id="installer">
|
||||||
|
<h1>Shimmie Installer</h1>
|
||||||
|
<h3>{$e->title}</h3>
|
||||||
|
<div class="container">
|
||||||
|
{$e->body}
|
||||||
|
<br/><br/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
EOD;
|
||||||
|
exit($e->code);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function ask_questions()
|
function ask_questions()
|
||||||
|
@ -231,208 +225,6 @@ function ask_questions()
|
||||||
</div>
|
</div>
|
||||||
EOD;
|
EOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* This is where the install really takes place.
|
|
||||||
*/
|
|
||||||
function install_process()
|
|
||||||
{
|
|
||||||
build_dirs();
|
|
||||||
create_tables();
|
|
||||||
insert_defaults();
|
|
||||||
write_config();
|
|
||||||
}
|
|
||||||
|
|
||||||
function create_tables()
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$db = new Database();
|
|
||||||
|
|
||||||
if ($db->count_tables() > 0) {
|
|
||||||
print <<<EOD
|
|
||||||
<div id="installer">
|
|
||||||
<h1>Shimmie Installer</h1>
|
|
||||||
<h3>Warning: The Database schema is not empty!</h3>
|
|
||||||
<div class="container">
|
|
||||||
<p>Please ensure that the database you are installing Shimmie with is empty before continuing.</p>
|
|
||||||
<p>Once you have emptied the database of any tables, please hit 'refresh' to continue.</p>
|
|
||||||
<br/><br/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
EOD;
|
|
||||||
exit(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
$db->create_table("aliases", "
|
|
||||||
oldtag VARCHAR(128) NOT NULL,
|
|
||||||
newtag VARCHAR(128) NOT NULL,
|
|
||||||
PRIMARY KEY (oldtag)
|
|
||||||
");
|
|
||||||
$db->execute("CREATE INDEX aliases_newtag_idx ON aliases(newtag)", []);
|
|
||||||
|
|
||||||
$db->create_table("config", "
|
|
||||||
name VARCHAR(128) NOT NULL,
|
|
||||||
value TEXT,
|
|
||||||
PRIMARY KEY (name)
|
|
||||||
");
|
|
||||||
$db->create_table("users", "
|
|
||||||
id SCORE_AIPK,
|
|
||||||
name VARCHAR(32) UNIQUE NOT NULL,
|
|
||||||
pass VARCHAR(250),
|
|
||||||
joindate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
class VARCHAR(32) NOT NULL DEFAULT 'user',
|
|
||||||
email VARCHAR(128)
|
|
||||||
");
|
|
||||||
$db->execute("CREATE INDEX users_name_idx ON users(name)", []);
|
|
||||||
|
|
||||||
$db->create_table("images", "
|
|
||||||
id SCORE_AIPK,
|
|
||||||
owner_id INTEGER NOT NULL,
|
|
||||||
owner_ip SCORE_INET NOT NULL,
|
|
||||||
filename VARCHAR(64) NOT NULL,
|
|
||||||
filesize INTEGER NOT NULL,
|
|
||||||
hash CHAR(32) UNIQUE NOT NULL,
|
|
||||||
ext CHAR(4) NOT NULL,
|
|
||||||
source VARCHAR(255),
|
|
||||||
width INTEGER NOT NULL,
|
|
||||||
height INTEGER NOT NULL,
|
|
||||||
posted TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
locked SCORE_BOOL NOT NULL DEFAULT SCORE_BOOL_N,
|
|
||||||
FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE RESTRICT
|
|
||||||
");
|
|
||||||
$db->execute("CREATE INDEX images_owner_id_idx ON images(owner_id)", []);
|
|
||||||
$db->execute("CREATE INDEX images_width_idx ON images(width)", []);
|
|
||||||
$db->execute("CREATE INDEX images_height_idx ON images(height)", []);
|
|
||||||
$db->execute("CREATE INDEX images_hash_idx ON images(hash)", []);
|
|
||||||
|
|
||||||
$db->create_table("tags", "
|
|
||||||
id SCORE_AIPK,
|
|
||||||
tag VARCHAR(64) UNIQUE NOT NULL,
|
|
||||||
count INTEGER NOT NULL DEFAULT 0
|
|
||||||
");
|
|
||||||
$db->execute("CREATE INDEX tags_tag_idx ON tags(tag)", []);
|
|
||||||
|
|
||||||
$db->create_table("image_tags", "
|
|
||||||
image_id INTEGER NOT NULL,
|
|
||||||
tag_id INTEGER NOT NULL,
|
|
||||||
UNIQUE(image_id, tag_id),
|
|
||||||
FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE,
|
|
||||||
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
|
|
||||||
");
|
|
||||||
$db->execute("CREATE INDEX images_tags_image_id_idx ON image_tags(image_id)", []);
|
|
||||||
$db->execute("CREATE INDEX images_tags_tag_id_idx ON image_tags(tag_id)", []);
|
|
||||||
|
|
||||||
$db->execute("INSERT INTO config(name, value) VALUES('db_version', 11)");
|
|
||||||
$db->commit();
|
|
||||||
} catch (PDOException $e) {
|
|
||||||
handle_db_errors(true, "An error occurred while trying to create the database tables necessary for Shimmie.", $e->getMessage(), 3);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
handle_db_errors(false, "An unknown error occurred while trying to insert data into the database.", $e->getMessage(), 4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function insert_defaults()
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$db = new Database();
|
|
||||||
|
|
||||||
$db->execute("INSERT INTO users(name, pass, joindate, class) VALUES(:name, :pass, now(), :class)", ["name" => 'Anonymous', "pass" => null, "class" => 'anonymous']);
|
|
||||||
$db->execute("INSERT INTO config(name, value) VALUES(:name, :value)", ["name" => 'anon_id', "value" => $db->get_last_insert_id('users_id_seq')]);
|
|
||||||
|
|
||||||
if (check_im_version() > 0) {
|
|
||||||
$db->execute("INSERT INTO config(name, value) VALUES(:name, :value)", ["name" => 'thumb_engine', "value" => 'convert']);
|
|
||||||
}
|
|
||||||
$db->commit();
|
|
||||||
} catch (PDOException $e) {
|
|
||||||
handle_db_errors(true, "An error occurred while trying to insert data into the database.", $e->getMessage(), 5);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
handle_db_errors(false, "An unknown error occurred while trying to insert data into the database.", $e->getMessage(), 6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function build_dirs()
|
|
||||||
{
|
|
||||||
$data_exists = file_exists("data") || mkdir("data");
|
|
||||||
$data_writable = is_writable("data") || chmod("data", 0755);
|
|
||||||
|
|
||||||
if (!$data_exists || !$data_writable) {
|
|
||||||
print "
|
|
||||||
<div id='installer'>
|
|
||||||
<h1>Shimmie Installer</h1>
|
|
||||||
<h3>Directory Permissions Error:</h3>
|
|
||||||
<div class='container'>
|
|
||||||
<p>Shimmie needs to have a 'data' folder in its directory, writable by the PHP user.</p>
|
|
||||||
<p>If you see this error, if probably means the folder is owned by you, and it needs to be writable by the web server.</p>
|
|
||||||
<p>PHP reports that it is currently running as user: ".$_ENV["USER"]." (". $_SERVER["USER"] .")</p>
|
|
||||||
<p>Once you have created this folder and / or changed the ownership of the shimmie folder, hit 'refresh' to continue.</p>
|
|
||||||
<br/><br/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
";
|
|
||||||
exit(7);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function write_config()
|
|
||||||
{
|
|
||||||
$file_content = '<' . '?php' . "\n" .
|
|
||||||
"define('DATABASE_DSN', '".DATABASE_DSN."');\n" .
|
|
||||||
'?' . '>';
|
|
||||||
|
|
||||||
if (!file_exists("data/config")) {
|
|
||||||
mkdir("data/config", 0755, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file_put_contents("data/config/shimmie.conf.php", $file_content, LOCK_EX)) {
|
|
||||||
header("Location: index.php");
|
|
||||||
print <<<EOD
|
|
||||||
<div id="installer">
|
|
||||||
<h1>Shimmie Installer</h1>
|
|
||||||
<h3>Things are OK \o/</h3>
|
|
||||||
<div class="container">
|
|
||||||
<p>If you aren't redirected, <a href="index.php">click here to Continue</a>.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
EOD;
|
|
||||||
} else {
|
|
||||||
$h_file_content = htmlentities($file_content);
|
|
||||||
print <<<EOD
|
|
||||||
<div id="installer">
|
|
||||||
<h1>Shimmie Installer</h1>
|
|
||||||
<h3>File Permissions Error:</h3>
|
|
||||||
<div class="container">
|
|
||||||
The web server isn't allowed to write to the config file; please copy
|
|
||||||
the text below, save it as 'data/config/shimmie.conf.php', and upload it into the shimmie
|
|
||||||
folder manually. Make sure that when you save it, there is no whitespace
|
|
||||||
before the "<?php" or after the "?>"
|
|
||||||
|
|
||||||
<p><textarea cols="80" rows="2">$h_file_content</textarea>
|
|
||||||
|
|
||||||
<p>Once done, <a href="index.php">click here to Continue</a>.
|
|
||||||
<br/><br/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
EOD;
|
|
||||||
}
|
|
||||||
echo "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
function handle_db_errors(bool $isPDO, string $errorMessage1, string $errorMessage2, int $exitCode)
|
|
||||||
{
|
|
||||||
$errorMessage1Extra = ($isPDO ? "Please check and ensure that the database configuration options are all correct." : "Please check the server log files for more information.");
|
|
||||||
print <<<EOD
|
|
||||||
<div id="installer">
|
|
||||||
<h1>Shimmie Installer</h1>
|
|
||||||
<h3>Unknown Error:</h3>
|
|
||||||
<div class="container">
|
|
||||||
<p>{$errorMessage1}</p>
|
|
||||||
<p>{$errorMessage1Extra}</p>
|
|
||||||
<p>{$errorMessage2}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
EOD;
|
|
||||||
exit($exitCode);
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -21,6 +21,26 @@ class SCoreException extends RuntimeException
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class InstallerException extends RuntimeException
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
public $title;
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
public $body;
|
||||||
|
|
||||||
|
/** @var int */
|
||||||
|
public $code;
|
||||||
|
|
||||||
|
public function __construct(string $title, string $body, int $code)
|
||||||
|
{
|
||||||
|
parent::construct($title);
|
||||||
|
$this->title = $title;
|
||||||
|
$this->body = $body;
|
||||||
|
$this->code = $code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PermissionDeniedException
|
* Class PermissionDeniedException
|
||||||
*
|
*
|
||||||
|
|
187
core/util.php
187
core/util.php
|
@ -130,6 +130,36 @@ function get_memory_limit(): int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if PHP has the GD library installed
|
||||||
|
*/
|
||||||
|
function check_gd_version(): int
|
||||||
|
{
|
||||||
|
$gdversion = 0;
|
||||||
|
|
||||||
|
if (function_exists('gd_info')) {
|
||||||
|
$gd_info = gd_info();
|
||||||
|
if (substr_count($gd_info['GD Version'], '2.')) {
|
||||||
|
$gdversion = 2;
|
||||||
|
} elseif (substr_count($gd_info['GD Version'], '1.')) {
|
||||||
|
$gdversion = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $gdversion;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether ImageMagick's `convert` command
|
||||||
|
* is installed and working
|
||||||
|
*/
|
||||||
|
function check_im_version(): int
|
||||||
|
{
|
||||||
|
$convert_check = exec("convert");
|
||||||
|
|
||||||
|
return (empty($convert_check) ? 0 : 1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the currently active IP, masked to make it not change when the last
|
* Get the currently active IP, masked to make it not change when the last
|
||||||
* octet or two change, for use in session cookies and such
|
* octet or two change, for use in session cookies and such
|
||||||
|
@ -605,6 +635,163 @@ function _get_query(): string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
|
||||||
|
* Things used in the installer + unit tests *
|
||||||
|
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
|
function create_dirs()
|
||||||
|
{
|
||||||
|
$data_exists = file_exists("data") || mkdir("data");
|
||||||
|
$data_writable = is_writable("data") || chmod("data", 0755);
|
||||||
|
|
||||||
|
if (!$data_exists || !$data_writable) {
|
||||||
|
throw new InstallerException(
|
||||||
|
"Directory Permissions Error:",
|
||||||
|
"<p>Shimmie needs to have a 'data' folder in its directory, writable by the PHP user.</p>
|
||||||
|
<p>If you see this error, if probably means the folder is owned by you, and it needs to be writable by the web server.</p>
|
||||||
|
<p>PHP reports that it is currently running as user: ".$_ENV["USER"]." (". $_SERVER["USER"] .")</p>
|
||||||
|
<p>Once you have created this folder and / or changed the ownership of the shimmie folder, hit 'refresh' to continue.</p>",
|
||||||
|
7
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_tables(Database $db)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if ($db->count_tables() > 0) {
|
||||||
|
throw new InstallerException(
|
||||||
|
"Warning: The Database schema is not empty!",
|
||||||
|
"<p>Please ensure that the database you are installing Shimmie with is empty before continuing.</p>
|
||||||
|
<p>Once you have emptied the database of any tables, please hit 'refresh' to continue.</p>",
|
||||||
|
2
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$db->create_table("aliases", "
|
||||||
|
oldtag VARCHAR(128) NOT NULL,
|
||||||
|
newtag VARCHAR(128) NOT NULL,
|
||||||
|
PRIMARY KEY (oldtag)
|
||||||
|
");
|
||||||
|
$db->execute("CREATE INDEX aliases_newtag_idx ON aliases(newtag)", []);
|
||||||
|
|
||||||
|
$db->create_table("config", "
|
||||||
|
name VARCHAR(128) NOT NULL,
|
||||||
|
value TEXT,
|
||||||
|
PRIMARY KEY (name)
|
||||||
|
");
|
||||||
|
$db->create_table("users", "
|
||||||
|
id SCORE_AIPK,
|
||||||
|
name VARCHAR(32) UNIQUE NOT NULL,
|
||||||
|
pass VARCHAR(250),
|
||||||
|
joindate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
class VARCHAR(32) NOT NULL DEFAULT 'user',
|
||||||
|
email VARCHAR(128)
|
||||||
|
");
|
||||||
|
$db->execute("CREATE INDEX users_name_idx ON users(name)", []);
|
||||||
|
|
||||||
|
$db->execute("INSERT INTO users(name, pass, joindate, class) VALUES(:name, :pass, now(), :class)", ["name" => 'Anonymous', "pass" => null, "class" => 'anonymous']);
|
||||||
|
$db->execute("INSERT INTO config(name, value) VALUES(:name, :value)", ["name" => 'anon_id', "value" => $db->get_last_insert_id('users_id_seq')]);
|
||||||
|
|
||||||
|
if (check_im_version() > 0) {
|
||||||
|
$db->execute("INSERT INTO config(name, value) VALUES(:name, :value)", ["name" => 'thumb_engine', "value" => 'convert']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$db->create_table("images", "
|
||||||
|
id SCORE_AIPK,
|
||||||
|
owner_id INTEGER NOT NULL,
|
||||||
|
owner_ip SCORE_INET NOT NULL,
|
||||||
|
filename VARCHAR(64) NOT NULL,
|
||||||
|
filesize INTEGER NOT NULL,
|
||||||
|
hash CHAR(32) UNIQUE NOT NULL,
|
||||||
|
ext CHAR(4) NOT NULL,
|
||||||
|
source VARCHAR(255),
|
||||||
|
width INTEGER NOT NULL,
|
||||||
|
height INTEGER NOT NULL,
|
||||||
|
posted TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
locked SCORE_BOOL NOT NULL DEFAULT SCORE_BOOL_N,
|
||||||
|
FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE RESTRICT
|
||||||
|
");
|
||||||
|
$db->execute("CREATE INDEX images_owner_id_idx ON images(owner_id)", []);
|
||||||
|
$db->execute("CREATE INDEX images_width_idx ON images(width)", []);
|
||||||
|
$db->execute("CREATE INDEX images_height_idx ON images(height)", []);
|
||||||
|
$db->execute("CREATE INDEX images_hash_idx ON images(hash)", []);
|
||||||
|
|
||||||
|
$db->create_table("tags", "
|
||||||
|
id SCORE_AIPK,
|
||||||
|
tag VARCHAR(64) UNIQUE NOT NULL,
|
||||||
|
count INTEGER NOT NULL DEFAULT 0
|
||||||
|
");
|
||||||
|
$db->execute("CREATE INDEX tags_tag_idx ON tags(tag)", []);
|
||||||
|
|
||||||
|
$db->create_table("image_tags", "
|
||||||
|
image_id INTEGER NOT NULL,
|
||||||
|
tag_id INTEGER NOT NULL,
|
||||||
|
UNIQUE(image_id, tag_id),
|
||||||
|
FOREIGN KEY (image_id) REFERENCES images(id) ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
|
||||||
|
");
|
||||||
|
$db->execute("CREATE INDEX images_tags_image_id_idx ON image_tags(image_id)", []);
|
||||||
|
$db->execute("CREATE INDEX images_tags_tag_id_idx ON image_tags(tag_id)", []);
|
||||||
|
|
||||||
|
$db->execute("INSERT INTO config(name, value) VALUES('db_version', 11)");
|
||||||
|
$db->commit();
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
throw new InstallerException(
|
||||||
|
"PDO Error:",
|
||||||
|
"<p>An error occurred while trying to create the database tables necessary for Shimmie.</p>
|
||||||
|
<p>Please check and ensure that the database configuration options are all correct.</p>
|
||||||
|
<p>{$e->getMessage()}</p>",
|
||||||
|
3
|
||||||
|
);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
throw new InstallerException(
|
||||||
|
"Unknown Error:",
|
||||||
|
"<p>An unknown error occurred while trying to insert data into the database.</p>
|
||||||
|
<p>Please check the server log files for more information.</p>
|
||||||
|
<p>{$e->getMessage()}</p>",
|
||||||
|
4
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function write_config()
|
||||||
|
{
|
||||||
|
$file_content = "<" . "?php\ndefine('DATABASE_DSN', '".DATABASE_DSN."');\n";
|
||||||
|
|
||||||
|
if (!file_exists("data/config")) {
|
||||||
|
mkdir("data/config", 0755, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file_put_contents("data/config/shimmie.conf.php", $file_content, LOCK_EX)) {
|
||||||
|
header("Location: index.php");
|
||||||
|
print <<<EOD
|
||||||
|
<div id="installer">
|
||||||
|
<h1>Shimmie Installer</h1>
|
||||||
|
<h3>Things are OK \o/</h3>
|
||||||
|
<div class="container">
|
||||||
|
<p>If you aren't redirected, <a href="index.php">click here to Continue</a>.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
EOD;
|
||||||
|
} else {
|
||||||
|
$h_file_content = htmlentities($file_content);
|
||||||
|
throw new InstallerException(
|
||||||
|
"File Permissions Error:",
|
||||||
|
"The web server isn't allowed to write to the config file; please copy
|
||||||
|
the text below, save it as 'data/config/shimmie.conf.php', and upload it into the shimmie
|
||||||
|
folder manually. Make sure that when you save it, there is no whitespace
|
||||||
|
before the \"<?php\" or after the \"?>\"
|
||||||
|
|
||||||
|
<p><textarea cols='80' rows='2'>$h_file_content</textarea>
|
||||||
|
|
||||||
|
<p>Once done, <a href='index.php'>click here to Continue</a>.",
|
||||||
|
0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
|
||||||
* Code coverage *
|
* Code coverage *
|
||||||
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
|
@ -10,12 +10,13 @@ $_SERVER['QUERY_STRING'] = '/';
|
||||||
chdir(dirname(dirname(__FILE__)));
|
chdir(dirname(dirname(__FILE__)));
|
||||||
require_once "core/_bootstrap.php";
|
require_once "core/_bootstrap.php";
|
||||||
|
|
||||||
function create_user(string $name) {
|
function create_user(string $name)
|
||||||
if (is_null(User::by_name($name))) {
|
{
|
||||||
$userPage = new UserPage();
|
if (is_null(User::by_name($name))) {
|
||||||
$userPage->onUserCreation(new UserCreationEvent($name, $name, ""));
|
$userPage = new UserPage();
|
||||||
assert(!is_null(User::by_name($name)), "Creation of user $name failed");
|
$userPage->onUserCreation(new UserCreationEvent($name, $name, ""));
|
||||||
}
|
assert(!is_null(User::by_name($name)), "Creation of user $name failed");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
create_user("demo");
|
create_user("demo");
|
||||||
|
|
Reference in a new issue