db->fetchOne('SELECT value FROM settings WHERE key_name = ?', [$key]); if ($row === null || $row['value'] === null || $row['value'] === '') { return $default; } return (string) $row['value']; } /** * Installationsgeheimnis fuer signierte Tokens. Wird beim ersten * Bedarf erzeugt und bleibt danach unveraendert. */ public function secret(): string { $secret = $this->get(self::APP_SECRET); if ($secret === null || strlen($secret) < 32) { $secret = bin2hex(random_bytes(32)); $this->set(self::APP_SECRET, $secret); } return $secret; } public function set(string $key, string $value): void { $now = gmdate('Y-m-d H:i:s'); $exists = $this->db->fetchValue('SELECT 1 FROM settings WHERE key_name = ?', [$key]); if ($exists !== null) { $this->db->execute( 'UPDATE settings SET value = ?, updated_at = ? WHERE key_name = ?', [$value, $now, $key], ); return; } $this->db->execute( 'INSERT INTO settings (key_name, value, updated_at) VALUES (?, ?, ?)', [$key, $value, $now], ); } }