diff options
author | Bharat Mediratta <bharat@menalto.com> | 2009-01-20 00:54:02 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2009-01-20 00:54:02 +0000 |
commit | 681197a265f1dd3873780fdcf0b5f1e8fa0150ab (patch) | |
tree | fe8aafe29cf5f3d6d5a285c330147c9e3f3668c0 /installer/web.php | |
parent | d51955c8efa78d7f0a0ca8c138c2eebaf5ecb975 (diff) |
Web based installer. It's still got some rough edges, but you can now
do a complete CLI or web based install.
Diffstat (limited to 'installer/web.php')
-rw-r--r-- | installer/web.php | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/installer/web.php b/installer/web.php new file mode 100644 index 00000000..ddabcd19 --- /dev/null +++ b/installer/web.php @@ -0,0 +1,105 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * 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. + */ +if (installer::already_installed()) { + $content = render("pages/success.html.php"); +} else { + switch ($_GET["step"]) { + default: + case "welcome": + $errors = check_environment(); + if ($errors) { + $content = render("pages/environment_errors.html.php", array("errors" => $errors)); + } else { + $content = render("pages/get_db_info.html.php"); + } + break; + + case "save_db_info": + $config = array("host" => $_POST["dbhost"], + "user" => $_POST["dbuser"], + "password" => $_POST["dbpass"], + "dbname" => $_POST["dbname"], + "prefix" => "", + "type" => function_exists("mysqli_init") ? "mysqli" : "mysql"); + + if (!installer::connect($config)) { + $content = render("pages/invalid_db_info.html.php"); + } else if (!installer::select_db($config)) { + $content = render("pages/missing_db.html.php"); + } else if (!installer::db_empty($config)) { + $content = render("pages/db_not_empty.html.php"); + } else if (!installer::unpack_var()) { + $content = oops("Unable to create files inside the <code>var</code> directory"); + } else if (!installer::unpack_sql()) { + $content = oops("Failed to create tables in your database:" . mysql_error()); + } else if (!installer::create_database_config($config)) { + $content = oops("Couldn't create var/database.php"); + } else { + list ($user, $password) = installer::create_admin($config); + $content = render("pages/success.html.php", array("user" => $user, "password" => $password)); + } + break; + } +} + +include("install.html.php"); + +function render($page, $args=array()) { + ob_start(); + extract($args); + include($page); + return ob_get_clean(); +} + +function oops($error) { + return render("pages/oops.html.php", array("error" => $error)); +} + +function check_environment() { + if (version_compare(PHP_VERSION, "5.2", "<")) { + $errors[] = "Gallery 3 requires PHP 5.2 or newer, current version: " . PHP_VERSION; + } + + if (!function_exists("mysql_query") && !function_exists("mysqli_init")) { + $errors[] = "Gallery 3 requires a MySQL database, but PHP doesn't have either the the <a href=\"http://php.net/mysql\">MySQL</a> or the <a href=\"http://php.net/mysqli\">MySQLi</a> extension."; + } + + if (!@preg_match("/^.$/u", utf8_encode("\xF1"))) { + $errors[] = "PHP is missing <a href=\"http://php.net/pcre\">Perl-Compatible Regular Expression</a> support."; + } + + if (!(class_exists("ReflectionClass"))) { + $errors[] = "PHP is missing <a href=\"http://php.net/reflection\">reflection</a> support"; + } + + if (!(function_exists("filter_list"))) { + $errors[] = "PHP is missing the <a href=\"http://php.net/filter\">filter extension</a>"; + } + + if (!(extension_loaded("iconv"))) { + $errors[] = "PHP is missing the <a href=\"http://php.net/iconv\">iconv extension</a>"; + } + + if (extension_loaded("mbstring") && (ini_get("mbstring.func_overload") & MB_OVERLOAD_STRING)) { + $errors[] = "The <a href=\"http://php.net/mbstring\">mbstring extension</a> is overloading PHP's native string functions. Please disable it."; + } + + return $errors; +} |