diff --git a/src/includes/version.php b/src/includes/version.php index e35581c..798aadc 100644 --- a/src/includes/version.php +++ b/src/includes/version.php @@ -5,4 +5,5 @@ namespace mytinytodo; class Version { const VERSION = '1.7'; + const DB_VERSION = '1.7'; } diff --git a/src/index.php b/src/index.php index 692998f..6c0151e 100644 --- a/src/index.php +++ b/src/index.php @@ -5,6 +5,7 @@ Licensed under the GNU GPL version 2 or any later. See file COPYRIGHT for details. */ +$checkDbExists = true; require_once('./init.php'); //Parse query string diff --git a/src/init.php b/src/init.php index c8fff21..ce22eef 100644 --- a/src/init.php +++ b/src/init.php @@ -24,53 +24,15 @@ else { define('MTT_DEBUG', false); } -requireConfig(); require_once(MTTINC. 'common.php'); require_once(MTTINC. 'class.dbconnection.php'); require_once(MTTINC. 'class.dbcore.php'); require_once(MTTINC. 'class.config.php'); require_once(MTTINC. 'version.php'); +requireConfig(); +configureDbConnection(); -# MySQL Database Connection -if (MTT_DB_TYPE == 'mysql') -{ - if (defined('MTT_DB_DRIVER') && MTT_DB_DRIVER == 'mysqli') { - require_once(MTTINC. 'class.db.mysqli.php'); - $db = new Database_Mysqli(); - } - else { - require_once(MTTINC. 'class.db.mysql.php'); - $db = new Database_Mysql(); - } - DBConnection::init($db); - try { - $db->connect( array( - 'host' => MTT_DB_HOST, - 'user' => MTT_DB_USER, - 'password' => MTT_DB_PASSWORD, - 'db' => MTT_DB_NAME, - )); - } - catch(Exception $e) { - logAndDie("Failed to connect to mysql database: ". $e->getMessage()); - } - $db->dq("SET NAMES utf8mb4"); -} - -# SQLite3 Database -elseif (MTT_DB_TYPE == 'sqlite') -{ - require_once(MTTINC. 'class.db.sqlite3.php'); - $db = DBConnection::init(new Database_Sqlite3); - $db->connect( array( 'filename' => MTTPATH. 'db/todolist.db' ) ); -} -else { - die("Incorrect database connection config"); -} - -DBConnection::setTablePrefix(MTT_DB_PREFIX); -DBCore::setDefaultInstance(new DBCore($db)); Config::load(); @@ -109,6 +71,59 @@ function requireConfig() } } +function configureDbConnection() +{ + + # MySQL Database Connection + if (MTT_DB_TYPE == 'mysql') + { + if (defined('MTT_DB_DRIVER') && MTT_DB_DRIVER == 'mysqli') { + require_once(MTTINC. 'class.db.mysqli.php'); + $db = new Database_Mysqli(); + } + else { + require_once(MTTINC. 'class.db.mysql.php'); + $db = new Database_Mysql(); + } + DBConnection::init($db); + try { + $db->connect( array( + 'host' => MTT_DB_HOST, + 'user' => MTT_DB_USER, + 'password' => MTT_DB_PASSWORD, + 'db' => MTT_DB_NAME, + )); + } + catch(Exception $e) { + logAndDie("Failed to connect to mysql database: ". $e->getMessage()); + } + $db->dq("SET NAMES utf8mb4"); + } + + # SQLite3 Database + elseif (MTT_DB_TYPE == 'sqlite') + { + require_once(MTTINC. 'class.db.sqlite3.php'); + $db = DBConnection::init(new Database_Sqlite3); + $db->connect( array( 'filename' => MTTPATH. 'db/todolist.db' ) ); + } + else { + die("Incorrect database connection config"); + } + + DBConnection::setTablePrefix(MTT_DB_PREFIX); + DBCore::setDefaultInstance(new DBCore($db)); + + # Check tables created + global $checkDbExists; + if (!Config::$noDatabase && isset($checkDbExists) && $checkDbExists) { + $exists = $db->tableExists($db->prefix.'settings'); + if (!$exists) { + die("Need to create or update the database. Run setup.php first."); + } + } +} + function need_auth(): bool { return (Config::get('password') != '') ? true : false;