summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-01-10 20:47:38 +0000
committerTim Almdal <tnalmdal@shaw.ca>2009-01-10 20:47:38 +0000
commit4c330e5a99567e7ce44353a9bba111c915752f1e (patch)
treed4bf0c07091d22e2dd2cdd9b6e6c302b5dd7c048
parente45bbf57e88b06bf9783ffc47a952a3dee5052ec (diff)
Continuing baby steps to a batch installer. At this point you can run the installer and it will parse the command line arguments.
currently the following arguments are accepted -h(database host) -u(database user) -p(database password) -d(database name) -t(table prefex) or -f(a response file). The order of processing, defaults are set. if the response file is provided, the contained values are merged and finally any command line parameters are merged.
-rw-r--r--index.php6
-rw-r--r--installer/helpers/installer.php (renamed from installer/helpers/system_check.php)54
-rw-r--r--installer/install.php69
3 files changed, 124 insertions, 5 deletions
diff --git a/index.php b/index.php
index b1f9eccb..ac285645 100644
--- a/index.php
+++ b/index.php
@@ -46,9 +46,9 @@ define('THEMEPATH', strtr(realpath('themes') . '/', DIRECTORY_SEPARATOR, '/'));
define('SYSPATH', strtr(realpath('kohana') . '/', DIRECTORY_SEPARATOR, '/'));
if (!file_exists('var')) {
- include DOCROOT . "installer/helpers/system_check.php";
- if (system_check::failed()) {
- system_check::display_requirements();
+ include DOCROOT . "installer/helpers/installer.php";
+ if (installer::failed()) {
+ installer::display_requirements();
die;
}
}
diff --git a/installer/helpers/system_check.php b/installer/helpers/installer.php
index b0bd7e12..2c7e39ff 100644
--- a/installer/helpers/system_check.php
+++ b/installer/helpers/installer.php
@@ -17,9 +17,10 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class system_check {
+class installer {
private static $messages = array();
-
+ private static $config = array();
+
public function failed() {
$failed = false;
if (version_compare(PHP_VERSION, "5.2", "<")) {
@@ -154,6 +155,55 @@ class system_check {
}
}
+/* -h Database host (default: localhost)
+ * -u Database user (default: root)
+ * -p Database user password (default: )
+ * -d Database name (default: gallery3)
+ * -t Table prefix (default: )
+ * -f Response file (default: not used)
+ * The response file is a php file that contains the following syntax;
+ * $config[key] = value;
+ * Where key is one of "host", "user", "password", "dbname", "prefix". Values specified
+ * on the command line will override values contained in this file
+ */
+ public function parse_cli_parms($argv) {
+ for ($i=0; $i < count($argv); $i++) {
+ switch (strtolower($argv[$i])) {
+ case "-d":
+ $arguments["dbname"] = $argv[++$i];
+ break;
+ case "-h":
+ $arguments["host"] = $argv[++$i];
+ break;
+ case "-u":
+ $arguments["user"] = $argv[++$i];
+ break;
+ case "-p":
+ $arguments["password"] = $argv[++$i];
+ break;
+ case "-t":
+ $arguments["prefix"] = $argv[++$i];
+ break;
+ case "-f":
+ $arguments["file"] = $argv[++$i];
+ break;
+ }
+ }
+
+ $config = array("host" => "localhost", "user" => "root", "password" => "",
+ "dbname" => "gallery3", "prefix" => "");
+
+ if (!empty($arguments["file"])) {
+ if (file_exists($arguments["file"])) {
+ include $arguments["file"];
+ }
+ unset($arguments["file"]);
+ }
+ self::$config = array_merge($config, $arguments);
+
+ var_dump(self::$config);
+ }
+
private static function _render($view) {
if ($view == '')
return;
diff --git a/installer/install.php b/installer/install.php
new file mode 100644
index 00000000..edb571a5
--- /dev/null
+++ b/installer/install.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2008 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.
+ */
+
+/**
+ * Batch Install program this is to only be run from the command line. The web interface uses
+ * a different approach to invoking the installer
+ * Command line parameters:
+ * -h Database host (default: localhost)
+ * -u Database user (default: root)
+ * -p Database user password (default: )
+ * -d Database name (default: gallery3)
+ * -t Table prefix (default: )
+ * -f Response file (default: not used)
+ * The response file is a php file that contains the following syntax;
+ * $config[key] = value;
+ * Where key is one of "host", "user", "password", "dbname", "prefix". Values specified
+ * on the command line will override values contained in this file
+ */
+
+if (PHP_SAPI != 'cli') {
+ $redirect = str_replace("install.php", "index.php", $_SERVER["REQUEST_URI"]);
+
+ header("Location: $redirect");
+ return;
+}
+
+if (file_exists('var')) {
+ dir("Gallery3 is already installed... exiting");
+}
+
+array_shift($argv); // remove the script name from the arguments
+
+define("DOCROOT", dirname(dirname(__FILE__)));
+chdir(DOCROOT);
+define('APPPATH', strtr(realpath('core') . '/', DIRECTORY_SEPARATOR, '/'));
+define('MODPATH', strtr(realpath('modules') . '/', DIRECTORY_SEPARATOR, '/'));
+define('THEMEPATH', strtr(realpath('themes') . '/', DIRECTORY_SEPARATOR, '/'));
+define('SYSPATH', strtr(realpath('kohana') . '/', DIRECTORY_SEPARATOR, '/'));
+define('EXT', ".php");
+
+include DOCROOT . "/installer/helpers/installer.php";
+
+// @todo Log the results of failed call
+if (installer::failed()) {
+ installer::display_requirements();
+ die;
+}
+installer::display_requirements();
+
+$install_config = installer::parse_cli_parms($argv);
+
+