<?php /*************************************************************************** * * Copyright (c) by Andreas Unterkircher, unki@netshadow.at * All rights reserved * * 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. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ***************************************************************************/ /* from pear "MDB2" package. use "pear install MDB2" if you don't have this! */ require_once('MDB2.php'); class PHPFSPOT_DB { private $db; private $db_path; private $parent; private $is_connected; private $last_error; /** * PHPFSPOT_DB class constructor * * This constructor initially connect to the database. */ public function __construct($parent, $db_path) { $this->parent = $parent; $this->db_path = $db_path; /* We are starting disconnected */ $this->setConnStatus(false); /* Connect to MySQL Database */ $this->db_connect(); } // __construct() /** * PHPFSPOT_DB class deconstructor * * This destructor will close the current database connection. */ public function __destruct() { $this->db_disconnect(); } // _destruct() /** * PHPFSPOT_DB database connect * * This function will connect to the database via MDB2 */ private function db_connect() { if(($this->db = sqlite3_open($this->db_path)) === false) { $this->throwError("Unable to connect to database:" . $this->getLastError()); $this->setConnStatus(false); } $this->setConnStatus(true); } // db_connect() /** * PHPFSPOT_DB database disconnect * * This function will disconnected an established database connection. */ private function db_disconnect() { if($this->getConnStatus()) sqlite3_close($this->db); } // db_disconnect() /** * PHPFSPOT_DB database query * * This function will execute a SQL query and return the result as * object. */ public function db_query($query = "") { if($this->getConnStatus()) { if(($result = sqlite3_query($this->db, $query)) === false) $this->ThrowError($this->getLastError()); return $result; } else $this->ThrowError("Can't execute query - we are not connected!"); } // db_query() /** * PHPFSPOT_DB database query & execute * * This function will execute a SQL query and return nothing. */ public function db_exec($query = "") { if($this->getConnStatus()) { if(($result = sqlite3_exec($this->db, $query)) === false) $this->ThrowError($this->getLastError()); } else $this->ThrowError("Can't execute query - we are not connected!"); } // db_exec() public function db_fetch_object(&$resource) { return sqlite3_fetch_array($resource); } // db_fetch_object /** * PHPFSPOT_DB fetch ONE row * * This function will execute the given but only return the * first result. */ public function db_fetchSingleRow($query = "") { if($this->getConnStatus()) { $result = $this->db_query($query); $row = $result->fetchRow(); return $row; } else $this->ThrowError("Can't fetch row - we are not connected!"); } // db_fetchSingleRow() /** * PHPFSPOT_DB number of affected rows * * This functions returns the number of affected rows but the * given SQL query. */ public function db_getNumRows($query = "") { /* Execute query */ $result = $this->db_query($query); /* Errors? */ if(PEAR::isError($result)) $this->throwError($result->getMessage()); return $result->numRows(); } // 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 * * This function checks if the given table exists in the * database * @param string, table name * @return true if table found otherwise false */ public function db_check_table_exists($table_name = "") { 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; } return false; } else $this->ThrowError("Can't check table - we are not connected!"); } // db_check_table_exists() /** * PHPFSPOT_DB get connection status * * This function checks the internal state variable if already * connected to database. */ private function setConnStatus($status) { $this->is_connected = $status; } // setConnStatus() /** * PHPFSPOT_DB set connection status * This function sets the internal state variable to indicate * current database connection status. */ private function getConnStatus() { return $this->is_connected; } // getConnStatus() /** * PHPFSPOT_DB throw error * * This function shows up error messages and afterwards through exceptions. */ private function ThrowError($string) { if(!defined('DB_NOERROR')) { print "<br /><br />". $string ."<br /><br />\n"; try { throw new Exception; } catch(Exectpion $e) { } } $this->last_error = $string; } // ThrowError() private function getLastError() { return sqlite3_error($this->db); } // getLastError() } ?>