From ddd1046cdf03ee9df49543da5a11c804c1498a41 Mon Sep 17 00:00:00 2001 From: paulr Date: Mon, 8 Aug 2011 05:08:38 +1000 Subject: [PATCH] moved to an sqlite database for config rather then flat text file --- libglcas/config_new.php | 140 +++++++++++++++++++++++++++++++++++++++++++++++ unittests/confignew.php | 32 +++++++++++ 2 files changed, 172 insertions(+), 0 deletions(-) create mode 100644 libglcas/config_new.php create mode 100644 unittests/confignew.php diff --git a/libglcas/config_new.php b/libglcas/config_new.php new file mode 100644 index 0000000..da53ed6 --- /dev/null +++ b/libglcas/config_new.php @@ -0,0 +1,140 @@ +configPath = ""; + $this->config = ""; + $this->dbobject = false; + } + + function loadConfig($configpath) + { + error_log("loadConfig $configpath"); + $this->configPath = $configpath.".db"; + + try { + $this->dbobject = new PDO("sqlite:".$this->configPath); + } catch(PDOException $exep) { + error_log("execpt on db open"); + return false; + } + + $this->setupTables(); + } + + function setConfig($configname, $configval) + { + $sql = "delete from config where configname='$configname'"; + $this->dbobject->query($sql); + $sql = "insert into config values ('$configname', '$configval')"; + $this->dbobject->query($sql); + } + + function getConfig($configname) + { + $sql = "select configvar from config where configname='$configname'"; + $res = $this->dbobject->query($sql); + $val = null; + foreach($res as $row) { + $val = $row[0]; + error_log("foreach, $val\n"); + } + + return $val; + } + + function delConfig($configname) + { + $sql = "delete from config where configname='$configname'"; + $this->dbobject->query($sql); + + return true; + } + + function addData($configType, $configName, $configVal) + { + $sql = "insert into datatable values (NULL, '$configType', '$configName', '$configVal')"; + $this->dbobject->query($sql); + + } + + function getData($configType, $configName="") + { + $ret = null; + $nret = 0; + if($configName == "") { + $sql = "select data_val,data_name from datatable where data_type='$configType'"; + } else { + $sql = "select data_val from datatable where data_type='$configType' and data_name='$configName'"; + } + $res = $this->dbobject->query($sql); + + foreach($res as $row) { + $ret[$nret]["val"] = $row[0]; + if($configName == "") $ret[$nret]["name"] = $row[1]; + $nret++; + } + + return $ret; + } + + function delData($configType, $configName, $configVal) + { + $sql = "delete from datatable where data_type='$configType' and data_name='$configName' and data_val='$configVal')"; + $this->dbobject->query($sql); + } + + function delAllDAta($configType, $configName) + { + $sql = "delete from datatable where data_type='$configType' and data_name='$configName'"; + //echo "sql is $sql\n"; + $this->dbobject->query($sql); + } + + function setupTables() + { + $sql = "SELECT count(name) FROM sqlite_master WHERE type='table' AND name='config';"; + $res = $this->dbobject->query($sql); + + foreach($res as $row) { + if($row[0] > 0) { + echo "Tables exist\n"; + return; + } + } + + + $sql = 'CREATE TABLE "config" ( "configname" TEXT,"configvar" TEXT);'; + $this->dbobject->query($sql); + + $sql = 'CREATE TABLE "datatable" ("data_id" INTEGER PRIMARY KEY AUTOINCREMENT,"data_type" TEXT,"data_name" TEXT,"data_val" TEXT);'; + $this->dbobject->query($sql); + + $sql = 'CREATE TABLE sqlite_sequence(name,seq);'; + $this->dbobject->query($sql); + } + + private $configPath; + private $dbobject; + +} + +function glcas_getWebConfigPath() +{ + global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL; + + // if you wish to add more places to find webconfig, add them here. + $configpath = false; + if(file_exists($WEB_ROOT_FS."/../var/glcas/webconfig")) return realpath($WEB_ROOT_FS."/../var/glcas/webconfig"); + if(file_exists("/var/lib/glcas/webconfig")) return realpath("/var/lib/glcas/webconfig"); + if(file_exists("/var/run/glcas/webconfig")) return realpath("/var/run/glcas/webconfig"); + + return $configpath; + //return false; +} + + + +?> diff --git a/unittests/confignew.php b/unittests/confignew.php new file mode 100644 index 0000000..a3e9760 --- /dev/null +++ b/unittests/confignew.php @@ -0,0 +1,32 @@ +loadConfig("/tmp/.tmp.lk.db"); + +$n->setConfig("name1", "val1"); +$n->setConfig("name2", "val2"); +$n->setConfig("name3", "val3"); +echo "configs: ".$n->getconfig("name1").", ".$n->getconfig("name2").", ".$n->getconfig("name3")."\n"; + +$n->setConfig("name3", "newval3"); +echo "configs: ".$n->getconfig("name1").", ".$n->getconfig("name2").", ".$n->getconfig("name3")."\n"; + +$n->delAllData("mine1", "name1"); +$n->delAllData("mine1", "name2"); + +$n->addData("mine1", "name1", "data1" ); +$n->addData("mine1", "name1", "data2" ); +$n->addData("mine1", "name2", "data3" ); + +$val = $n->getData("mine1"); + +echo "val is now:\n"; +print_r($val); + +$val = $n->getData("mine1", "name1"); +echo "val is now:\n"; +print_r($val); + + +?> \ No newline at end of file -- 1.7.0.4