From e0c5ffc792657f5fb3ff1f0774cfcd18befb8175 Mon Sep 17 00:00:00 2001 From: ben Date: Thu, 14 Feb 2008 18:13:29 +0000 Subject: A simple beginning to an install script git-svn-id: https://code.elgg.org/elgg/trunk@34 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/database.php | 81 ++++++++++++++++++++++++++++++++++++++++++++++--- engine/lib/elgglib.php | 6 +++- install.php | 38 +++++++++++++++++++++++ 3 files changed, 119 insertions(+), 6 deletions(-) create mode 100644 install.php diff --git a/engine/lib/database.php b/engine/lib/database.php index aa7deb97a..66383afe3 100644 --- a/engine/lib/database.php +++ b/engine/lib/database.php @@ -221,17 +221,88 @@ } - /** - * Returns the number of rows returned by the last select statement, without the need to re-execute the query. - * - * @return int The number of rows returned by the last statement - */ + /** + * Returns the number of rows returned by the last select statement, without the need to re-execute the query. + * + * @return int The number of rows returned by the last statement + */ function count_last_select() { $row = get_data_row("SELECT found_rows() as count"); if ($row) return $row->count; return 0; } + + /** + * Get the tables currently installed in the Elgg database + * + * @return array List of tables + */ + function get_db_tables() { + $result = get_data("show tables"); + $result = (array) $result; + + $tables = array(); + + if (is_array($result)) { + foreach($result as $row) { + foreach($row as $element) { + $tables[] = $element; + } + } + } + + return $tables; + } + + /** + * Get the last database error for a particular database link + * + * @param database link $dblink + * @return string Database error message + */ + function get_db_error($dblink) { + return mysql_error($dblink); + } + + /** + * Runs a full database script from disk + * + * @param string $scriptlocation The full apth to the script + */ + function run_sql_script($scriptlocation) { + + if ($script = file_get_contents($scriptlocation)) { + + $errors = array(); + + $script = preg_replace('/\-\-.*\n/', '', $script); + $sql_statements = preg_split('/;[\n\r]+/', $script); + foreach($sql_statements as $statement) { + $statement = trim($statement); + if (!empty($statement)) { + $result = update_data($statement); + if ($result == false) { + $error = mysql_error(); + $error = trim($error); + if (!empty($error)) { + $errors[] = $error; + } + } + } + } + if (!empty($errors)) { + $errortxt = ""; + foreach($errors as $error) + $errortxt .= " {$error};"; + throw new DatabaseException("There were a number of issues: " . $errortxt); + } + + } else { + throw new DatabaseException("Elgg couldn't find the requested database script at {$scriptlocation}."); + } + + } // Stuff for initialisation diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 53771f896..b68258470 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -24,10 +24,14 @@ * @return nothing|false */ - function forward($location) { + function forward($location = "") { if (!headers_sent()) { $_SESSION['messages'] = system_messages(); + if (substr_count($location, 'http://') == 0) { + global $CONFIG; + $location = $CONFIG->url . $location; + } header("Location: {$location}"); exit; } diff --git a/install.php b/install.php new file mode 100644 index 000000000..5e253eb1b --- /dev/null +++ b/install.php @@ -0,0 +1,38 @@ + \ No newline at end of file -- cgit v1.2.3