summaryrefslogtreecommitdiff
path: root/installer/cli.php
diff options
context:
space:
mode:
Diffstat (limited to 'installer/cli.php')
-rw-r--r--installer/cli.php121
1 files changed, 121 insertions, 0 deletions
diff --git a/installer/cli.php b/installer/cli.php
new file mode 100644
index 0000000..b31405f
--- /dev/null
+++ b/installer/cli.php
@@ -0,0 +1,121 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2013 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+/**
+ * Command line parameters:
+ * -h Database host (default: localhost)
+ * -u Database user (default: root)
+ * -p Database user password (default: )
+ * -d Database name (default: gallery3)
+ * -x Table prefix (default: )
+ */
+if (installer::already_installed()) {
+ print "Gallery 3 is already installed.\n";
+ return;
+}
+
+$errors = installer::check_environment();
+if ($errors) {
+ oops(implode($errors, "\n"));
+}
+
+$config = parse_cli_params();
+if (!installer::connect($config)) {
+ oops("Unable to connect to the database.\n" . mysql_error() . "\n");
+} else if (!installer::select_db($config)) {
+ oops("Database {$config['dbname']} doesn't exist and can't be created. " .
+ "Please create the database by hand.");
+} else if (is_string($count = installer::db_empty($config)) || !$count) {
+ if (is_string($count)) {
+ oops($count);
+ } else {
+ oops("Database {$config['dbname']} already has Gallery 3 tables in it. \n" .
+ " Please remove the Gallery 3 tables, change your prefix,\n" .
+ " or specify an empty database.\n");
+ }
+} else if (!installer::unpack_var()) {
+ oops("Unable to create files inside the 'var' directory");
+} else if (!installer::unpack_sql($config)) {
+ oops("Failed to create database tables\n" . mysql_error());
+} else if (!installer::create_database_config($config)) {
+ oops("Couldn't create var/database.php");
+} else {
+ system("chmod -R 777 " . VARPATH);
+ try {
+ list ($user, $password) = installer::create_admin($config);
+ print "Your Gallery has been successfully installed!\n";
+ print "We've created an account for you to use:\n";
+ print " username: $user\n";
+ print " password: $password\n";
+ print "\n";
+
+ installer::create_private_key($config);
+ exit(0);
+ } catch (Exception $e) {
+ oops($e->getMessage());
+ }
+}
+
+function oops($message) {
+ print "Oops! Something went wrong during the installation:\n\n";
+
+ print "==> " . $message;
+ print "\n";
+ print "For help you can try:\n";
+ print " * The Gallery 3 FAQ - http://codex.galleryproject.org/Gallery3:FAQ\n";
+ print " * The Gallery Forums - http://galleryproject.org/forum\n";
+ print "\n\n** INSTALLATION FAILED **\n";
+ exit(1);
+}
+
+function parse_cli_params() {
+ $config = array("host" => "localhost",
+ "user" => "root",
+ "password" => "",
+ "dbname" => "gallery3",
+ "prefix" => "",
+ "g3_password" => "",
+ "type" => function_exists("mysqli_set_charset") ? "mysqli" : "mysql");
+
+ $argv = $_SERVER["argv"];
+ for ($i = 1; $i < count($argv); $i++) {
+ switch (strtolower($argv[$i])) {
+ case "-d":
+ $config["dbname"] = $argv[++$i];
+ break;
+ case "-h":
+ list ($config["host"], $config["port"]) = explode(":", $argv[++$i]);
+ break;
+ case "-u":
+ $config["user"] = $argv[++$i];
+ break;
+ case "-p":
+ $config["password"] = $argv[++$i];
+ break;
+ case "-x":
+ $config["prefix"] = $argv[++$i];
+ break;
+ case "-g3p":
+ $config["g3_password"] = $argv[++$i];
+ break;
+ }
+ }
+
+ return $config;
+}