diff options
Diffstat (limited to 'installer/web.php')
| -rw-r--r-- | installer/web.php | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/installer/web.php b/installer/web.php new file mode 100644 index 0000000..5fa8541 --- /dev/null +++ b/installer/web.php @@ -0,0 +1,94 @@ +<?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. + */ +if (installer::already_installed()) { + $content = render("success.html.php"); +} else { + switch (@$_GET["step"]) { + default: + case "welcome": + $errors = installer::check_environment(); + if ($errors) { + $content = render("environment_errors.html.php", array("errors" => $errors)); + } else { + $content = render("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" => $_POST["prefix"], + "type" => function_exists("mysqli_set_charset") ? "mysqli" : "mysql"); + list ($config["host"], $config["port"]) = explode(":", $config["host"] . ":"); + foreach ($config as $k => $v) { + if ($k == "password") { + $config[$k] = str_replace(array("'", "\\"), array("\\'", "\\\\"), $v); + } else { + $config[$k] = strtr($v, "'`\\", "___"); + } + } + + if (!installer::connect($config)) { + $content = render("invalid_db_info.html.php"); + } else if (!installer::verify_mysql_version($config)) { + $content = render("invalid_db_version.html.php"); + } else if (!installer::select_db($config)) { + $content = render("missing_db.html.php"); + } else if (is_string($count = installer::db_empty($config)) || !$count) { + if (is_string($count)) { + $content = oops($count); + } else { + $content = render("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($config)) { + $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 { + try { + list ($user, $password) = installer::create_admin($config); + installer::create_admin_session($config); + $content = render("success.html.php", array("user" => $user, "password" => $password)); + + installer::create_private_key($config); + } catch (Exception $e) { + $content = oops($e->getMessage()); + } + } + break; + } +} + +include("views/install.html.php"); + +function render($view, $args=array()) { + ob_start(); + extract($args); + include(DOCROOT . "installer/views/" . $view); + return ob_get_clean(); +} + +function oops($error) { + return render("oops.html.php", array("error" => $error)); +} |
