Adds database helper functions
parent
91aac20998
commit
aeb837fee5
|
@ -3,8 +3,12 @@
|
|||
$config = [
|
||||
'domain' => 'localhost',
|
||||
'folder' => '/jilo-web/',
|
||||
'database' => '/home/yasen/work/code/git/lindeas-code/jilo-web/jilo-web.db',
|
||||
'jilo_database' => '/home/yasen/work/code/git/lindeas-code/jilo/jilo.db',
|
||||
'jilo_database' => '../../jilo/jilo.db',
|
||||
|
||||
'db_type' => 'sqlite',
|
||||
|
||||
'sqlite_file' => '../jilo-web.db',
|
||||
|
||||
'registration_enabled' => true,
|
||||
'login_message' => '',
|
||||
'version' => '0.1.1',
|
||||
|
|
|
@ -3,25 +3,68 @@
|
|||
class Database {
|
||||
private $pdo;
|
||||
|
||||
public function __construct($dbFile) {
|
||||
public function __construct($options) {
|
||||
// pdo needed
|
||||
if ( !extension_loaded('pdo') ) {
|
||||
throw new Exception('PDO extension not loaded.');
|
||||
}
|
||||
|
||||
// pdo and pdo_sqlite needed
|
||||
if ( !extension_loaded('pdo_sqlite') ) {
|
||||
// options check
|
||||
if (empty($options['type'])) {
|
||||
throw new Exception('Database type is not set.');
|
||||
}
|
||||
|
||||
// database type
|
||||
switch ($options['type']) {
|
||||
case 'sqlite':
|
||||
$this->connectSqlite($options);
|
||||
break;
|
||||
case 'mysql' || 'mariadb':
|
||||
$this->connectMysql($options);
|
||||
break;
|
||||
default:
|
||||
throw newException("Database type \"{$options['type']}\" is not supported.");
|
||||
}
|
||||
}
|
||||
|
||||
private function connectSqlite($options) {
|
||||
// pdo_sqlite extension is needed
|
||||
if (!extension_loaded('pdo_sqlite')) {
|
||||
throw new Exception('PDO extension for SQLite not loaded.');
|
||||
}
|
||||
|
||||
// database file check
|
||||
if (empty($dbFile) || !file_exists($dbFile)) {
|
||||
throw new Exception('Database file is not found.');
|
||||
// SQLite options
|
||||
if (empty($options['dbFile']) || !file_exists($options['dbFile'])) {
|
||||
throw new Exception('SQLite database file not found.');
|
||||
}
|
||||
|
||||
// connect to database
|
||||
// FIXME: add mysql/mariadb option
|
||||
// connect to SQLite
|
||||
try {
|
||||
$this->pdo = new PDO("sqlite:" . $dbFile);
|
||||
$this->pdo = new PDO("sqlite:" . $options['dbFile']);
|
||||
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
} catch (PDOException $e) {
|
||||
throw new Exception('DB connection failed: ' . $e->getMessage());
|
||||
throw new Exception('SQLite connection failed: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private function connectMysql($options) {
|
||||
// pdo_mysql extension is needed
|
||||
if (!extension_loaded('pdo_mysql')) {
|
||||
throw new Exception('PDO extension for MySQL not loaded.');
|
||||
}
|
||||
|
||||
// MySQL options
|
||||
if (empty($options['host']) || empty($options['dbname']) || empty($options['user'])) {
|
||||
throw new Exception('MySQL connection data is missing.');
|
||||
}
|
||||
|
||||
// Connect to MySQL
|
||||
try {
|
||||
$dsn = "mysql:host={$options['host']};port={$options['port']};dbname={$options['dbname']};charset=utf8";
|
||||
$this->pdo = new PDO($dsn, $options['user'], $options['password'] ?? '');
|
||||
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
} catch (PDOException $e) {
|
||||
throw new Exception('MySQL connection failed: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
|
||||
// connect to database
|
||||
function connectDB($config) {
|
||||
// sqlite database file
|
||||
if ($config['db_type'] === 'sqlite') {
|
||||
try {
|
||||
$db = new Database([
|
||||
'type' => $config['db_type'],
|
||||
'dbFile' => $config['sqlite_file'],
|
||||
]);
|
||||
$pdo = $db->getConnection();
|
||||
} catch (Exception $e) {
|
||||
$error = 'Error: ' . $e->getMessage();
|
||||
include 'templates/block-message.php';
|
||||
exit();
|
||||
}
|
||||
// mysql/mariadb database
|
||||
} elseif ($config['db_type'] === 'mysql' || $config['db_type'] === 'mariadb') {
|
||||
try {
|
||||
$db = new Database([
|
||||
'type' => $config['db_type'],
|
||||
'host' => $config['sql_host'] ?? 'localhost',
|
||||
'port' => $config['sql_port'] ?? '3306',
|
||||
'dbname' => $config['sql_database'],
|
||||
'user' => $config['sql_username'],
|
||||
'password' => $config['sql_password'],
|
||||
]);
|
||||
$pdo = $db->getConnection();
|
||||
} catch (Exception $e) {
|
||||
$error = 'Error: ' . $e->getMessage();
|
||||
include 'templates/block-message.php';
|
||||
exit();
|
||||
}
|
||||
// unknown database
|
||||
} else {
|
||||
$error = "Error: unknow database type \"{$config['db_type']}\"";
|
||||
include 'templates/block-message.php';
|
||||
exit();
|
||||
}
|
||||
return $db;
|
||||
}
|
||||
?>
|
|
@ -54,6 +54,7 @@ if ($config_file) {
|
|||
|
||||
$app_root = $config['folder'];
|
||||
|
||||
session_name('jilo');
|
||||
session_start();
|
||||
|
||||
if (isset($_GET['page'])) {
|
||||
|
|
|
@ -3,6 +3,10 @@
|
|||
require_once 'classes/database.php';
|
||||
require 'classes/component.php';
|
||||
|
||||
// connect to database
|
||||
require 'helpers/database.php';
|
||||
$db = connectDB($config);
|
||||
|
||||
// FIXME move thi sto a special function
|
||||
$time_range_specified = false;
|
||||
if (!isset($_REQUEST['from_time']) || (isset($_REQUEST['from_time']) && $_REQUEST['from_time'] == '')) {
|
||||
|
@ -32,15 +36,6 @@ if (isset($_REQUEST['name']) && $_REQUEST['name'] != '') {
|
|||
$component_id = 'component_id';
|
||||
}
|
||||
|
||||
// connect to database
|
||||
try {
|
||||
$db = new Database($config['jilo_database']);
|
||||
} catch (Exception $e) {
|
||||
$error = 'Error: ' . $e->getMessage();
|
||||
include 'templates/block-message.php';
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Component events listings
|
||||
|
|
|
@ -3,6 +3,10 @@
|
|||
require_once 'classes/database.php';
|
||||
require 'classes/conference.php';
|
||||
|
||||
// connect to database
|
||||
require 'helpers/database.php';
|
||||
$db = connectDB($config);
|
||||
|
||||
// FIXME move thi sto a special function
|
||||
$time_range_specified = false;
|
||||
if (!isset($_REQUEST['from_time']) || (isset($_REQUEST['from_time']) && $_REQUEST['from_time'] == '')) {
|
||||
|
@ -33,15 +37,6 @@ if (isset($_REQUEST['id']) && $_REQUEST['id'] != '') {
|
|||
unset($conferenceName);
|
||||
}
|
||||
|
||||
// connect to database
|
||||
try {
|
||||
$db = new Database($config['jilo_database']);
|
||||
} catch (Exception $e) {
|
||||
$error = 'Error: ' . $e->getMessage();
|
||||
include 'templates/block-message.php';
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Conference listings
|
||||
|
|
|
@ -5,13 +5,9 @@ require 'classes/conference.php';
|
|||
require 'classes/participant.php';
|
||||
|
||||
// connect to database
|
||||
try {
|
||||
$db = new Database($config['jilo_database']);
|
||||
} catch (Exception $e) {
|
||||
$error = 'Error: ' . $e->getMessage();
|
||||
include 'templates/block-message.php';
|
||||
exit();
|
||||
}
|
||||
require 'helpers/database.php';
|
||||
$db = connectDB($config);
|
||||
|
||||
|
||||
//
|
||||
// dashboard widget listings
|
||||
|
|
|
@ -7,7 +7,11 @@ require 'classes/user.php';
|
|||
unset($error);
|
||||
|
||||
try {
|
||||
$db = new Database($config['database']);
|
||||
|
||||
// connect to database
|
||||
require 'helpers/database.php';
|
||||
$db = connectDB($config);
|
||||
|
||||
$user = new User($db);
|
||||
|
||||
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
|
||||
|
|
|
@ -3,6 +3,10 @@
|
|||
require_once 'classes/database.php';
|
||||
require 'classes/participant.php';
|
||||
|
||||
// connect to database
|
||||
require 'helpers/database.php';
|
||||
$db = connectDB($config);
|
||||
|
||||
// FIXME move thi sto a special function
|
||||
$time_range_specified = false;
|
||||
if (!isset($_REQUEST['from_time']) || (isset($_REQUEST['from_time']) && $_REQUEST['from_time'] == '')) {
|
||||
|
@ -37,15 +41,6 @@ if (isset($_REQUEST['id']) && $_REQUEST['id'] != '') {
|
|||
unset($participantName);
|
||||
}
|
||||
|
||||
// connect to database
|
||||
try {
|
||||
$db = new Database($config['jilo_database']);
|
||||
} catch (Exception $e) {
|
||||
$error = 'Error: ' . $e->getMessage();
|
||||
include 'templates/block-message.php';
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Participant listings
|
||||
|
|
|
@ -8,7 +8,11 @@ if ($config['registration_enabled'] === true) {
|
|||
unset($error);
|
||||
|
||||
try {
|
||||
$db = new Database($config['database']);
|
||||
|
||||
// connect to database
|
||||
require 'helpers/database.php';
|
||||
$db = connectDB($config);
|
||||
|
||||
$user = new User($db);
|
||||
|
||||
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
|
||||
|
|
Loading…
Reference in New Issue