diff --git a/lua/bladw_warn/server/sv_storage.lua b/lua/bladw_warn/server/sv_storage.lua new file mode 100644 index 0000000..9be4608 --- /dev/null +++ b/lua/bladw_warn/server/sv_storage.lua @@ -0,0 +1,47 @@ +BladW = BladW or {} +BladW.Warn = BladW.Warn or {} + +-- stockage des warns : { [steamid64] = { { issuer, issuerid, time, reason, comment }, ... } } +local DIR = "bladw_warn" +local FILE = "bladw_warn/warns.json" + +BladW.Warn.Data = BladW.Warn.Data or {} + +function BladW.Warn.Save() + file.CreateDir(DIR) + file.Write(FILE, util.TableToJSON(BladW.Warn.Data)) +end + +function BladW.Warn.Load() + local raw = file.Read(FILE, "DATA") + BladW.Warn.Data = (raw and util.JSONToTable(raw)) or {} +end + +function BladW.Warn.Get(sid) + return BladW.Warn.Data[sid] or {} +end + +function BladW.Warn.AddWarn(sid, entry) + if not sid or sid == "" then return end + BladW.Warn.Data[sid] = BladW.Warn.Data[sid] or {} + table.insert(BladW.Warn.Data[sid], entry) + BladW.Warn.Save() +end + +function BladW.Warn.RemoveWarn(sid, index) + local t = BladW.Warn.Data[sid] + if t and t[index] then + table.remove(t, index) + if #t == 0 then BladW.Warn.Data[sid] = nil end + BladW.Warn.Save() + return true + end + return false +end + +function BladW.Warn.ClearWarns(sid) + BladW.Warn.Data[sid] = nil + BladW.Warn.Save() +end + +BladW.Warn.Load()