Fixed /region allow adding an already existing user id to the database multiple times.

This commit is contained in:
CoderCow 2013-06-27 10:46:59 +02:00
parent 192210c3f4
commit f7edbe55d6

View file

@ -381,30 +381,36 @@ namespace TShockAPI.DB
return false; return false;
} }
public bool AddNewUser(string regionName, String userName) public bool AddNewUser(string regionName, string userName)
{ {
try try
{ {
string MergedIDs = string.Empty; string mergedIDs = string.Empty;
using ( using (
var reader = database.QueryReader("SELECT * FROM Regions WHERE RegionName=@0 AND WorldID=@1", regionName, var reader = database.QueryReader("SELECT UserIds FROM Regions WHERE RegionName=@0 AND WorldID=@1", regionName,
Main.worldID.ToString())) Main.worldID.ToString()))
{ {
if (reader.Read()) if (reader.Read())
MergedIDs = reader.Get<string>("UserIds"); mergedIDs = reader.Get<string>("UserIds");
} }
if (string.IsNullOrEmpty(MergedIDs)) string userIdToAdd = Convert.ToString(TShock.Users.GetUserID(userName));
MergedIDs = Convert.ToString(TShock.Users.GetUserID(userName)); string[] ids = mergedIDs.Split(',');
else // Is the user already allowed to the region?
MergedIDs = MergedIDs + "," + Convert.ToString(TShock.Users.GetUserID(userName)); if (ids.Contains(userIdToAdd))
return true;
int q = database.Query("UPDATE Regions SET UserIds=@0 WHERE RegionName=@1 AND WorldID=@2", MergedIDs, if (string.IsNullOrEmpty(mergedIDs))
mergedIDs = userIdToAdd;
else
mergedIDs = string.Concat(mergedIDs, ",", userIdToAdd);
int q = database.Query("UPDATE Regions SET UserIds=@0 WHERE RegionName=@1 AND WorldID=@2", mergedIDs,
regionName, Main.worldID.ToString()); regionName, Main.worldID.ToString());
foreach (var r in Regions) foreach (var r in Regions)
{ {
if (r.Name == regionName && r.WorldID == Main.worldID.ToString()) if (r.Name == regionName && r.WorldID == Main.worldID.ToString())
r.setAllowedIDs(MergedIDs); r.setAllowedIDs(mergedIDs);
} }
return q != 0; return q != 0;
} }