[IMP] on the mini fly. With gzip openerp 7 js is around 500kb.
[odoo/odoo.git] / addons / web_calendar / static / lib / dhtmlxScheduler / codebase / connector / db_oracle.php
1 <?php\r
2 require_once("db_common.php");\r
3 /*! Implementation of DataWrapper for Oracle\r
4 **/\r
5 class OracleDBDataWrapper extends DBDataWrapper{\r
6         private $last_id=""; //id of previously inserted record\r
7         private $insert_operation=false; //flag of insert operation\r
8         \r
9         public function query($sql){\r
10                 LogMaster::log($sql);\r
11                 $stm = oci_parse($this->connection,$sql);\r
12                 if ($stm===false) throw new Exception("Oracle - sql parsing failed\n".oci_error($this->connection));\r
13                 \r
14                 $out = array(0=>null);\r
15                 if($this->insert_operation){\r
16                         oci_bind_by_name($stm,":outID",$out[0],999);\r
17                         $this->insert_operation=false;\r
18                 }\r
19                 \r
20                 \r
21                 $mode = ($this->is_record_transaction() || $this->is_global_transaction())?OCI_DEFAULT:OCI_COMMIT_ON_SUCCESS;\r
22                 $res=oci_execute($stm,$mode);\r
23                 if ($res===false) throw new Exception("Oracle - sql execution failed\n".oci_error($this->connection));\r
24                 \r
25                 $this->last_id=$out[0];\r
26                 \r
27                 return $stm;\r
28         }\r
29         \r
30         public function get_next($res){\r
31                 $data = oci_fetch_assoc($res);\r
32                 if (array_key_exists("VALUE",$data))\r
33                         $data["value"]=$data["VALUE"];\r
34                 return $data;\r
35         }\r
36         \r
37         protected function get_new_id(){\r
38                 /*\r
39                 Oracle doesn't support identity or auto-increment fields\r
40                 Insert SQL returns new ID value, which stored in last_id field\r
41                 */\r
42                 return $this->last_id;\r
43         }\r
44         \r
45         protected function insert_query($data,$request){\r
46                 $sql = parent::insert_query($data,$request);\r
47                 $this->insert_operation=true;\r
48                 return $sql." returning ".$this->config->id["db_name"]." into :outID";\r
49         }               \r
50         \r
51         protected function select_query($select,$from,$where,$sort,$start,$count){\r
52                 $sql="SELECT ".$select." FROM ".$from;\r
53                 if ($where) $sql.=" WHERE ".$where;\r
54                 if ($sort) $sql.=" ORDER BY ".$sort;\r
55                 if ($start || $count) \r
56                         $sql="SELECT * FROM ( select /*+ FIRST_ROWS(".$count.")*/dhx_table.*, ROWNUM rnum FROM (".$sql.") dhx_table where ROWNUM <= ".($count+$start)." ) where rnum >".$start;\r
57                 return $sql;\r
58         }\r
59 \r
60         public function escape($data){\r
61                 /*\r
62                 as far as I can see the only way to escape data is by using oci_bind_by_name\r
63                 while it is neat solution in common case, it conflicts with existing SQL building logic\r
64                 fallback to simple escaping\r
65                 */\r
66                 return str_replace("'","''",$data);\r
67         }\r
68         \r
69         public function begin_transaction(){\r
70                 //auto-start of transaction\r
71         }\r
72         public function commit_transaction(){\r
73                 oci_commit($this->connection);\r
74         }\r
75         public function rollback_transaction(){\r
76                 oci_rollback($this->connection);\r
77         }       \r
78 }\r
79 ?>