summaryrefslogtreecommitdiff
path: root/src/lib/DB.class.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/DB.class.php')
-rw-r--r--src/lib/DB.class.php43
1 files changed, 38 insertions, 5 deletions
diff --git a/src/lib/DB.class.php b/src/lib/DB.class.php
index 9f14161..5954726 100644
--- a/src/lib/DB.class.php
+++ b/src/lib/DB.class.php
@@ -4,6 +4,39 @@ require_once('Auth.class.php');
require_once('Login.class.php');
class DB {
+ public static function set($table, $unit, $key, $value, $orig_value) {
+ $value_base = $orig_value;
+
+ $doit = true;
+ $forked = false;
+ $have_old = ($value_base!==null);
+ if ($have_old) {
+ $we_changed_it = $value_base != $value;
+ if ($we_changed_it) {
+ $value_fork = $this->getConfString($key);
+ $someone_else_changed_it =
+ $value_fork != $value_base;
+ if ($someone_else_changed_it) {
+ if ($value == $value_fork) {
+ // we might as well not have
+ $we_changed_it = false;
+ } else {
+ $forked = true;
+ }
+ }
+ }
+ if (!$we_changed_it) {
+ $doit = false;// nothing to do
+ }
+ }
+ if ($doit) {
+ return $this->setConf($key, $value);
+ }
+ if ($forked) {
+ return $value_fork;
+ }
+ }
+
public static function get($table, $unit, $key) {
switch ($table) {
case 'conf':
@@ -17,7 +50,7 @@ class DB {
return false;
}
}
- public static function set($table, $unit, $key, $value) {
+ public static function raw_set($table, $unit, $key, $value) {
switch ($table) {
case 'conf':
case 'plugins':
@@ -49,15 +82,15 @@ class DB {
break;
case 'auth_user':
$editable = $editable && $logged_in_user->isAdmin();
- $value = $user->isUser();
+ $value = $user->isUser()?'true':'false';
break;
case 'auth_admin':
$editable = $editable && $logged_in_user->isAdmin();
- $value = $user->isAdmin();
+ $value = $user->isAdmin()?'true':'false';
break;
case 'auth_delete':
$editable = $editable && $logged_in_user->isAdmin();
- $value = false;
+ $value = 'false';
break;
default:
$value = $user->getConf($key);
@@ -128,4 +161,4 @@ class DB {
return $db->setPluginConf($plugin, $key, $value);
}
}
-} \ No newline at end of file
+}