X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=phpfspot.git;a=blobdiff_plain;f=phpfspot_db.php;h=e9c99ce62ad906e5345a154c275f1d5d6959bd59;hp=585e5592d3ba70caae80411afe04cf2680a4c4c3;hb=0501e39d1db0f53d3b9b645a78de068b15f964ed;hpb=dac334b46e3f2d939f8d106b98dc82a102e72423
diff --git a/phpfspot_db.php b/phpfspot_db.php
index 585e559..e9c99ce 100644
--- a/phpfspot_db.php
+++ b/phpfspot_db.php
@@ -8,7 +8,7 @@
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -21,9 +21,6 @@
*
***************************************************************************/
-/* from pear "MDB2" package. use "pear install MDB2" if you don't have this! */
-require_once('MDB2.php');
-
class PHPFSPOT_DB {
private $db;
@@ -31,6 +28,7 @@ class PHPFSPOT_DB {
private $parent;
private $is_connected;
private $last_error;
+ private $last_query;
/**
* PHPFSPOT_DB class constructor
@@ -45,7 +43,7 @@ class PHPFSPOT_DB {
/* We are starting disconnected */
$this->setConnStatus(false);
- /* Connect to MySQL Database */
+ /* Connect to database */
$this->db_connect();
} // __construct()
@@ -64,18 +62,33 @@ class PHPFSPOT_DB {
/**
* PHPFSPOT_DB database connect
*
- * This function will connect to the database via MDB2
+ * This function will connect to the database
*/
private function db_connect()
{
- if(($this->db = sqlite3_open($this->db_path)) === false) {
+ switch($this->parent->cfg->db_access) {
+ case 'native':
+ if(($this->db = sqlite3_open($this->db_path)) === false) {
+ $this->throwError("Unable to connect to database:" . $this->getLastError());
+ $this->setConnStatus(false);
+ }
+ else {
+ $this->setConnStatus(true);
+ }
+ break;
+ case 'pdo':
+ try {
+ $this->db = new PDO("sqlite:".$this->db_path);
+ $this->setConnStatus(true);
+ }
+ catch (Exception $e) {
+ $this->throwError("Unable to connect to database:" . $e->getMessage());
+ $this->setConnStatus(false);
+ }
+ break;
- $this->throwError("Unable to connect to database:" . $this->getLastError());
- $this->setConnStatus(false);
}
- $this->setConnStatus(true);
-
} // db_connect()
/**
@@ -85,8 +98,15 @@ class PHPFSPOT_DB {
*/
private function db_disconnect()
{
- if($this->getConnStatus())
- sqlite3_close($this->db);
+ switch($this->parent->cfg->db_access) {
+ case 'native':
+ if($this->getConnStatus())
+ sqlite3_close($this->db);
+ break;
+ case 'pdo':
+ $this->db = NULL;
+ break;
+ }
} // db_disconnect()
@@ -99,9 +119,26 @@ class PHPFSPOT_DB {
public function db_query($query = "")
{
if($this->getConnStatus()) {
+
+ $this->last_query = $query;
+
+ switch($this->parent->cfg->db_access) {
+ case 'native':
+ if(($result = sqlite3_query($this->db, $query)) === false)
+ $this->ThrowError($this->getLastError());
+ break;
+ case 'pdo':
+ try{
+ $result = $this->db->query($query);
+ return $result;
+ }
+ catch (Exception $e) {
+ $this->ThrowError($e->getMessage());
+ $result= NULL;
+ }
+ break;
- if(($result = sqlite3_query($this->db, $query)) === false)
- $this->ThrowError($this->getLastError());
+ }
return $result;
}
@@ -119,18 +156,36 @@ class PHPFSPOT_DB {
{
if($this->getConnStatus()) {
- if(($result = sqlite3_exec($this->db, $query)) === false)
- $this->ThrowError($this->getLastError());
-
+ $this->last_query = $query;
+
+ switch($this->parent->cfg->db_access) {
+ case 'native':
+ if(($result = sqlite3_exec($this->db, $query)) === false)
+ $this->ThrowError($this->getLastError());
+ break;
+ case 'pdo':
+ try {
+ $result = $this->db->query($query);
+ }
+ catch (Exception $e){
+ $this->ThrowError($e->getLMessage());
+ }
+ break;
+ }
}
else
$this->ThrowError("Can't execute query - we are not connected!");
} // db_exec()
- public function db_fetch_object(&$resource)
+ public function db_fetch_object($resource)
{
- return sqlite3_fetch_array($resource);
+ switch($this->parent->cfg->db_access) {
+ case 'native':
+ return sqlite3_fetch_array($resource);
+ case 'pdo':
+ return $resource->fetch();
+ }
} // db_fetch_object
@@ -145,7 +200,14 @@ class PHPFSPOT_DB {
if($this->getConnStatus()) {
$result = $this->db_query($query);
- $row = $result->fetchRow();
+ switch($this->parent->cfg->db_access) {
+ case 'native':
+ $row = $this->db_fetch_object($result);
+ break;
+ case 'pdo':
+ $row = $result[0];
+ break;
+ }
return $row;
}
else
@@ -172,19 +234,6 @@ class PHPFSPOT_DB {
} // db_getNumRows()
- /**
- * PHPFSPOT_DB get primary key
- *
- * This function returns the primary key of the last
- * operated insert SQL query.
- */
- public function db_getid()
- {
- /* Get the last primary key ID from execute query */
- return mysql_insert_id($this->db->connection);
-
- } // db_getid()
-
/**
* PHPFSPOT_DB check table exists
*
@@ -198,10 +247,21 @@ class PHPFSPOT_DB {
if($this->getConnStatus()) {
$result = $this->db_query("SELECT name FROM sqlite_master WHERE type='table'");
- while($table = $this->db_fetch_object($result)) {
- if($table['name'] == $table_name)
- return true;
- }
+ switch($this->parent->cfg->db_access) {
+ case 'native':
+ while($table = $this->db_fetch_object($result)) {
+ if($table['name'] == $table_name)
+ return true;
+ }
+ break;
+ case 'pdo':
+ foreach($result as $table ){
+ if($table['NAME'] == $table_name)
+ return true;
+ }
+ break;
+ }
+
return false;
}
else
@@ -240,6 +300,7 @@ class PHPFSPOT_DB {
private function ThrowError($string)
{
if(!defined('DB_NOERROR')) {
+ print "Error during query: ". $this->last_query ."
\n";
print "
". $string ."
\n";
try {
throw new Exception;
@@ -254,7 +315,12 @@ class PHPFSPOT_DB {
private function getLastError()
{
- return sqlite3_error($this->db);
+ switch($this->parent->cfg->db_access) {
+ case 'native':
+ return sqlite3_error($this->db);
+ case 'pdo':
+ return "". $this->db->errorInfo();
+ }
} // getLastError()