From ad84f9c06c14b70f6f764df1f77b964d65db1f99 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Mon, 22 Jun 2009 14:32:51 -0400 Subject: [PATCH] - performance improvements of messages caching --- program/include/rcube_mdb2.php | 40 ++++++++++++++++++++++++++++++++++++++-- 1 files changed, 38 insertions(+), 2 deletions(-) diff --git a/program/include/rcube_mdb2.php b/program/include/rcube_mdb2.php index 1c491a8..2665501 100644 --- a/program/include/rcube_mdb2.php +++ b/program/include/rcube_mdb2.php @@ -178,6 +178,17 @@ /** + * Connection state checker + * + * @param boolean True if in connected state + */ + function is_connected() + { + return PEAR::isError($this->db_handle) ? false : true; + } + + + /** * Execute a SQL query * * @param string SQL query to execute @@ -187,6 +198,9 @@ */ function query() { + if (!$this->is_connected()) + return NULL; + $params = func_get_args(); $query = array_shift($params); @@ -360,7 +374,7 @@ */ function _fetch_row($result, $mode) { - if ($result === FALSE || PEAR::isError($result)) + if ($result === FALSE || PEAR::isError($result) || !$this->is_connected()) return FALSE; return $result->fetchRow($mode); @@ -452,6 +466,26 @@ default: return "now()"; } + } + + + /** + * Return list of elements for use with SQL's IN clause + * + * @param string Input array + * @return string Elements list string + * @access public + */ + function array2list($arr, $type=null) + { + if (!is_array($arr)) + return $this->quote($arr, $type); + + $res = array(); + foreach ($arr as $item) + $res[] = $this->quote($item, $type); + + return implode(',', $res); } @@ -585,7 +619,9 @@ $data = file_get_contents($file_name); if (strlen($data)) - sqlite_exec($dbh->connection, $data); + if (!sqlite_exec($dbh->connection, $data, $error) || MDB2::isError($dbh)) + raise_error(array('code' => 500, 'type' => 'db', + 'line' => __LINE__, 'file' => __FILE__, 'message' => $error), TRUE, FALSE); } -- Gitblit v1.9.1