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': case 'plugins': return self::admin_get($unit, $key); break; case 'users': return self::user_get($unit, $key); break; default: return false; } } public static function raw_set($table, $unit, $key, $value) { switch ($table) { case 'conf': case 'plugins': return self::admin_get($unit, $key, $value); break; case 'users': return self::user_set($unit, $key, $value); break; default: return false; } } private static function user_get($uid, $key) { $user = Auth::getInstance($uid); $logged_in_user = Auth::getInstance(Login::isLoggedIn()); $post_key = $key."[$uid]"; @$value = $_POST[$post_key]; $editable = $user->canEdit(); switch ($key) { case 'auth_uid': $value = $user->getUID(); $editable = false; break; case 'auth_name': $value = $user->getName(); break; case 'auth_user': $editable = $editable && $logged_in_user->isAdmin(); $value = $user->isUser()?'true':'false'; break; case 'auth_admin': $editable = $editable && $logged_in_user->isAdmin(); $value = $user->isAdmin()?'true':'false'; break; case 'auth_delete': $editable = $editable && $logged_in_user->isAdmin(); $value = 'false'; break; default: $value = $user->getConf($key); if ($value===false) $value=''; break; } return array('value'=>$value, 'post_key'=>$post_key, 'editable'=>$editable); } private static function user_set($uid, $key, $value) { $user = Auth::getInstance($uid); switch ($key) { case 'auth_uid': return false; break; case 'auth_name': return $user->setName($value); break; case 'auth_user': return $user->setUser($value=='true'); break; case 'auth_admin': return $user->setAdmin($value=='true'); break; case 'auth_delete': if ($value=='true') return $user->delete(); default: return $user->setConf($key, $value); break; } } private static function admin_get($plugin, $key) { $db = Database::getInstance(); $user = Auth::getInstance(Login::isLoggedIn()); if ($user->isAdmin()) { $editable = true; switch ($plugin) { case 'system': $value = $db->getSysConf($key); break; default: $value = $db->getPluginConf($plugin, $key); break; } } else { $editable = false; $value = false; } return array('value'=>$value, 'post_key'=>'to be implemented',// FIXME 'editable'=>$editable); } private static function admin_set($plugin, $key, $value) { $db = Database::getInstance(); $user = Auth::getInstance(Login::isLoggedIn()); if (!$user->isAdmin()) { return false; } switch ($plugin) { case 'system': return $db->setSysConf($key, $value); default: return $db->setPluginConf($plugin, $key, $value); } } }