From 66773789e392305bba4cdf7ed8e6ae3b8380de51 Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Thu, 27 Oct 2005 09:45:33 -0400
Subject: [PATCH] 

---
 program/include/rcube_db.inc |   72 +++++++++++++++++++++++++++--------
 1 files changed, 55 insertions(+), 17 deletions(-)

diff --git a/program/include/rcube_db.inc b/program/include/rcube_db.inc
index 7d9d1bb..a987d2e 100755
--- a/program/include/rcube_db.inc
+++ b/program/include/rcube_db.inc
@@ -101,9 +101,27 @@
         $this->db_connected = true;
     }
 
-    // Query database (read operations)
+    // Query database
     
-    function query($query)
+    function query()
+    {
+		$params = func_get_args();
+		$query = array_shift($params);
+		
+		return $this->_query($query, 0, 0, $params);
+    }
+   
+	function limitquery()
+    {
+		$params = func_get_args();
+		$query = array_shift($params);
+		$offset = array_shift($params);
+		$numrows = array_shift($params);
+		
+		return $this->_query($query, $offset, $numrows, $params);
+    }
+    
+    function _query($query, $offset, $numrows, $params)
     {
         // Read or write ?
         if (strtolower(trim(substr($query,0,6)))=='select')
@@ -115,28 +133,25 @@
 
         if ($this->db_provider == 'sqlite')
             $query = $this->_sqlite_prepare_query($query);
-            
-        $result = $this->db_handle->query($query);
         
+        if ($numrows || $offset)
+			{
+			$result = $this->db_handle->limitQuery($query,$offset,$numrows,$params);
+			}
+        else    
+			$result = $this->db_handle->query($query,$params);
+
         if (DB::isError($result))
+			{
             raise_error(array('code' => 500,
                               'type' => 'db',
                               'line' => __LINE__, 
                               'file' => __FILE__, 
                               'message' => $result->getMessage()), TRUE, FALSE);
-        
+             return false;
+            }
+
         return $this->_add_result($result, $query);
-    }
-
-    function db_execute ($query)
-    {
-        $this->db_connect('w');
-
-        if ($this->db_provider == 'sqlite')
-            $query = $this->_sqlite_prepare_query($query);
-
-        $result = $this->db_handle->query($query);
-
     }
     
     function num_rows($res_id=NULL)
@@ -177,8 +192,11 @@
                 return $result;
                 
             case 'mysql': // This is unfortuneate
-                return mysql_insert_id();
+                return mysql_insert_id($this->db_handle->connection);
 
+			case 'mysqli':
+				return mysqli_insert_id($this->db_handle->connection);
+	
             case 'sqlite':
                 return sqlite_last_insert_rowid($this->db_handle->connection);
 
@@ -202,6 +220,26 @@
         return $result->fetchRow(DB_FETCHMODE_ASSOC);
     }
 
+	function quoteIdentifier ( $str )
+	{
+		if (!$this->db_handle)
+			$this->db_connect('r');
+			
+		return $this->db_handle->quoteIdentifier($str);
+	}
+	
+	function unixtimestamp($field)
+	{
+		switch($this->db_provider)
+			{
+			case 'pgsql':
+				return "EXTRACT (EPOCH FROM $field)";
+				break;
+			default:
+				return "UNIX_TIMESTAMP($field)";
+			}
+	}
+	
     function _add_result($res, $query)
     {
         // sql error occured

--
Gitblit v1.9.1