diff options
Diffstat (limited to 'lib/private/Setup/Sqlite.php')
-rw-r--r-- | lib/private/Setup/Sqlite.php | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/lib/private/Setup/Sqlite.php b/lib/private/Setup/Sqlite.php index d95e70c8b0c..0debb3464ac 100644 --- a/lib/private/Setup/Sqlite.php +++ b/lib/private/Setup/Sqlite.php @@ -20,8 +20,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ + namespace OC\Setup; +use OC\DB\ConnectionFactory; + class Sqlite extends AbstractDatabase { public $dbprettyname = 'Sqlite'; @@ -30,16 +33,43 @@ class Sqlite extends AbstractDatabase { } public function initialize($config) { + /* + * Web: When using web based installer its not possible to set dbname + * or dbtableprefix. Defaults used from ConnectionFactory and dbtype = 'sqlite' + * is written to config.php. + * + * Cli: When --database-name or --database-table-prefix empty or default + * dbtype = 'sqlite' is written to config.php. If you choose a value different + * from default these values are written to config.php. This is required because + * in connection factory configuration is obtained from config.php. + */ + + $this->dbName = empty($config['dbname']) + ? ConnectionFactory::DEFAULT_DBNAME + : $config['dbname']; + + $this->tablePrefix = empty($config['dbtableprefix']) + ? ConnectionFactory::DEFAULT_DBTABLEPREFIX + : $config['dbtableprefix']; + + if ($this->dbName !== ConnectionFactory::DEFAULT_DBNAME) { + $this->config->setValue('dbname', $this->dbName); + } + + if ($this->tablePrefix !== ConnectionFactory::DEFAULT_DBTABLEPREFIX) { + $this->config->setValue('dbtableprefix', $this->tablePrefix); + } } public function setupDatabase($username) { - $datadir = $this->config->getValue('datadirectory', \OC::$SERVERROOT . '/data'); + $datadir = $this->config->getValue( + 'datadirectory', + \OC::$SERVERROOT . '/data' + ); - //delete the old sqlite database first, might cause infinte loops otherwise - if(file_exists("$datadir/owncloud.db")) { - unlink("$datadir/owncloud.db"); + $sqliteFile = $datadir . '/' . $this->dbName . 'db'; + if (file_exists($sqliteFile)) { + unlink($sqliteFile); } - //in case of sqlite, we can always fill the database - error_log("creating sqlite db"); } } |