phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] api/db/drivers/adodb-odbtp.inc.php, 1.1.2.1


From: nomail
Subject: [Phpgroupware-cvs] api/db/drivers/adodb-odbtp.inc.php, 1.1.2.1
Date: Thu, 20 May 2004 16:49:03 -0000

Update of /api/db/drivers
Added Files:
        Branch: proposal-branch
          adodb-odbtp.inc.php

date: 2004/04/16 20:59:49;  author: seek3r;  state: Exp;  lines: +339 -0

Log Message:
bringing savannah cvs back up to date with what we were doing on our private 
cvs server. We will not be doing dev from this cvs tree
=====================================================================
No syntax errors detected in -
=====================================================================
<?php
/* 
V4.21 20 Mar 2004  (c) 2000-2004 John Lim (address@hidden). All rights reserved.
  Released under both BSD license and Lesser GPL library license. 
  Whenever there is any discrepancy between the two licenses, 
  the BSD license will take precedence. See License.txt. 
  Set tabs to 4 for best viewing.
  
  Latest version is available at http://php.weblogs.com/
*/


// Code contributed by "stefan bogdan" <sbogdan#rsb.ro>
//odbtp adodb extension

class ADODB_odbtp extends ADOConnection{
        var $databaseType = "odbtp";
        var $fmtDate = "'Y-m-d'";
        var $fmtTimeStamp = "'Y-m-d, h:i:sA'";
        var $replaceQuote = "''"; // string to use to replace quotes
        var $dataProvider = "odbtp";
        var $odbc_driver ='';
        var $hasAffectedRows = true;
        var $_genSeqSQL = "create table %s (id integer)";
        var $_autocommit = true;
        
        function ADODB_odbtp()
        {
        }
        
        function ErrorMsg()
        {
                if (empty($this->_connectionID)) return @odbtp_last_error();
                return @odbtp_last_error($this->_connectionID);
        }
        
        function ErrorNo()
        {
                if (empty($this->_connectionID)) return 
@odbtp_last_error_code();
                        return @odbtp_last_error_code($this->_connectionID);
        }
        function _affectedrows()
        {
                if ($this->lastQuery) {
                   return odbtp_affected_rows ($this->lastQuery);
           } else
                return 0;
        }
        function CreateSequence($seqname='adodbseq',$start=1)
        {
                if (empty($this->_genSeqSQL)) return false;
                $ok = $this->Execute(sprintf($this->_genSeqSQL,$seqname));
                if (!$ok) return false;
                $start -= 1;
                return $this->Execute("insert into $seqname values($start)");
        }

        var $_dropSeqSQL = 'drop table %s';
        function DropSequence($seqname)
        {
                if (empty($this->_dropSeqSQL)) return false;
                return $this->Execute(sprintf($this->_dropSeqSQL,$seqname));
        }
        
