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: public function __construct(NConnection $connection, array $options)
31: {
32: $this->connection = $connection;
33: $this->fmtDateTime = isset($options['formatDateTime']) ? $options['formatDateTime'] : 'U';
34: }
35:
36:
37:
38:
39:
40: 41: 42:
43: public function delimite($name)
44: {
45:
46: return '"' . str_replace('"', '""', $name) . '"';
47: }
48:
49:
50: 51: 52:
53: public function formatBool($value)
54: {
55: return $value ? '1' : '0';
56: }
57:
58:
59: 60: 61:
62: public function formatDateTime(DateTime $value)
63: {
64: return $value->format($this->fmtDateTime);
65: }
66:
67:
68: 69: 70:
71: public function formatLike($value, $pos)
72: {
73: throw new NotImplementedException;
74: }
75:
76:
77: 78: 79:
80: public function applyLimit(& $sql, $limit, $offset)
81: {
82: if ($offset > 0) {
83:
84: $sql = 'SELECT * FROM (SELECT t.*, ROWNUM AS "__rnum" FROM (' . $sql . ') t '
85: . ($limit >= 0 ? 'WHERE ROWNUM <= ' . ((int) $offset + (int) $limit) : '')
86: . ') WHERE "__rnum" > '. (int) $offset;
87:
88: } elseif ($limit >= 0) {
89: $sql = 'SELECT * FROM (' . $sql . ') WHERE ROWNUM <= ' . (int) $limit;
90: }
91: }
92:
93:
94: 95: 96:
97: public function normalizeRow($row, $statement)
98: {
99: return $row;
100: }
101:
102:
103:
104:
105:
106: 107: 108:
109: public function getTables()
110: {
111: $tables = array();
112: foreach ($this->connection->query('SELECT * FROM cat') as $row) {
113: if ($row[1] === 'TABLE' || $row[1] === 'VIEW') {
114: $tables[] = array(
115: 'name' => $row[0],
116: 'view' => $row[1] === 'VIEW',
117: );
118: }
119: }
120: return $tables;
121: }
122:
123:
124: 125: 126:
127: public function getColumns($table)
128: {
129: throw new NotImplementedException;
130: }
131:
132:
133: 134: 135:
136: public function getIndexes($table)
137: {
138: throw new NotImplementedException;
139: }
140:
141:
142: 143: 144:
145: public function getForeignKeys($table)
146: {
147: throw new NotImplementedException;
148: }
149:
150:
151: 152: 153:
154: public function isSupported($item)
155: {
156: return $item === self::SUPPORT_COLUMNS_META || $item === self::SUPPORT_SEQUENCE;
157: }
158:
159: }
160: