2 rcs_id('$Id: ADODB.php,v 1.10 2004-12-06 19:50:03 rurban Exp $');
4 require_once('lib/WikiDB.php');
7 * WikiDB layer for ADODB, which does nothing more than calling the
8 * mysql-specific ADODB backend.
9 * Support for a newer adodb library, the adodb extension library
10 * and more databases will come with PhpWiki v1.3.10
12 * @author: Lawrence Akka, Reini Urban
14 class WikiDB_ADODB extends WikiDB
16 function WikiDB_ADODB ($dbparams) {
17 if (is_array($dbparams['dsn']))
18 $backend = $dbparams['dsn']['phptype'];
19 elseif (preg_match('/^(\w+):/', $dbparams['dsn'], $m))
21 // Do we have a override? (currently: mysql, sqlite, oracle, mssql)
22 // TODO: pgsql, mysqlt (innodb or bdb)
23 if (FindFile("lib/WikiDB/backend/ADODB_$backend.php",true)) {
24 $backend = 'ADODB_' . $backend;
28 include_once("lib/WikiDB/backend/$backend.php");
29 $backend_class = "WikiDB_backend_$backend";
30 $backend = new $backend_class($dbparams);
31 $this->WikiDB($backend, $dbparams);
35 * Determine whether page exists (in non-default form).
36 * @see WikiDB::isWikiPage
38 function isWikiPage ($pagename) {
39 $pagename = (string) $pagename;
40 if ($pagename === '') return false;
41 if (!array_key_exists($pagename, $this->_cache->_id_cache)) {
42 $this->_cache->_id_cache[$pagename] = $this->_backend->is_wiki_page($pagename);
44 return $this->_cache->_id_cache[$pagename];
47 // add surrounding quotes '' if string
48 function quote ($in) {
49 if (is_int($in) || is_double($in)) {
51 } elseif (is_bool($in)) {
53 } elseif (is_null($in)) {
56 return $this->_backend->_dbh->qstr($in);
59 // ADODB handles everything as string
60 // Don't add surrounding quotes '', same as in PearDB
62 return $this->_backend->_dbh->addq($in);
67 if (!$request->_dbi) return false;
68 return is_resource($this->_backend->connection());
71 // SQL result: for simple select or create/update queries
72 // returns the database specific resource type
73 function genericSqlQuery($sql) {
74 if (!($result = $this->_backend->_dbh->Execute($sql))) {
75 trigger_error("SQL Error: ".$this->_backend->_dbh->ErrorMsg(), E_USER_WARNING);
82 // SQL iter: for simple select or create/update queries
83 // returns the generic iterator object (count,next)
84 function genericSqlIter($sql, $field_list = NULL) {
85 $result = $this->genericSqlQuery($sql);
86 return new WikiDB_backend_ADODB_generic_iter($this->_backend, $result, $field_list);
96 // c-hanging-comment-ender-p: nil
97 // indent-tabs-mode: nil