diff options
author | Robin Appelman <icewind1991@gmail.com> | 2011-11-13 16:16:21 +0100 |
---|---|---|
committer | Robin Appelman <icewind1991@gmail.com> | 2012-01-08 01:57:53 +0100 |
commit | ecf6f2ca2f74abbfdc72788c502ef5a015dc890a (patch) | |
tree | a2df9523dc6b1c1c115a6b5cdcb9d5300d2ca4ce /lib | |
parent | 9a4e37483b9c6d7c6e287a9c95a408fc0249e8f9 (diff) | |
download | nextcloud-server-ecf6f2ca2f74abbfdc72788c502ef5a015dc890a.tar.gz nextcloud-server-ecf6f2ca2f74abbfdc72788c502ef5a015dc890a.zip |
automatically upgrade the main database on version number increase (doesnt work with sqlite for now)
Diffstat (limited to 'lib')
-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 0954e3615bd..803c0118e20 100644 --- a/lib/base.php +++ b/lib/base.php @@ -152,6 +152,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(); @@ -230,8 +236,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; @@ -247,6 +251,8 @@ if(!function_exists('get_temp_dir')) { } } +OC::init(); + require_once('fakedirstream.php'); diff --git a/lib/db.php b/lib/db.php index c7085a975ef..05ed8398b7b 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); |