diff options
author | marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-06-17 16:49:21 +0000 |
---|---|---|
committer | marcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-06-17 16:49:21 +0000 |
commit | 0f2e67985d80ad91cd000e33d6e8a7751121d370 (patch) | |
tree | 8833d61e09436b2d409f5238a8e65741dd720636 /engine/lib | |
parent | d203a2e6f4bb69b9b33e157c130eab6408ebce89 (diff) | |
download | elgg-0f2e67985d80ad91cd000e33d6e8a7751121d370.tar.gz elgg-0f2e67985d80ad91cd000e33d6e8a7751121d370.tar.bz2 |
CLOSED - #34: Install process must be completely graphical
http://trac.elgg.org/elgg/ticket/34
git-svn-id: https://code.elgg.org/elgg/trunk@951 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine/lib')
-rw-r--r-- | engine/lib/elgglib.php | 25 | ||||
-rw-r--r-- | engine/lib/input.php | 9 | ||||
-rw-r--r-- | engine/lib/install.php | 23 |
3 files changed, 49 insertions, 8 deletions
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 1c4d02138..af48a2200 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -514,14 +514,29 @@ $sanitised = true;
- if (!file_exists(dirname(dirname(__FILE__)) . "/settings.php")) {
- register_error(elgg_view("messages/sanitisation/settings"));
- $sanitised = false;
+ if (!file_exists(dirname(dirname(__FILE__)) . "/settings.php")) { + // See if we are being asked to save the file + $save_vars = get_input('db_install_vars'); + $result = ""; + if ($save_vars) + { + $result = create_settings($save_vars, dirname(dirname(__FILE__)) . "/settings.example.php"); + + if (file_put_contents(dirname(dirname(__FILE__)) . "/settings.php", $result)) + $result = ""; // blank result to stop it being displayed in textarea + + } + + // Recheck to see if the file is still missing + if (!file_exists(dirname(dirname(__FILE__)) . "/settings.php")) {
+ register_error(elgg_view("messages/sanitisation/settings", array('settings.php' => $result)));
+ $sanitised = false; + }
}
if (!file_exists(dirname(dirname(dirname(__FILE__))) . "/.htaccess")) {
if (!@copy(dirname(dirname(dirname(__FILE__))) . "/htaccess_dist", dirname(dirname(dirname(__FILE__))) . "/.htaccess")) {
- register_error(elgg_view("messages/sanitisation/htaccess"));
+ register_error(elgg_view("messages/sanitisation/htaccess", array('.htaccess' => file_get_contents(dirname(dirname(dirname(__FILE__))) . "/htaccess_dist"))));
$sanitised = false;
}
}
@@ -899,7 +914,7 @@ error_log("*** FATAL EXCEPTION *** : " . $exception);
$body = elgg_view("messages/exceptions/exception",array('object' => $exception));
- echo page_draw("We've encountered a problem.", $body);
+ echo page_draw(elgg_echo('exception:title'), $body);
}
diff --git a/engine/lib/input.php b/engine/lib/input.php index 9244c16f3..f42aa7a25 100644 --- a/engine/lib/input.php +++ b/engine/lib/input.php @@ -20,9 +20,12 @@ function get_input($variable, $default = "")
{
- if (isset($_REQUEST[$variable])) {
- $value = $_REQUEST[$variable];
- return trim($_REQUEST[$variable]);
+ if (isset($_REQUEST[$variable])) { + + if (is_array($_REQUEST[$variable])) + return $_REQUEST[$variable]; + else + return trim($_REQUEST[$variable]);
}
global $CONFIG;
diff --git a/engine/lib/install.php b/engine/lib/install.php index 16f000ee7..b348ab9b2 100644 --- a/engine/lib/install.php +++ b/engine/lib/install.php @@ -38,6 +38,29 @@ return datalist_get('installed');
}
+ + /** + * Copy and create a new settings.php from settings.example.php, substituting the variables in + * $vars where appropriate. + * + * $vars is an associate array of $key => $value, where $key is the variable text you wish to substitute (eg + * CONFIG_DBNAME will replace {{CONFIG_DBNAME}} in the settings file. + * + * @param array $vars The array of vars + * @param string $in_file Optional input file (if not settings.example.php) + * @return string The file containing substitutions. + */ + function create_settings(array $vars, $in_file="engine/settings.example.php") + { + $file = file_get_contents($in_file); + + if (!$file) return false; + + foreach ($vars as $k => $v) + $file = str_replace("{{".$k."}}", $v, $file); + + return $file; + } /**
* Initialisation for installation functions
|