Adds database helper functions
parent
91aac20998
commit
aeb837fee5
|
@ -3,8 +3,12 @@
|
||||||
$config = [
|
$config = [
|
||||||
'domain' => 'localhost',
|
'domain' => 'localhost',
|
||||||
'folder' => '/jilo-web/',
|
'folder' => '/jilo-web/',
|
||||||
'database' => '/home/yasen/work/code/git/lindeas-code/jilo-web/jilo-web.db',
|
'jilo_database' => '../../jilo/jilo.db',
|
||||||
'jilo_database' => '/home/yasen/work/code/git/lindeas-code/jilo/jilo.db',
|
|
||||||
|
'db_type' => 'sqlite',
|
||||||
|
|
||||||
|
'sqlite_file' => '../jilo-web.db',
|
||||||
|
|
||||||
'registration_enabled' => true,
|
'registration_enabled' => true,
|
||||||
'login_message' => '',
|
'login_message' => '',
|
||||||
'version' => '0.1.1',
|
'version' => '0.1.1',
|
||||||
|
|
|
@ -3,25 +3,68 @@
|
||||||
class Database {
|
class Database {
|
||||||
private $pdo;
|
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
|
// options check
|
||||||
if ( !extension_loaded('pdo_sqlite') ) {
|
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.');
|
throw new Exception('PDO extension for SQLite not loaded.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// database file check
|
// SQLite options
|
||||||
if (empty($dbFile) || !file_exists($dbFile)) {
|
if (empty($options['dbFile']) || !file_exists($options['dbFile'])) {
|
||||||
throw new Exception('Database file is not found.');
|
throw new Exception('SQLite database file not found.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// connect to database
|
// connect to SQLite
|
||||||
// FIXME: add mysql/mariadb option
|
|
||||||
try {
|
try {
|
||||||
$this->pdo = new PDO("sqlite:" . $dbFile);
|
$this->pdo = new PDO("sqlite:" . $options['dbFile']);
|
||||||
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
} catch (PDOException $e) {
|
} 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'];
|
$app_root = $config['folder'];
|
||||||
|
|
||||||
|
session_name('jilo');
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
if (isset($_GET['page'])) {
|
if (isset($_GET['page'])) {
|
||||||
|
|
|
@ -3,6 +3,10 @@
|
||||||
require_once 'classes/database.php';
|
require_once 'classes/database.php';
|
||||||
require 'classes/component.php';
|
require 'classes/component.php';
|
||||||
|
|
||||||
|
// connect to database
|
||||||
|
require 'helpers/database.php';
|
||||||
|
$db = connectDB($config);
|
||||||
|
|
||||||
// FIXME move thi sto a special function
|
// FIXME move thi sto a special function
|
||||||
$time_range_specified = false;
|
$time_range_specified = false;
|
||||||
if (!isset($_REQUEST['from_time']) || (isset($_REQUEST['from_time']) && $_REQUEST['from_time'] == '')) {
|
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';
|
$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
|
// Component events listings
|
||||||
|
|
|
@ -3,6 +3,10 @@
|
||||||
require_once 'classes/database.php';
|
require_once 'classes/database.php';
|
||||||
require 'classes/conference.php';
|
require 'classes/conference.php';
|
||||||
|
|
||||||
|
// connect to database
|
||||||
|
require 'helpers/database.php';
|
||||||
|
$db = connectDB($config);
|
||||||
|
|
||||||
// FIXME move thi sto a special function
|
// FIXME move thi sto a special function
|
||||||
$time_range_specified = false;
|
$time_range_specified = false;
|
||||||
if (!isset($_REQUEST['from_time']) || (isset($_REQUEST['from_time']) && $_REQUEST['from_time'] == '')) {
|
if (!isset($_REQUEST['from_time']) || (isset($_REQUEST['from_time']) && $_REQUEST['from_time'] == '')) {
|
||||||
|
@ -33,15 +37,6 @@ if (isset($_REQUEST['id']) && $_REQUEST['id'] != '') {
|
||||||
unset($conferenceName);
|
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
|
// Conference listings
|
||||||
|
|
|
@ -5,13 +5,9 @@ require 'classes/conference.php';
|
||||||
require 'classes/participant.php';
|
require 'classes/participant.php';
|
||||||
|
|
||||||
// connect to database
|
// connect to database
|
||||||
try {
|
require 'helpers/database.php';
|
||||||
$db = new Database($config['jilo_database']);
|
$db = connectDB($config);
|
||||||
} catch (Exception $e) {
|
|
||||||
$error = 'Error: ' . $e->getMessage();
|
|
||||||
include 'templates/block-message.php';
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// dashboard widget listings
|
// dashboard widget listings
|
||||||
|
|
|
@ -7,7 +7,11 @@ require 'classes/user.php';
|
||||||
unset($error);
|
unset($error);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$db = new Database($config['database']);
|
|
||||||
|
// connect to database
|
||||||
|
require 'helpers/database.php';
|
||||||
|
$db = connectDB($config);
|
||||||
|
|
||||||
$user = new User($db);
|
$user = new User($db);
|
||||||
|
|
||||||
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
|
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
|
||||||
|
|
|
@ -3,6 +3,10 @@
|
||||||
require_once 'classes/database.php';
|
require_once 'classes/database.php';
|
||||||
require 'classes/participant.php';
|
require 'classes/participant.php';
|
||||||
|
|
||||||
|
// connect to database
|
||||||
|
require 'helpers/database.php';
|
||||||
|
$db = connectDB($config);
|
||||||
|
|
||||||
// FIXME move thi sto a special function
|
// FIXME move thi sto a special function
|
||||||
$time_range_specified = false;
|
$time_range_specified = false;
|
||||||
if (!isset($_REQUEST['from_time']) || (isset($_REQUEST['from_time']) && $_REQUEST['from_time'] == '')) {
|
if (!isset($_REQUEST['from_time']) || (isset($_REQUEST['from_time']) && $_REQUEST['from_time'] == '')) {
|
||||||
|
@ -37,15 +41,6 @@ if (isset($_REQUEST['id']) && $_REQUEST['id'] != '') {
|
||||||
unset($participantName);
|
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
|
// Participant listings
|
||||||
|
|
|
@ -8,7 +8,11 @@ if ($config['registration_enabled'] === true) {
|
||||||
unset($error);
|
unset($error);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$db = new Database($config['database']);
|
|
||||||
|
// connect to database
|
||||||
|
require 'helpers/database.php';
|
||||||
|
$db = connectDB($config);
|
||||||
|
|
||||||
$user = new User($db);
|
$user = new User($db);
|
||||||
|
|
||||||
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
|
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
|
||||||
|
|
Loading…
Reference in New Issue