Neue xtComm Shopschnittstelle.
[kivitendo-erp.git] / shopxtc / dblib.php
diff --git a/shopxtc/dblib.php b/shopxtc/dblib.php
new file mode 100755 (executable)
index 0000000..cae6e51
--- /dev/null
@@ -0,0 +1,140 @@
+<?php
+
+include_once("MDB2.php");
+
+class mydb {
+
+   var $db = false;
+   var $error = false;
+   var $debug = true;
+   var $dbf = false;
+   var $database = false;
+
+   function mydb($host,$db,$user,$pass,$port,$proto,$error,$debug) {
+       $this->error = $error;
+       $dsn = array('phptype'  => $proto,
+               'username' => $user,
+               'password' => $pass,
+               'hostspec' => $host,
+               'database' => $db,
+               'port'     => $port);
+       $this->debug = $debug;
+       $this->database = "-< $db >-";
+       $this->connect($dsn);
+    }
+
+    function connect($dsn) {
+       $options = array('result_buffering' => false,);
+       $this->db = MDB2::connect($dsn,$options);
+       if ( $this->debug ) $this->error->write('dblib->connect '.$this->database,'Connect:');
+       if (PEAR::isError($this->db)) {
+           $this->error->write('dblib->connect '.$this->database,$this->db->getMessage());
+           $this->error->write('dblib->connect '.$this->database,print_r($dsn,true));
+           $this->db = false;
+           return false;
+       }
+       $this->db->setFetchMode(MDB2_FETCHMODE_ASSOC);
+    }
+    function Begin() {
+        return $this->db->beginTransaction();
+    }
+    function Commit() {
+        return $this->db->commit();
+    }
+    function Rollback() {
+        return $this->db->rollback();
+    }
+
+    function getAll($sql) {
+        $rs = $this->db->queryAll($sql);
+        if ( $this->debug ) $this->error->write('dblib->getAll '.$this->database,$sql);
+        if (PEAR::isError($rs)) {
+            $this->error->write('dblib->getAll '.$this->database,$rs->getUserinfo());
+            return false;
+        }
+        return $rs;
+    } 
+    function getOne($sql) {
+        $rs = $this->db->queryRow($sql);
+        if ( $this->debug ) $this->error->write('dblib->getOne '.$this->database,$sql);
+        if (PEAR::isError($rs)) {
+            $this->error->write('dblib->getOne '.$this->database,$rs->getUserinfo());
+            return false;
+        }
+        return $rs;
+    }
+    function query($sql) {
+        $rc = $this->db->query($sql);
+        if ( $this->debug ) $this->error->write('dblib->query '.$this->database,$sql);
+        if (PEAR::isError($rc)) {
+            $this->error->write('dblib->query '.$this->database,$rc->getUserinfo());
+            return false;
+        }
+        return $rc;
+    } 
+    function insert($statement,$data) {
+        if ( $this->debug ) $this->error->write("dblib->insert ".$this->database,$statement);
+        $sth = $this->db->prepare($statement);                      //Prepare
+        if (PEAR::isError($sth)) {
+            $this->error->write('dblib->insert 1 '.$this->database,$sth->getMessage());
+            $this->error->write('dblib->insert 2',$sth->getUserinfo());
+            $this->rollback();
+            return false;
+        }
+        if ( $this->debug ) $this->error->write('dblib->insert',print_r($data,true));
+        $rc =& $sth->execute($data);
+        if (PEAR::isError($rc)) {
+            $this->error->write('dblib->insert 3 '.$this->database,$rc->getUserinfo());
+            $this->error->write('SQL ',$statement);
+            $this->error->write('Data ',print_r($data,true));
+            return false;
+        }//else{
+        //    $rc = $this->commit();
+        //}
+        return $rc;
+    }
+    function update($statement,$data) {  
+        if ( $this->debug ) $this->error->write("dblib->update ".$this->database,$statement);
+        $sth = $this->db->prepare($statement);                      //Prepare
+        if (PEAR::isError($sth)) {
+            $this->error->write('dblib->update 1 '.$this->database,$sth->getMessage());
+            $this->error->write('dblib->update 2',$sth->getUserinfo());
+            $this->rollback();
+            return false;
+        }
+        if ( $this->debug ) $this->error->write('dblib->insert',print_r($data,true));
+        $rc =& $sth->execute($data);
+        if (PEAR::isError($rc)) {
+            $this->error->write('dblib->update 3 '.$this->database,$rc->getUserinfo());
+            return false;
+        }//else{
+        //    $rc = $this->commit();
+        //}
+        return $rc;
+    }
+    function insertMultipe($statement,$data) {
+        $this->db->loadModule('Extended');
+        if (!$this->db->supports('transactions')){
+            return false;
+        }
+        $sth = $this->db->prepare($statement);                      //Prepare
+        if (PEAR::isError($sth)) {
+            $this->error->write('dblib->insertMultiple '.$this->database,$sth->getMessage());
+            $this->rollback();
+            return false;
+        }
+        $rc =& $this->db->beginTransaction();
+        $rc =& $this->db->extended->executeMultiple($sth, $data);
+        if (PEAR::isError($rc)) {
+            $this->error->write('dblib->insertMultiple '.$this->database,$rc->getUserinfo());
+            $this->rollback();
+            return false;
+        }else{
+                $rc = $this->commit();
+        }
+        return $rc;
+    }
+}
+
+?>