Fixed /region allow adding an already existing user id to the database multiple times.
This commit is contained in:
parent
192210c3f4
commit
f7edbe55d6
1 changed files with 16 additions and 10 deletions
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue