diff --git a/ykval-checksum-clients.php b/ykval-checksum-clients.php index 7bc2b1d..596afeb 100755 --- a/ykval-checksum-clients.php +++ b/ykval-checksum-clients.php @@ -26,11 +26,7 @@ require_once 'ykval-db.php'; $logname="ykval-checksum-clients"; $myLog = new Log($logname); -$db=new Db($baseParams['__YKVAL_DB_DSN__'], - $baseParams['__YKVAL_DB_USER__'], - $baseParams['__YKVAL_DB_PW__'], - $baseParams['__YKVAL_DB_OPTIONS__'], - $logname . ':db'); +$db = Db::GetDatabaseHandle($baseParams, $logname); if (!$db->connect()) { $myLog->log(LOG_WARNING, "Could not connect to database"); diff --git a/ykval-db-oci.php b/ykval-db-oci.php index b261725..7bf1848 100644 --- a/ykval-db-oci.php +++ b/ykval-db-oci.php @@ -8,7 +8,7 @@ require_once('ykval-log.php'); require_once('ykval-db.php'); -class OciDb extends DB +class DbImpl extends DB { /** * Constructor diff --git a/ykval-db-pdo.php b/ykval-db-pdo.php index c92da46..5f7070f 100644 --- a/ykval-db-pdo.php +++ b/ykval-db-pdo.php @@ -8,7 +8,7 @@ require_once('ykval-log.php'); require_once('ykval-db.php'); -class PdoDb +class DbImpl { diff --git a/ykval-db.php b/ykval-db.php index 772dfef..8ce3d9e 100644 --- a/ykval-db.php +++ b/ykval-db.php @@ -7,8 +7,26 @@ require_once('ykval-log.php'); -class Db +abstract class Db { + /** + * static function to determine database type and instantiate the correct subclass + * + * */ + public static function GetDatabaseHandle($baseParams, $logname) + { + if(substr($baseParams['__YKVAL_DB_DSN__'], 0, 3) == oci) { + require_once 'ykval-db-oci.php'; + } else { + require_once 'ykval-db-pdo.php'; + } + return new DbImpl($baseParams['__YKVAL_DB_DSN__'], + $baseParams['__YKVAL_DB_USER__'], + $baseParams['__YKVAL_DB_PW__'], + $baseParams['__YKVAL_DB_OPTIONS__'], + $logname . ':db'); + } + function addField($name, $value) { $this->myLog->addField($name, $value); diff --git a/ykval-export-clients.php b/ykval-export-clients.php index cf3b5fb..26f9e87 100755 --- a/ykval-export-clients.php +++ b/ykval-export-clients.php @@ -10,11 +10,7 @@ require_once 'ykval-db.php'; $logname="ykval-export"; $myLog = new Log($logname); -$db=new Db($baseParams['__YKVAL_DB_DSN__'], - $baseParams['__YKVAL_DB_USER__'], - $baseParams['__YKVAL_DB_PW__'], - $baseParams['__YKVAL_DB_OPTIONS__'], - $logname . ':db'); +$db = Db::GetDatabaseHandle($baseParams, $logname); if (!$db->connect()) { $myLog->log(LOG_WARNING, "Could not connect to database"); @@ -22,16 +18,19 @@ if (!$db->connect()) { } $result = $db->customQuery("select id, active, created, secret, email, notes, otp from clients order by id"); -while($row = $result->fetch(PDO::FETCH_ASSOC)){ - echo $row['id'] . - "\t" . $row['active'] . - "\t" . $row['created'] . - "\t" . $row['secret'] . - "\t" . $row['email'] . - "\t" . $row['notes'] . - "\t" . $row['otp'] . +while($row = $db->fetchArray($result)) { + echo $db->getRowValue($row, 'id'] . + "\t" . $db->getRowValue($row, 'active') . + "\t" . $db->getRowValue($row, 'created') . + "\t" . $db->getRowValue($row, 'secret') . + "\t" . $db->getRowValue($row, 'email') . + "\t" . $db->getRowValue($row, 'notes') . + "\t" . $db->getRowValue($row, 'otp') . "\n"; - } +} + +$db->closeCursor($result); +$db->disconnect(); $result=null; $db=null; diff --git a/ykval-export.php b/ykval-export.php index 1fe6c76..a488f82 100755 --- a/ykval-export.php +++ b/ykval-export.php @@ -10,11 +10,7 @@ require_once 'ykval-db.php'; $logname="ykval-export"; $myLog = new Log($logname); -$db=new Db($baseParams['__YKVAL_DB_DSN__'], - $baseParams['__YKVAL_DB_USER__'], - $baseParams['__YKVAL_DB_PW__'], - $baseParams['__YKVAL_DB_OPTIONS__'], - $logname . ':db'); +$db = Db::GetDatabaseHandle($baseParams, $logname); if (!$db->connect()) { $myLog->log(LOG_WARNING, "Could not connect to database"); diff --git a/ykval-import-clients.php b/ykval-import-clients.php index 3141175..57a170f 100755 --- a/ykval-import-clients.php +++ b/ykval-import-clients.php @@ -10,11 +10,7 @@ require_once 'ykval-db.php'; $logname="ykval-import"; $myLog = new Log($logname); -$db=new Db($baseParams['__YKVAL_DB_DSN__'], - $baseParams['__YKVAL_DB_USER__'], - $baseParams['__YKVAL_DB_PW__'], - $baseParams['__YKVAL_DB_OPTIONS__'], - $logname . ':db'); +$db = Db::GetDatabaseHandle($baseParams, $logname); if (!$db->connect()) { $myLog->log(LOG_WARNING, "Could not connect to database"); @@ -35,7 +31,7 @@ while ($res=fgetcsv(STDIN, 0, "\t")) { $query="SELECT * FROM clients WHERE id='" . $params['id'] . "'"; $result=$db->customQuery($query); - if(!$result->fetch(PDO::FETCH_ASSOC)) { + if($db->rowCount($result) == 0) { // We didn't have the id in database so we need to do insert instead $query="INSERT INTO clients " . "(id,active,created,secret,email,notes,otp) VALUES " . @@ -53,6 +49,7 @@ while ($res=fgetcsv(STDIN, 0, "\t")) { exit(1); } } + $db->closeCursor($result); } diff --git a/ykval-import.php b/ykval-import.php index 636b741..e4d8607 100755 --- a/ykval-import.php +++ b/ykval-import.php @@ -10,11 +10,7 @@ require_once 'ykval-db.php'; $logname="ykval-import"; $myLog = new Log($logname); -$db=new Db($baseParams['__YKVAL_DB_DSN__'], - $baseParams['__YKVAL_DB_USER__'], - $baseParams['__YKVAL_DB_PW__'], - $baseParams['__YKVAL_DB_OPTIONS__'], - $logname . ':db'); +$db = Db::GetDatabaseHandle($baseParams, $logname); if (!$db->connect()) { $myLog->log(LOG_WARNING, "Could not connect to database"); @@ -80,6 +76,7 @@ while ($res=fgetcsv(STDIN, 0, "\t")) { exit(1); } } + $db->closeCursor($result); } diff --git a/ykval-revoke.php b/ykval-revoke.php index b1496df..f88679d 100644 --- a/ykval-revoke.php +++ b/ykval-revoke.php @@ -23,11 +23,7 @@ if ($do != "enable" && $do != "disable") { } # Connect to db -$db = new Db($baseParams['__YKVAL_DB_DSN__'], - $baseParams['__YKVAL_DB_USER__'], - $baseParams['__YKVAL_DB_PW__'], - $baseParams['__YKVAL_DB_OPTIONS__'], - 'ykval-revoke:db'); +$db = Db::GetDatabaseHandle($baseParams, 'ykval-revoke'); if (!$db->connect()) { logdie("ERROR Database connect error"); } diff --git a/ykval-synclib.php b/ykval-synclib.php index d5ff097..297b2b7 100644 --- a/ykval-synclib.php +++ b/ykval-synclib.php @@ -15,12 +15,7 @@ class SyncLib $this->myLog = new Log($logname); global $baseParams; $this->syncServers = $baseParams['__YKVAL_SYNC_POOL__']; - - $this->db=new Db($baseParams['__YKVAL_DB_DSN__'], - $baseParams['__YKVAL_DB_USER__'], - $baseParams['__YKVAL_DB_PW__'], - $baseParams['__YKVAL_DB_OPTIONS__'], - $logname . ':db'); + $this->db = Db::GetDatabaseHandle($baseParams, $logname); $this->isConnected=$this->db->connect(); $this->server_nonce=md5(uniqid(rand()));