generic ssh
[configmanager.git] / lib / db.php
1 <?php
2
3 function db_getDB()
4 {
5         global $DB_URL;
6         
7         if(!isset($IS_WEB_REQUEST)) {
8                 // only the web requests are allowed to create dbs
9                 return false;
10         }
11         
12         
13         $dbobject = false;
14     global $BASE_DIR, $DB_HANDLE;
15     if($DB_HANDLE != false) return $DB_HANDLE;
16         try {
17                 $dbobject = new PDO("$DB_URL");
18         } catch(PDOException $exep) {
19                 error_log("execpt on db open");
20                 return false;
21         }
22         
23         $DB_HANDLE = $dbobject;
24
25         return $dbobject;
26 }
27
28 function db_createDB()
29 {
30         // theres not much to do yet with only sqlite support
31 }
32
33 // all columns end up as text
34 function db_createTable($tablename)
35 {
36         $db = db_getDB();
37         
38         if(!$db) return false;
39         
40         if(db_tableExists($tablename)) return true;
41         
42         $sql = "create table \"$tablename\" (\"".$tablename."_id\" INTEGER PRIMARY KEY AUTOINCREMENT";
43         for($i=1; $i < func_num_args(); $i++) {
44                 $colname = func_get_arg($i);
45                 $sql .= ", $colname text";
46         }
47         $sql .= ")";
48         
49         //echo "sql: $sql\n";
50         $db->query($sql);
51 }
52
53 function db_insertData($tablename)
54 {
55
56         $db = db_getDB();
57         
58         if(!$db) return false;
59         
60         $sql = "insert into \"$tablename\" values (NULL";
61         for($i=1; $i < func_num_args(); $i++) {
62                 $sql .= ",'".func_get_arg($i)."'";
63         }
64         $sql .=")";
65         
66         $db->query($sql);
67 }
68
69 function db_selectData($tablename, $column="", $value="")
70 {
71         $db = db_getDB();
72         
73         if(!$db) return false;
74         
75         if($column != "") $extra = " where $column like '%$value%'";
76         else $extra = "";
77         $sql = "select * from \"$tablename\"$extra";
78         $res = $db->query($sql);
79         if(!$res) return false;
80         $data = $res->fetchAll();
81         
82         return $data;
83 }
84
85 function db_deleteData($tablename, $column, $value)
86 {
87         $db = db_getDB();
88         
89         if(!$db) return false;
90         
91         $sql = "delete from \"$tablename\" where $column like '%$value%'";
92         //echo "Sql is $sql\n";
93         return $db->query($sql);
94         
95 }
96
97 function db_updateData($tablename, $column, $newdata, $wherecol, $wheredata, $exact=true)
98 {
99         $db = db_getDB();
100         
101         if(!$db) return false;
102         
103         if($exact) $sql = "update \"$tablename\" set $column='$newdata' where $wherecol='$wheredata'";
104         else $sql = "update \"$tablename\" set $column='$newdata' where $wherecol like '$wheredata'";
105         return $db->query($sql);
106 }
107
108 function db_deleteTable($tablename)
109 {
110         $db = db_getDB();
111         
112         if(!$db) return false;
113         
114         $sql = "drop table $tablename";
115         
116         return $db->query($sql);
117 }
118
119 function db_tableExists($tablename)
120 {
121         $db = db_getDB();
122         
123         if(!$db) return false;
124         
125         $sql = "select count(*) from sqlite_master where type='table' and name='$tablename'";
126         $res = $db->query($sql);
127         
128         $value = $res->fetchColumn();
129         
130         if($value == 1) return true;
131         else return false;
132 }
133
134 function db_getTables()
135 {
136         $db = db_getDB();
137         
138         if(!$db) return false;
139         
140         $sql = "select name from sqlite_master where type='table' and name not like 'sqlite_%'";
141         $res = $db->query($sql);
142         
143         return $res->fetchAll();
144 }
145 ?>