Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
/**
3
 * Borland Interbase driver.
4
 *
5
 * Support Borland Interbase 6.5 and later
6
 *
7
 * This file is part of ADOdb, a Database Abstraction Layer library for PHP.
8
 *
9
 * @package ADOdb
10
 * @link https://adodb.org Project's web site and documentation
11
 * @link https://github.com/ADOdb/ADOdb Source code and issue tracker
12
 *
13
 * The ADOdb Library is dual-licensed, released under both the BSD 3-Clause
14
 * and the GNU Lesser General Public Licence (LGPL) v2.1 or, at your option,
15
 * any later version. This means you can use it in proprietary products.
16
 * See the LICENSE.md file distributed with this source code for details.
17
 * @license BSD-3-Clause
18
 * @license LGPL-2.1-or-later
19
 *
20
 * @copyright 2000-2013 John Lim
21
 * @copyright 2014 Damien Regad, Mark Newnham and the ADOdb community
22
 */
23
 
24
// security - hide paths
25
if (!defined('ADODB_DIR')) die();
26
 
27
include_once(ADODB_DIR."/drivers/adodb-ibase.inc.php");
28
 
29
class ADODB_borland_ibase extends ADODB_ibase {
30
	var $databaseType = "borland_ibase";
31
 
32
	function BeginTrans()
33
	{
34
		if ($this->transOff) return true;
35
		$this->transCnt += 1;
36
		$this->autoCommit = false;
37
	 	$this->_transactionID = ibase_trans($this->ibasetrans, $this->_connectionID);
38
		return $this->_transactionID;
39
	}
40
 
41
	function ServerInfo()
42
	{
43
		$arr['dialect'] = $this->dialect;
44
		switch($arr['dialect']) {
45
		case '':
46
		case '1': $s = 'Interbase 6.5, Dialect 1'; break;
47
		case '2': $s = 'Interbase 6.5, Dialect 2'; break;
48
		default:
49
		case '3': $s = 'Interbase 6.5, Dialect 3'; break;
50
		}
51
		$arr['version'] = '6.5';
52
		$arr['description'] = $s;
53
		return $arr;
54
	}
55
 
56
	// Note that Interbase 6.5 uses ROWS instead - don't you love forking wars!
57
	// 		SELECT col1, col2 FROM table ROWS 5 -- get 5 rows
58
	//		SELECT col1, col2 FROM TABLE ORDER BY col1 ROWS 3 TO 7 -- first 5 skip 2
59
	// Firebird uses
60
	//		SELECT FIRST 5 SKIP 2 col1, col2 FROM TABLE
61
	function SelectLimit($sql,$nrows=-1,$offset=-1,$inputarr=false,$secs2cache=0)
62
	{
63
		$nrows = (int) $nrows;
64
		$offset = (int) $offset;
65
		if ($nrows > 0) {
66
			if ($offset <= 0) $str = " ROWS $nrows ";
67
			else {
68
				$a = $offset+1;
69
				$b = $offset+$nrows;
70
				$str = " ROWS $a TO $b";
71
			}
72
		} else {
73
			// ok, skip
74
			$a = $offset + 1;
75
			$str = " ROWS $a TO 999999999"; // 999 million
76
		}
77
		$sql .= $str;
78
 
79
		return ($secs2cache) ?
80
				$this->CacheExecute($secs2cache,$sql,$inputarr)
81
			:
82
				$this->Execute($sql,$inputarr);
83
	}
84
 
85
};
86
 
87
 
88
class  ADORecordSet_borland_ibase extends ADORecordSet_ibase {
89
 
90
	var $databaseType = "borland_ibase";
91
 
92
}