diff options
author | ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-02-14 18:13:29 +0000 |
---|---|---|
committer | ben <ben@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2008-02-14 18:13:29 +0000 |
commit | e0c5ffc792657f5fb3ff1f0774cfcd18befb8175 (patch) | |
tree | c4ea9ed5659765e374188eedbe95f452fd3ce83f /engine | |
parent | a1d7078ddce6d98615019b2e32959c01a174f893 (diff) | |
download | elgg-e0c5ffc792657f5fb3ff1f0774cfcd18befb8175.tar.gz elgg-e0c5ffc792657f5fb3ff1f0774cfcd18befb8175.tar.bz2 |
A simple beginning to an install script
git-svn-id: https://code.elgg.org/elgg/trunk@34 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine')
-rw-r--r-- | engine/lib/database.php | 81 | ||||
-rw-r--r-- | engine/lib/elgglib.php | 6 |
2 files changed, 81 insertions, 6 deletions
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;
}
|