From b35e8cbe9e9776d86be034365c1033b61497bbb0 Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 23 Sep 2008 17:27:09 +0000 Subject: The database schema will now automatically update itself on upgrade. git-svn-id: https://code.elgg.org/elgg/trunk@2107 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/database.php | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) (limited to 'engine/lib/database.php') diff --git a/engine/lib/database.php b/engine/lib/database.php index a071a4f6f..f1b4a5871 100644 --- a/engine/lib/database.php +++ b/engine/lib/database.php @@ -400,7 +400,11 @@ $statement = trim($statement); $statement = str_replace("prefix_",$CONFIG->dbprefix,$statement); if (!empty($statement)) { - $result = update_data($statement); + try { + $result = update_data($statement); + } catch (DatabaseException $e) { + $errors[] = $e->getMessage(); + } } } if (!empty($errors)) { @@ -414,6 +418,47 @@ throw new DatabaseException(sprintf(elgg_echo('DatabaseException:ScriptNotFound'), $scriptlocation)); } + } + + function db_upgrade($version) { + + global $CONFIG; + + // Elgg and its database must be installed to upgrade it! + if (!is_db_installed() || !is_installed()) return false; + + $version = (int) $version; + + if ($handle = opendir($CONFIG->path . 'engine/schema/upgrades/')) { + + $sqlupgrades = array(); + + while ($sqlfile = readdir($handle)) { + + if (!is_dir($CONFIG->path . 'engine/schema/upgrades/' . $sqlfile)) { + if (preg_match('/([0-9]*)\.sql/',$sqlfile,$matches)) { + $sql_version = (int) $matches[1]; + if ($sql_version > $version) { + $sqlupgrades[] = $sqlfile; + } + } + } + + } + + asort($sqlupgrades); + if (sizeof($sqlupgrades) > 0) { + foreach($sqlupgrades as $sqlfile) { + try { + run_sql_script($CONFIG->path . 'engine/schema/upgrades/' . $sqlfile); + } catch (DatabaseException $e) { + error_log($e->getmessage()); + } + } + } + + } + } /** -- cgit v1.2.3