diff options
author | Robin Appelman <icewind1991@gmail.com> | 2011-11-13 16:16:21 +0100 |
---|---|---|
committer | Robin Appelman <icewind1991@gmail.com> | 2011-11-13 16:16:21 +0100 |
commit | b2f1429b75085eaa3dc2be37df43283b47cd1e39 (patch) | |
tree | 2d3ee5c8117d84d459993122e38d5713e8bbde49 | |
parent | aa7c5a971ce9431c0a51e1110046f211fa446c11 (diff) | |
download | nextcloud-server-b2f1429b75085eaa3dc2be37df43283b47cd1e39.tar.gz nextcloud-server-b2f1429b75085eaa3dc2be37df43283b47cd1e39.zip |
automatically upgrade the main database on version number increase (doesnt work with sqlite for now)
-rw-r--r-- | lib/base.php | 10 | ||||
-rw-r--r-- | lib/db.php | 9 |
2 files changed, 12 insertions, 7 deletions
diff --git a/lib/base.php b/lib/base.php index c52b4493e01..554036164e6 100644 --- a/lib/base.php +++ b/lib/base.php @@ -119,6 +119,12 @@ class OC{ } } + $installedVersion=OC_Config::getValue('version','0.0.0'); + $currentVersion=implode('.',OC_Util::getVersion()); + if (version_compare($currentVersion, $installedVersion, '>')) { + OC_DB::updateDbFromStructure('../db_structure.xml'); + } + ini_set('session.cookie_httponly','1;'); session_start(); @@ -187,8 +193,6 @@ if( !isset( $RUNTIME_NOAPPS )){ $RUNTIME_NOAPPS = false; } -OC::init(); - if(!function_exists('get_temp_dir')) { function get_temp_dir() { if( $temp=ini_get('upload_tmp_dir') ) return $temp; @@ -204,6 +208,8 @@ if(!function_exists('get_temp_dir')) { } } +OC::init(); + require_once('fakedirstream.php'); // FROM search.php diff --git a/lib/db.php b/lib/db.php index c059f5ab336..0fee5e03816 100644 --- a/lib/db.php +++ b/lib/db.php @@ -338,7 +338,6 @@ class OC_DB { * @param $file file to read structure from */ public static function updateDbFromStructure($file){ - $CONFIG_DBNAME = OC_Config::getValue( "dbname", "owncloud" ); $CONFIG_DBTABLEPREFIX = OC_Config::getValue( "dbtableprefix", "oc_" ); $CONFIG_DBTYPE = OC_Config::getValue( "dbtype", "sqlite" ); @@ -347,17 +346,17 @@ class OC_DB { // read file $content = file_get_contents( $file ); + $previousSchema = self::$schema->getDefinitionFromDatabase(); + // Make changes and save them to a temporary file $file2 = tempnam( get_temp_dir(), 'oc_db_scheme_' ); - $content = str_replace( '*dbname*', $CONFIG_DBNAME, $content ); + $content = str_replace( '*dbname*', $previousSchema['name'], $content ); $content = str_replace( '*dbprefix*', $CONFIG_DBTABLEPREFIX, $content ); if( $CONFIG_DBTYPE == 'pgsql' ){ //mysql support it too but sqlite doesn't $content = str_replace( '<default>0000-00-00 00:00:00</default>', '<default>CURRENT_TIMESTAMP</default>', $content ); } file_put_contents( $file2, $content ); - $previousSchema = self::$schema->getDefinitionFromDatabase(); - $op = $schema->updateDatabase($file2, $previousSchema, array(), false); - + $op = self::$schema->updateDatabase($file2, $previousSchema, array(), false); if (PEAR::isError($op)) { $error = $op->getMessage(); OC_Log::write('core','Failed to update database structure ('.$error.')',OC_Log::FATAL); |