diff options
author | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2013-06-08 21:16:57 +0200 |
---|---|---|
committer | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2013-06-08 21:16:57 +0200 |
commit | bfd1ce5e53c57322e12025d796bea11994c0c1cc (patch) | |
tree | b16f75b88e50d2419f8dd866923162942c26ff5f /MCServer/Plugins/ProtectionAreas/Storage.lua | |
parent | ProtectionAreas: Added ProtListUsers, implemented ProtRemoveUser, fixed ProtDelID commands (diff) | |
download | cuberite-bfd1ce5e53c57322e12025d796bea11994c0c1cc.tar cuberite-bfd1ce5e53c57322e12025d796bea11994c0c1cc.tar.gz cuberite-bfd1ce5e53c57322e12025d796bea11994c0c1cc.tar.bz2 cuberite-bfd1ce5e53c57322e12025d796bea11994c0c1cc.tar.lz cuberite-bfd1ce5e53c57322e12025d796bea11994c0c1cc.tar.xz cuberite-bfd1ce5e53c57322e12025d796bea11994c0c1cc.tar.zst cuberite-bfd1ce5e53c57322e12025d796bea11994c0c1cc.zip |
Diffstat (limited to '')
-rw-r--r-- | MCServer/Plugins/ProtectionAreas/Storage.lua | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/MCServer/Plugins/ProtectionAreas/Storage.lua b/MCServer/Plugins/ProtectionAreas/Storage.lua index 118ab0434..defa9b394 100644 --- a/MCServer/Plugins/ProtectionAreas/Storage.lua +++ b/MCServer/Plugins/ProtectionAreas/Storage.lua @@ -379,6 +379,7 @@ function cStorage:ForEachUserInArea(a_AreaID, a_WorldName, a_Callback) assert(a_AreaID);
assert(a_WorldName);
assert(a_Callback);
+ assert(self);
-- Since in this version all the worlds share a single DB, the a_WorldName parameter is not actually used
-- But this may change in the future, when we have a per-world DB
@@ -402,3 +403,48 @@ end +--- Adds the specified usernames to the specified area, if not already present
+-- a_Users is an array table of usernames to add
+function cStorage:AddAreaUsers(a_AreaID, a_WorldName, a_AddedBy, a_Users)
+ assert(a_AreaID);
+ assert(a_WorldName);
+ assert(a_Users);
+ assert(self);
+
+ -- Remove from a_Users the usernames already present in the area
+ local sql = "SELECT UserName FROM AllowedUsers WHERE AreaID = " .. a_AreaID;
+ local function Remove(UserData, NumValues, Values, Names)
+ if (NumValues ~= 1) then
+ -- Invalid response format
+ return 0;
+ end
+ local DBName = Values[1];
+ -- Remove the name from a_Users, if exists
+ for idx, Name in ipairs(a_Users) do
+ if (Name == DBName) then
+ table.remove(a_Users, idx);
+ return 0;
+ end
+ end
+ return 0;
+ end
+ if (not(self:DBExec(sql, Remove))) then
+ LOGWARNING("SQL error while iterating through users");
+ return false;
+ end
+
+ -- Add the users
+ for idx, Name in ipairs(a_Users) do
+ local sql = "INSERT INTO AllowedUsers (AreaID, UserName) VALUES (" .. a_AreaID .. ", '" .. Name .. "')";
+ if (not(self:DBExec(sql))) then
+ LOGWARNING("SQL error while adding user " .. Name .. " to area " .. a_AreaID);
+ end
+ end
+
+ return true;
+end
+
+
+
+
+
|