1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10: 11:
12:
13:
14:
15: 16: 17: 18: 19: 20:
21: class NOdbcDriver extends NObject implements ISupplementalDriver
22: {
23:
24: public $supports = array('meta' => TRUE);
25:
26:
27: private $connection;
28:
29:
30:
31: public function __construct(NConnection $connection, array $options)
32: {
33: $this->connection = $connection;
34: }
35:
36:
37:
38:
39:
40:
41:
42: 43: 44:
45: public function delimite($name)
46: {
47: return '[' . str_replace(array('[', ']'), array('[[', ']]'), $name) . ']';
48: }
49:
50:
51:
52: 53: 54:
55: public function formatDateTime(DateTime $value)
56: {
57: return $value->format("#m/d/Y H:i:s#");
58: }
59:
60:
61:
62: 63: 64:
65: public function formatLike($value, $pos)
66: {
67: $value = strtr($value, array("'" => "''", '%' => '[%]', '_' => '[_]', '[' => '[[]'));
68: return ($pos <= 0 ? "'%" : "'") . $value . ($pos >= 0 ? "%'" : "'");
69: }
70:
71:
72:
73: 74: 75:
76: public function applyLimit(&$sql, $limit, $offset)
77: {
78:
79: if ($limit >= 0) {
80: $sql = 'SELECT TOP ' . (int) $limit . ' * FROM (' . $sql . ')';
81: }
82:
83: if ($offset) {
84: throw new InvalidArgumentException('Offset is not implemented in driver odbc.');
85: }
86: }
87:
88:
89:
90: 91: 92:
93: public function normalizeRow($row, $statement)
94: {
95: return $row;
96: }
97:
98: }
99: