1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10: 11:
12:
13:
14:
15: 16: 17: 18: 19: 20:
21: class NOciDriver extends NObject implements ISupplementalDriver
22: {
23:
24: private $connection;
25:
26:
27: private $fmtDateTime;
28:
29:
30:
31: public function __construct(NConnection $connection, array $options)
32: {
33: $this->connection = $connection;
34: $this->fmtDateTime = isset($options['formatDateTime']) ? $options['formatDateTime'] : 'U';
35: }
36:
37:
38:
39:
40:
41:
42:
43: 44: 45:
46: public function delimite($name)
47: {
48:
49: return '"' . str_replace('"', '""', $name) . '"';
50: }
51:
52:
53:
54: 55: 56:
57: public function formatBool($value)
58: {
59: return $value ? '1' : '0';
60: }
61:
62:
63:
64: 65: 66:
67: public function formatDateTime(DateTime $value)
68: {
69: return $value->format($this->fmtDateTime);
70: }
71:
72:
73:
74: 75: 76:
77: public function formatLike($value, $pos)
78: {
79: throw new NotImplementedException;
80: }
81:
82:
83:
84: 85: 86:
87: public function applyLimit(&$sql, $limit, $offset)
88: {
89: if ($offset > 0) {
90:
91: $sql = 'SELECT * FROM (SELECT t.*, ROWNUM AS "__rnum" FROM (' . $sql . ') t '
92: . ($limit >= 0 ? 'WHERE ROWNUM <= ' . ((int) $offset + (int) $limit) : '')
93: . ') WHERE "__rnum" > '. (int) $offset;
94:
95: } elseif ($limit >= 0) {
96: $sql = 'SELECT * FROM (' . $sql . ') WHERE ROWNUM <= ' . (int) $limit;
97: }
98: }
99:
100:
101:
102: 103: 104:
105: public function normalizeRow($row, $statement)
106: {
107: return $row;
108: }
109:
110:
111:
112:
113:
114:
115:
116: 117: 118:
119: public function getTables()
120: {
121: $tables = array();
122: foreach ($this->connection->query('SELECT * FROM cat') as $row) {
123: if ($row[1] === 'TABLE' || $row[1] === 'VIEW') {
124: $tables[] = array(
125: 'name' => $row[0],
126: 'view' => $row[1] === 'VIEW',
127: );
128: }
129: }
130: return $tables;
131: }
132:
133:
134:
135: 136: 137:
138: public function getColumns($table)
139: {
140: throw new NNotImplementedException;
141: }
142:
143:
144:
145: 146: 147:
148: public function getIndexes($table)
149: {
150: throw new NNotImplementedException;
151: }
152:
153:
154:
155: 156: 157:
158: public function getForeignKeys($table)
159: {
160: throw new NNotImplementedException;
161: }
162:
163:
164:
165: 166: 167:
168: public function isSupported($item)
169: {
170: return $item === self::SUPPORT_COLUMNS_META || $item === self::SUPPORT_SEQUENCE;
171: }
172:
173: }
174: