aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <icewind1991@gmail.com>2011-11-13 16:16:21 +0100
committerRobin Appelman <icewind1991@gmail.com>2011-11-13 16:16:21 +0100
commitb2f1429b75085eaa3dc2be37df43283b47cd1e39 (patch)
tree2d3ee5c8117d84d459993122e38d5713e8bbde49
parentaa7c5a971ce9431c0a51e1110046f211fa446c11 (diff)
downloadnextcloud-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.php10
-rw-r--r--lib/db.php9
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);