        function GenID($seq='adodbseq',$start=1)
        {
                // if you have to modify the parameter below, your database is 
overloaded,
                // or you need to implement generation of id's yourself!
                $MAXLOOPS = 100;
                //$this->debug=1;
                while (--$MAXLOOPS>=0) {
                        $num = $this->GetOne("select id from $seq");
                        if ($num === false) {
                                $this->Execute(sprintf($this->_genSeqSQL 
,$seq));
                                //if(!$this->Execute("CREATE TABLE $seq ".
                //            '(id INT NOT NULL UNIQUE)')) echo 'naspa la 
creare tabela';

                                $start -= 1;
                                $num = '0';
                                $ok = $this->Execute("insert into $seq 
values($start)");
                                if (!$ok) return false;
                        }
                        $this->Execute("update $seq set id=id+1 where id=$num");

                        if ($this->affected_rows() > 0) {
                                $num += 1;
                                $this->genID = $num;
                                return $num;
                        }
                }
                if ($fn = $this->raiseErrorFn) {
                        $fn($this->databaseType,'GENID',-32000,"Unable to 
generate unique id after $MAXLOOPS attempts",$seq,$num);
                }
                return false;
        }

        //example for $argDSN
        //for visual fox : DRIVER={Microsoft Visual FoxPro 
Driver};SOURCETYPE=DBF;SOURCEDB=c:\YourDbfFileDir;EXCLUSIVE=NO;
        //for access : DRIVER={Microsoft Access Driver 
(*.mdb)};DBQ=c:\path_to_access_db\base_test.mdb;UID=root;PWD=;
        //for mssql : DRIVER={SQL 
Server};SERVER=myserver;UID=myuid;PWD=mypwd;DATABASE=OdbtpTest;
        //if uid & pwd can be separate
    function _connect($argHost, $argUsername='', $argPassword='', 
$argDSN='',$persist=false)
        {
                if ($argUsername) $argDSN .= ";uid=$argUsername";
                if ($argPassword) $argDSN .= ";pwd=$argPassword";
                
                if ($persist) $this->_connectionID = 
@odbtp_rconnect($argHost,$argDSN);
                else $this->_connectionID = @odbtp_connect($argHost,$argDSN);
                
                if ($this->_connectionID === false)
                {
                        $this->_errorMsg = $this->ErrorMsg() ;
                        return false;
                }
                $this->odbc_driver = @odbtp_get_attr(ODB_ATTR_DRIVER, 
$this->_connectionID);
        //$this->oic_level = @odbtp_get_attr(ODB_ATTR_OICLEVEL, 
$this->_connectionID);
        $tc = @odbtp_get_attr('ODB_ATTR_TXNCAPABLE', $this->_connectionID);
                if($tc == 0){
                        $this->hasTransactions = false;
                }
                else {
                        $this->hasTransactions = true;
                }
        
                return true;
        }
        function BeginTrans()
        {
                if (!$this->hasTransactions) return false;
                if ($this->transOff) return true;
                $this->transCnt += 1;
                $this->_autocommit = false;
                $rs = 
@odbtp_set_attr(ODB_ATTR_TRANSACTIONS,ODB_TXN_READUNCOMMITTED,$this->_connectionID);
                if(!$rs) return false;
                else return true;
        }
        function CommitTrans($ok=true)
        {
                if ($this->transOff) return true;
                if (!$ok) return $this->RollbackTrans();
                if ($this->transCnt) $this->transCnt -= 1;
                $this->_autocommit = true;
                
@odbtp_set_attr(ODB_ATTR_TRANSACTIONS,ODB_TXN_READCOMMITTED,$this->_connectionID);//set
 transaction off
                $ret = odbtp_commit($this->_connectionID);
                return $ret;
        }
        function RollbackTrans()
        {
                if ($this->transOff) return true;
                if ($this->transCnt) $this->transCnt -= 1;
                $this->_autocommit = true;
                $ret = odbtp_rollback($this->_connectionID);
        
@odbtp_set_attr(ODB_ATTR_TRANSACTIONS,ODB_TXN_READCOMMITTED,$this->_connectionID);//set
 transaction off
                return $ret;
        }
        function Prepare($sql)
        {
        //      return $sql;
                $stmt = odbtp_prepare($sql);
                if (!$stmt) return false;
                return array($sql,$stmt);
        }
        
        function _pconnect($argHost, $argUsername='', $argPassword='', 
$argDSN='')
        {
                return 
$this->_connect($argHost,$argUsername,$argPassword,$argDSN,true);
        }
        
        function _close()
        {
                $ret = @odbtp_close($this->_connectionID);
                $this->_connectionID = false;
                return $ret;
        }
        function _query($sql,$inputarr=false)
        {
        GLOBAL $php_errormsg;
                $php_errormsg = '';
                $this->_error = '';

                if ($inputarr) {
                        if (is_array($sql)) {
                                $stmtid = $sql[1];
                        } else {
                                $stmtid = 
odtp_prepare($sql,$this->_connectionID);

                                if ($stmtid == false) {
                                        $this->_errorMsg = $php_errormsg;
                                        return false;
                                }
                        }
                        if (! odbtp_execute($stmtid,$inputarr)) {
                                return false;
                        }

                } else if (is_array($sql)) {
                        $stmtid = $sql[1];
                        if (!odbtp_execute($stmtid)) {
                                return false;
                        }
                } else
                {
                        $stmtid = odbtp_query($sql,$this->_connectionID);
                }
                $this->_lastAffectedRows = 0;
                if ($stmtid) {
                                $this->_lastAffectedRows = 
odbtp_affected_rows($stmtid);
                }
                $this->_errorMsg = $php_errormsg;
                return $stmtid;
                //return true;
        }
}
class ADORecordSet_odbtp extends ADORecordSet {
        var $databaseType = 'odbtp';
        var $canSeek = true;
        function ADORecordSet_odbtp($queryID,$mode=false)
        {
                if ($mode === false) {
                        global $ADODB_FETCH_MODE;
                        $mode = $ADODB_FETCH_MODE;
                }
                $this->fetchMode = $mode;
                $this->ADORecordSet($queryID);
                //$this->_currentRow = 0;
        }
        function _seek($row)
        {
                return @odbtp_data_seek($this->_queryID, $row);
        }
        function &FetchField($fieldOffset = 0)
        {
                $off=$fieldOffset; // offsets begin at 0
                $o= new ADOFieldObject();
                $o->name = odbtp_field_name($this->_queryID,$off);
                $o->type = odbtp_field_type($this->_queryID,$off);
        strstr( PHP_OS, "WIN") ? $o->max_length = 
odbtp_field_length($this->_queryID,$off): $o->max_length = 'unknown';
                if (ADODB_ASSOC_CASE == 0) $o->name = strtolower($o->name);
                else if (ADODB_ASSOC_CASE == 1) $o->name = strtoupper($o->name);
                return $o;
        }
        function fields($colname)
        {
                if ($this->fetchMode & ADODB_FETCH_ASSOC) return 
$this->fields[$colname];
                if (!$this->bind) {
                        $this->bind = array();
                        for ($i=0; $i < $this->_numOfFields; $i++) {
                                $o = $this->FetchField($i);
                                $this->bind[strtoupper($o->name)] = $i;
                        }
                }
                 return $this->fields[$this->bind[strtoupper($colname)]];
        }
        function _initrs()
        {
                $this->_numOfRows = -1; //odbtp_num_rows - odbtp_num_rows -- 
get number of fetched rows from query ;
                $this->_numOfFields = odbtp_num_fields($this->_queryID);
        }
        function _fetch()
        {
                $f = odbtp_fetch_row($this->_queryID);
                if ($f === false) {
                        $this->fields = false;
                        return false;
                }
                
                $this->fields = $f;
                if ($this->fetchMode & ADODB_FETCH_ASSOC) {
                        $this->fields = $this->GetRowAssoc(ADODB_ASSOC_CASE);
                }
        //      print_r($f);
                //return $stmtid;
                return true;
  /*
                global $ADODB_FETCH_MODE;
                if ($this->fetchMode & ADODB_FETCH_ASSOC) {
                        echo 'am luat-o pe assoc';
                        $f = odbtp_fetch_assoc($this->_queryID);
                        //$this->fields = $this->GetRowAssoc(ADODB_ASSOC_CASE);
                        if ($f === false) {
                                $this->fields = false;
                                return false;
                        }
                }
                else
                {
                        $f = @odbtp_fetch_row($this->_queryID);
                        if ($f === false) {
                                $this->fields = false;
                                return false;
                        }
                        $this->fields = $f;
                }*/
                print_r($f);
                
                return true;
        }
        function MoveFirst()
        {
          $this->fields = @odbtp_fetch_row($this->_queryID, "ODB_FETCH_FIRST");
          if ($this->fields) $this->EOF = false;
          $this->_currentRow = 0;

          if ($this->fetchMode == ADODB_FETCH_NUM) {
                 foreach($this->fields as $v) {
                        $arr[] = $v;
                 }
                 $this->fields = $arr;
          }

          return true;
    }
    function MoveLast()
   {
          $this->fields = @odbtp_fetch_row($this->_queryID, "ODB_FETCH_LAST");
          if ($this->fields) $this->EOF = false;
          $this->_currentRow = -1;

          if ($this->fetchMode == ADODB_FETCH_NUM) {
                 foreach($this->fields as $v) {
                        $arr[] = $v;
                 }
                 $this->fields = $arr;
          }

          return true;
    }
        function NextRecordSet($result)
        {
                return @odbtp_next_result($result);
        }

        function _close()
        {
                return @odbtp_free_query($this->_queryID);
        }
}

?>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]