]> source.dussan.org Git - nextcloud-server.git/commitdiff
automatically upgrade the main database on version number increase (doesnt work with...
authorRobin Appelman <icewind1991@gmail.com>
Sun, 13 Nov 2011 15:16:21 +0000 (16:16 +0100)
committerRobin Appelman <icewind1991@gmail.com>
Sun, 8 Jan 2012 00:57:53 +0000 (01:57 +0100)
lib/base.php
lib/db.php

index 0954e3615bdb03b3e8cfb1de3b6570bc5660a225..803c0118e20f882345696e5617b82c075e2b7a98 100644 (file)
@@ -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');
 
 
index c7085a975ef663ab666ef5259221ee275b07400b..05ed8398b7b901ff23459fce56ecd9d42c9808c4 100644 (file)
@@ -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);