Index: SC_DbConn.php
===================================================================
--- data/class/SC_DbConn.php	(revision 18367)
+++ data/class/SC_DbConn.php	(working copy)
@@ -22,15 +22,20 @@
  */
 
 $current_dir = realpath(dirname(__FILE__));
-require_once($current_dir . "/../module/DB.php");
+require_once($current_dir . "/../module/adodb/adodb.inc.php");
+define('ADODB_ERROR_HANDLER_TYPE', E_USER_ERROR);
+define('ADODB_ERROR_LOG_TYPE',3);
+define('ADODB_ERROR_LOG_DEST', DATA_PATH . "logs/error.log");
+require_once($current_dir . "/../module/adodb/adodb-errorhandler.inc.php");
+require_once($current_dir . "/../module/adodb/adodb-errorpear.inc.php");
 
-$objDbConn = "";
-
+/**
+ * FIXME インストーラ要修正
+ */
 class SC_DbConn {
 
     var $conn;
     var $result;
-    var $includePath;
     var $dsn;
     var $err_disp = true;
     var $dbFactory;
@@ -38,33 +43,39 @@
 
     // コンストラクタ
     function SC_DbConn($dsn = "", $err_disp = true, $new = false){
-        global $objDbConn;
 
-        // Debugモード指定
-        $options['debug'] = PEAR_DB_DEBUG;
-        // 持続的接続オプション
-        $options['persistent'] = PEAR_DB_PERSISTENT;
-
-        // 既に接続されていないか、新規接続要望の場合は接続する。
-        if(!isset($objDbConn->connection) || $new) {
-            if($dsn != "") {
-                $objDbConn = DB::connect($dsn, $options);
-                $this->dsn = $dsn;
+        if (empty($dsn)) {
+            if (defined('DEFAULT_DSN')) {
+                $dsn = DEFAULT_DSN;
             } else {
-                if(defined('DEFAULT_DSN')) {
-                    $objDbConn = DB::connect(DEFAULT_DSN, $options);
-                    $this->dsn = DEFAULT_DSN;
-                } else {
-                    return;
-                }
+                return;
             }
+            // 接続オプションのために "?" をつける
+            $this->dsn = $dsn . "?";
+        }
+
+        if (!empty($this->dsn)) {
+            // 持続的接続モード指定
+            if (PEAR_DB_PERSISTENT) {
+                $this->dsn = $this->dsn . "&persist";
             }
-            
-            if (DB_TYPE == 'mysql') {
-                $objDbConn->query('SET NAMES utf8');
+            // Debug モード指定
+            if(PEAR_DB_DEBUG > 0) {
+                $this->dsn = $this->dsn . "&debug";
             }
-        
-        $this->conn = $objDbConn;
+            // 常に新規接続
+            if ($new) {
+                $this->dsn = $this->dsn . "&new";
+            }
+        }
+
+        $this->conn =& ADONewConnection($this->dsn);
+        $this->conn->SetFetchMode(ADODB_FETCH_ASSOC);
+
+        if (DB_TYPE == 'mysql') {
+            $this->conn->Execute('SET NAMES utf8');
+        }
+
         $this->err_disp = $err_disp;
         $this->dbFactory = SC_DB_DBFactory_Ex::getInstance();
     }
@@ -75,13 +86,13 @@
         if (DB_TYPE == "mysql") $n = $this->dbFactory->sfChangeMySQL($n);
 
         if ( $arr ) {
-            $result = $this->conn->query($n, $arr);
+            $result = $this->conn->Execute($n, $arr);
         } else {
-            $result = $this->conn->query($n);
+            $result = $this->conn->Execute($n);
         }
 
-        if ($this->conn->isError($result) && !$ignore_err){
-            $this->send_err_mail($result, $n);
+        if ($this->conn->ErrorNo() < 0 && !$ignore_err){
+            return ADODB_Pear_Error();
         }
 
         $this->result = $result;
@@ -99,9 +110,10 @@
         } else {
             $result = $this->conn->getOne($n);
         }
-        if ($this->conn->isError($result)){
-            $this->send_err_mail($result ,$n);
+        if ($this->conn->ErrorNo() < 0) {
+            return ADODB_Pear_Error();
         }
+
         $this->result = $result;
 
         return $this->result;
@@ -122,9 +134,10 @@
         
         $result = $this->conn->getRow($sql, $arrVal ,$fetchmode);
         
-        if ($this->conn->isError($result)){
-            $this->send_err_mail($result ,$sql);
+        if ($this->conn->ErrorNo() < 0) {
+            return ADODB_Pear_Error();
         }
+
         $this->result = $result;
         return $this->result;
     }
@@ -135,13 +148,15 @@
         if (DB_TYPE == "mysql") $n = $this->dbFactory->sfChangeMySQL($n);
 
         if ($arr) {
-            $result = $this->conn->getCol($n, $col, $arr);
+            $result = $this->conn->GetCol($n, $arr);
         } else {
-            $result = $this->conn->getCol($n, $col);
+            $result = $this->conn->GetCol($n);
         }
-        if ($this->conn->isError($result)) {
-            $this->send_err_mail($result, $n);
+
+        if ($this->conn->ErrorNo() < 0) {
+            return ADODB_Pear_Error();
         }
+
         $this->result = $result;
         return $this->result;
     }
@@ -160,16 +175,16 @@
             }
             return 0;
         }
-
         if ( $arr ){
-            $result = $this->conn->getAll($n, $arr, DB_FETCHMODE_ASSOC);
+            $result = $this->conn->GetAll($n, $arr);
         } else {
-            $result = $this->conn->getAll($n, DB_FETCHMODE_ASSOC);
+            $result = $this->conn->GetAll($n);
         }
 
-        if ($this->conn->isError($result)){
-            $this->send_err_mail($result, $n);
+        if ($this->conn->ErrorNo() < 0) {
+            return ADODB_Pear_Error();
         }
+
         $this->result = $result;
 
         return $this->result;
@@ -178,19 +193,23 @@
     function autoExecute($table_name, $fields_values, $sql_where = null){
 
         if ( $sql_where ) {
-            $result = $this->conn->autoExecute( $table_name, $fields_values, DB_AUTOQUERY_UPDATE, $sql_where);
+            $result = $this->conn->autoExecute( $table_name, $fields_values, 'UPDATE', $sql_where);
         } else {
-            $result = $this->conn->autoExecute( $table_name, $fields_values, DB_AUTOQUERY_INSERT);
+            $result = $this->conn->autoExecute( $table_name, $fields_values, 'INSERT');
         }
 
-        if ($this->conn->isError($result)){
-            $this->send_err_mail($result, $n);
+        if ($this->conn->ErrorNo() < 0) {
+            return ADODB_Pear_Error();
         }
-        $this->result = $result;
-        return $this->result;
+
+        return 1;
     }
 
-
+    /**
+     * XXX バックエンドが ADOdb の場合は動作しません.
+     *
+     * @deprecated 本体で未使用のため非推奨
+     */
     function prepare($n){
         global $sql;
         $sql = $n;
@@ -199,6 +218,11 @@
         return $this->result;
     }
 
+    /**
+     * XXX バックエンドが ADOdb の場合は動作しません.
+     *
+     * @deprecated 本体で未使用のため非推奨
+     */
     function execute($n, $obj){
         global $sql;
         $sql = $n;
@@ -207,6 +231,11 @@
         return $this->result;
     }
 
+    /**
+     * XXX バックエンドが ADOdb の場合は動作しません.
+     *
+     * @deprecated 本体で未使用のため非推奨
+     */
     function reset(){
         $this->conn->disconnect();
     }
@@ -221,13 +250,15 @@
         $objPage->pearResult = $pearResult;
         GC_Utils_Ex::gfPrintLog($objPage->sfGetErrMsg());
         $objPage->process();
-        
-        exit();
+        exit;
     }
 
     /**
      * 直前に実行されたSQL文を取得する.
      *
+     * XXX バックエンドが ADOdb の場合は動作しません.
+     *
+     * @deprecated PEAR_DB_DEBUG = 1 で代用して下さい.
      * @param boolean $disp trueの場合、画面出力を行う.
      * @return string SQL文
      */
