1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Nette\Database\Drivers;
13:
14: use Nette;
15:
16:
17:
18: 19: 20: 21: 22:
23: class OdbcDriver extends Nette\Object implements Nette\Database\ISupplementalDriver
24: {
25:
26: private $connection;
27:
28:
29:
30: public function __construct(Nette\Database\Connection $connection, array $options)
31: {
32: $this->connection = $connection;
33: }
34:
35:
36:
37:
38:
39:
40:
41: 42: 43:
44: public function delimite($name)
45: {
46: return '[' . str_replace(array('[', ']'), array('[[', ']]'), $name) . ']';
47: }
48:
49:
50:
51: 52: 53:
54: public function formatBool($value)
55: {
56: return $value ? '1' : '0';
57: }
58:
59:
60:
61: 62: 63:
64: public function formatDateTime(\DateTime $value)
65: {
66: return $value->format("#m/d/Y H:i:s#");
67: }
68:
69:
70:
71: 72: 73:
74: public function formatLike($value, $pos)
75: {
76: $value = strtr($value, array("'" => "''", '%' => '[%]', '_' => '[_]', '[' => '[[]'));
77: return ($pos <= 0 ? "'%" : "'") . $value . ($pos >= 0 ? "%'" : "'");
78: }
79:
80:
81:
82: 83: 84:
85: public function applyLimit(&$sql, $limit, $offset)
86: {
87: if ($limit >= 0) {
88: $sql = 'SELECT TOP ' . (int) $limit . ' * FROM (' . $sql . ')';
89: }
90:
91: if ($offset) {
92: throw new Nette\InvalidArgumentException('Offset is not implemented in driver odbc.');
93: }
94: }
95:
96:
97:
98: 99: 100:
101: public function normalizeRow($row, $statement)
102: {
103: return $row;
104: }
105:
106:
107:
108:
109:
110:
111:
112: 113: 114:
115: public function getTables()
116: {
117: throw new Nette\NotImplementedException;
118: }
119:
120:
121:
122: 123: 124:
125: public function getColumns($table)
126: {
127: throw new Nette\NotImplementedException;
128: }
129:
130:
131:
132: 133: 134:
135: public function getIndexes($table)
136: {
137: throw new Nette\NotImplementedException;
138: }
139:
140:
141:
142: 143: 144:
145: public function getForeignKeys($table)
146: {
147: throw new Nette\NotImplementedException;
148: }
149:
150:
151:
152: 153: 154:
155: public function isSupported($item)
156: {
157: return $item === self::SUPPORT_COLUMNS_META;
158: }
159:
160: }
161: