Add analytics
[bus.git] / busui / owa / includes / pqp / classes / MySqlDatabase.php
blob:a/busui/owa/includes/pqp/classes/MySqlDatabase.php -> blob:b/busui/owa/includes/pqp/classes/MySqlDatabase.php
--- a/busui/owa/includes/pqp/classes/MySqlDatabase.php
+++ b/busui/owa/includes/pqp/classes/MySqlDatabase.php
@@ -1,1 +1,116 @@
+<?php
 
+/* - - - - - - - - - - - - - - - - - - - - -
+
+ Title : PHP Quick Profiler MySQL Class
+ Author : Created by Ryan Campbell
+ URL : http://particletree.com/features/php-quick-profiler/
+
+ Last Updated : April 22, 2009
+
+ Description : A simple database wrapper that includes
+ logging of queries.
+
+- - - - - - - - - - - - - - - - - - - - - */
+
+class MySqlDatabase {
+
+	private $host;			
+	private $user;		
+	private $password;	
+	private $database;	
+	public $queryCount = 0;
+	public $queries = array();
+	public $conn;
+	
+	/*------------------------------------
+	          CONFIG CONNECTION
+	------------------------------------*/
+	
+	function __construct($host, $user, $password) {
+		$this->host = $host;
+		$this->user = $user;
+		$this->password = $password;
+	}
+	
+	function connect($new = false) {
+		$this->conn = mysql_connect($this->host, $this->user, $this->password, $new);
+		if(!$this->conn) {
+			throw new Exception('We\'re working on a few connection issues.');
+		}
+	}
+	
+	function changeDatabase($database) {
+		$this->database = $database;
+		if($this->conn) {
+			if(!mysql_select_db($database, $this->conn)) {
+				throw new CustomException('We\'re working on a few connection issues.');
+			}
+		}
+	}
+	
+	function lazyLoadConnection() {
+		$this->connect(true);
+		if($this->database) $this->changeDatabase($this->database);
+	}
+	
+	/*-----------------------------------
+	   				QUERY
+	------------------------------------*/
+	
+	function query($sql) {
+		if(!$this->conn) $this->lazyLoadConnection();
+		$start = $this->getTime();
+		$rs = mysql_query($sql, $this->conn);
+		$this->queryCount += 1;
+		$this->logQuery($sql, $start);
+		if(!$rs) {
+			throw new Exception('Could not execute query.');
+		}
+		return $rs;
+	}
+	
+	/*-----------------------------------
+	          	DEBUGGING
+	------------------------------------*/
+	
+	function logQuery($sql, $start) {
+		$query = array(
+				'sql' => $sql,
+				'time' => ($this->getTime() - $start)*1000
+			);
+		array_push($this->queries, $query);
+	}
+	
+	function getTime() {
+		$time = microtime();
+		$time = explode(' ', $time);
+		$time = $time[1] + $time[0];
+		$start = $time;
+		return $start;
+	}
+	
+	public function getReadableTime($time) {
+		$ret = $time;
+		$formatter = 0;
+		$formats = array('ms', 's', 'm');
+		if($time >= 1000 && $time < 60000) {
+			$formatter = 1;
+			$ret = ($time / 1000);
+		}
+		if($time >= 60000) {
+			$formatter = 2;
+			$ret = ($time / 1000) / 60;
+		}
+		$ret = number_format($ret,3,'.','') . ' ' . $formats[$formatter];
+		return $ret;
+	}
+	
+	function __destruct()  {
+		@mysql_close($this->conn);
+	}
+	
+}
+
+?>
+