499c97b2b2cb7d3dc1c3fc6e2dab330e9ba16fc1
[glcas.git] / libglcas / config.php
1 <?php
2
3 class GLCASConfig {
4         
5         function __construct()
6         {
7                 $this->configPath = "";
8                 $this->config = "";
9                 $this->dbobject = false;
10         }
11         
12         function loadConfig($configpath)
13         {
14                 error_log("loadConfig $configpath");
15                 $this->configPath = $configpath;
16                 
17                 try {
18                         $this->dbobject = new PDO("sqlite:$configpath");
19                 } catch(PDOException $exep) {
20                         error_log("execpt on db open");
21                         return false;
22                 }
23                 
24                 $this->setupTables();
25         }
26         
27         function setConfig($configname, $configval)
28         {
29                 $sql = "delete from config where configname='$configname'";
30                 $this->dbobject->query($sql);
31                 $sql = "insert into config values ('$configname', '$configval')";
32                 $this->dbobject->query($sql);
33         }
34         
35         function getConfig($configname)
36         {
37                 $sql = "select configvar from config where configname='$configname'";
38                 $res = $this->dbobject->query($sql);
39                 $val = false;
40                 foreach($res as $row) {
41                         $val = $row[0];
42                         error_log("foreach, $val\n");
43                 }
44                 
45                 return $val;
46         }
47         
48         function delConfig($configname)
49         {
50                 $sql = "delete from config where configname='$configname'";
51                 $this->dbobject->query($sql);
52                 
53                 return true;
54         }
55         
56         function addData($configType, $configCat, $configName, $configVal)
57         {
58                 $sql = "insert into datatable values (NULL, '$configType', '$configCat', $configName', '$configVal')";
59                 $this->dbobject->query($sql);
60                 
61         }
62         
63         function saveConfig()
64         {
65                 // stub function for old config method reverse compatability
66         }
67         
68         function getData($configType, $configCat="", $configName="")
69         {
70                 $ret = null;
71                 $nret = 0;
72                 $haveWhere = false;
73                 if($configCat != "") {
74                         $haveWhere = true;
75                         $wheredata = "where data_category='$configCat'";
76                 }
77                 
78                 if($configName != "") {
79                         if($haveWhere) {
80                                 $wheredata .= " and data_name='$configName'";
81                         } else {
82                                 $wheredata = "where data_name='$configName'";
83                         }
84                 }
85                 
86                 $sql = "select data_val,data_category,data_name from datatable $wheredata";
87                 $res = $this->dbobject->query($sql);
88                 
89                 foreach($res as $row) {
90                         $ret[$nret]["val"] = $row[0];
91                         $ret[$nret]["cat"] = $row[1];
92                         $ret[$nret]["name"] = $row[2];
93                         $nret++;
94                 }
95                 
96                 return $ret;
97         }
98         
99         function delData($configType, $configName, $configVal)
100         {
101                 $sql = "delete from datatable where data_type='$configType' and data_name='$configName' and data_val='$configVal')";
102                 $this->dbobject->query($sql);
103         }
104         
105         function delAllDAta($configType, $configCat)
106         {
107                 $sql = "delete from datatable where data_type='$configType' and data_name='$configName'";
108                 //echo "sql is $sql\n";
109                 $this->dbobject->query($sql);
110         }
111         
112         function setupTables()
113         {
114                 $sql = "SELECT count(name) FROM sqlite_master WHERE type='table' AND name='config';";
115                 $res = $this->dbobject->query($sql);
116                 
117                 foreach($res as $row) {
118                         if($row[0] > 0) {
119                                 //echo "Tables exist\n";
120                                 return;
121                         }
122                 }
123                 
124                 
125                 $sql = 'CREATE TABLE "config" ( "configname" TEXT,"configvar" TEXT);';
126                 $this->dbobject->query($sql);
127                 
128                 $sql = 'CREATE TABLE "datatable" ("data_id" INTEGER PRIMARY KEY AUTOINCREMENT,"data_category" TEXT,"data_type" TEXT,"data_name" TEXT,"data_val" TEXT);';
129                 $this->dbobject->query($sql);
130
131                 $sql = 'CREATE TABLE sqlite_sequence(name,seq);';
132                 $this->dbobject->query($sql);
133         }
134         
135         private $configPath;
136         private $dbobject;
137         
138 }
139                 
140 function glcas_getWebConfigPath()
141 {
142         global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
143
144         // if you wish to add more places to find webconfig, add them here.
145         $configpath = false;
146         if(file_exists($WEB_ROOT_FS."/../var/glcas/webconfig")) return realpath($WEB_ROOT_FS."/../var/glcas/webconfig");
147         if(file_exists("/var/lib/glcas/webconfig")) return realpath("/var/lib/glcas/webconfig");
148         if(file_exists("/var/run/glcas/webconfig")) return realpath("/var/run/glcas/webconfig");
149         
150         return $configpath;
151         //return false; 
152 }
153
154                 
155
156 ?>