- $ret = q("INSERT INTO `config` ( `cat`, `k`, `v` ) VALUES ( '%s', '%s', '%s' )
-ON DUPLICATE KEY UPDATE `v` = '%s'",
- dbesc($family),
- dbesc($key),
- dbesc($dbvalue),
- dbesc($dbvalue)
- );
+ if (($stored === $dbvalue) AND self::$in_db[$family][$key]) {
+ return true;
+ }
+
+ if ($family === 'config') {
+ $a->config[$key] = $dbvalue;
+ } elseif ($family != 'system') {
+ $a->config[$family][$key] = $dbvalue;
+ }
+
+ // Assign the just added value to the cache
+ self::$cache[$family][$key] = $dbvalue;
+
+ // manage array value
+ $dbvalue = (is_array($value) ? serialize($value) : $dbvalue);
+
+ if (is_null($stored) OR !self::$in_db[$family][$key]) {
+ $ret = q("INSERT INTO `config` (`cat`, `k`, `v`) VALUES ('%s', '%s', '%s') ON DUPLICATE KEY UPDATE `v` = '%s'",
+ dbesc($family),
+ dbesc($key),
+ dbesc($dbvalue),
+ dbesc($dbvalue)
+ );
+ } else {
+ $ret = q("UPDATE `config` SET `v` = '%s' WHERE `cat` = '%s' AND `k` = '%s'",
+ dbesc($dbvalue),
+ dbesc($family),
+ dbesc($key)
+ );
+ }