Merge branch 'master' of gitorious.org:owncloud/owncloud
This commit is contained in:
commit
410c6bba47
37
lib/db.php
37
lib/db.php
|
@ -263,7 +263,7 @@ class OC_DB {
|
|||
*
|
||||
* TODO: write more documentation
|
||||
*/
|
||||
public static function getDbStructure( $file ){
|
||||
public static function getDbStructure( $file ,$mode=MDB2_SCHEMA_DUMP_STRUCTURE){
|
||||
self::connectScheme();
|
||||
|
||||
// write the scheme
|
||||
|
@ -299,7 +299,7 @@ class OC_DB {
|
|||
$file2 = tempnam( get_temp_dir(), 'oc_db_scheme_' );
|
||||
$content = str_replace( '*dbname*', $CONFIG_DBNAME, $content );
|
||||
$content = str_replace( '*dbprefix*', $CONFIG_DBTABLEPREFIX, $content );
|
||||
if( $CONFIG_DBTYPE == 'pgsql' ){ //mysql support it too but sqlite don't
|
||||
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 );
|
||||
|
@ -327,6 +327,39 @@ class OC_DB {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief update the database scheme
|
||||
* @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" );
|
||||
|
||||
self::connectScheme();
|
||||
|
||||
// read file
|
||||
$content = file_get_contents( $file );
|
||||
|
||||
// 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( '*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);
|
||||
|
||||
if (PEAR::isError($op)) {
|
||||
$error = $op->getMessage();
|
||||
OC_Log::write('core','Failed to update database structure ('.$error.')',OC_Log::FATAL);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief connects to a MDB2 database scheme
|
||||
* @returns true/false
|
||||
|
|
Loading…
Reference in New Issue