diff options
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLEstateData.cs | 25 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLEstateData.cs | 175 | ||||
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteEstateData.cs | 25 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs | 6 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 115 | ||||
-rw-r--r-- | OpenSim/Services/Interfaces/IUserAccountService.cs | 4 |
6 files changed, 302 insertions, 48 deletions
diff --git a/OpenSim/Data/MSSQL/MSSQLEstateData.cs b/OpenSim/Data/MSSQL/MSSQLEstateData.cs index 1624f56..474f706 100644 --- a/OpenSim/Data/MSSQL/MSSQLEstateData.cs +++ b/OpenSim/Data/MSSQL/MSSQLEstateData.cs | |||
@@ -346,6 +346,31 @@ namespace OpenSim.Data.MSSQL | |||
346 | } | 346 | } |
347 | } | 347 | } |
348 | } | 348 | } |
349 | |||
350 | public EstateSettings LoadEstateSettings(int estateID) | ||
351 | { | ||
352 | return new EstateSettings(); | ||
353 | } | ||
354 | |||
355 | public List<int> GetEstates(string search) | ||
356 | { | ||
357 | return new List<int>(); | ||
358 | } | ||
359 | |||
360 | public bool LinkRegion(UUID regionID, int estateID) | ||
361 | { | ||
362 | return false; | ||
363 | } | ||
364 | |||
365 | public List<UUID> GetRegions(int estateID) | ||
366 | { | ||
367 | return new List<UUID>(); | ||
368 | } | ||
369 | |||
370 | public bool DeleteEstate(int estateID) | ||
371 | { | ||
372 | return false; | ||
373 | } | ||
349 | #endregion | 374 | #endregion |
350 | } | 375 | } |
351 | } | 376 | } |
diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs index e94dcda..7fe1fcc 100644 --- a/OpenSim/Data/MySQL/MySQLEstateData.cs +++ b/OpenSim/Data/MySQL/MySQLEstateData.cs | |||
@@ -123,50 +123,57 @@ namespace OpenSim.Data.MySQL | |||
123 | 123 | ||
124 | public EstateSettings LoadEstateSettings(UUID regionID, bool create) | 124 | public EstateSettings LoadEstateSettings(UUID regionID, bool create) |
125 | { | 125 | { |
126 | EstateSettings es = new EstateSettings(); | ||
127 | es.OnSave += StoreEstateSettings; | ||
128 | |||
129 | string sql = "select estate_settings." + String.Join(",estate_settings.", FieldList) + | 126 | string sql = "select estate_settings." + String.Join(",estate_settings.", FieldList) + |
130 | " from estate_map left join estate_settings on estate_map.EstateID = estate_settings.EstateID where estate_settings.EstateID is not null and RegionID = ?RegionID"; | 127 | " from estate_map left join estate_settings on estate_map.EstateID = estate_settings.EstateID where estate_settings.EstateID is not null and RegionID = ?RegionID"; |
131 | 128 | ||
129 | using (MySqlCommand cmd = new MySqlCommand()) | ||
130 | { | ||
131 | cmd.CommandText = sql; | ||
132 | cmd.Parameters.AddWithValue("?RegionID", regionID.ToString()); | ||
133 | |||
134 | return DoLoad(cmd, regionID, create); | ||
135 | } | ||
136 | } | ||
137 | |||
138 | private EstateSettings DoLoad(MySqlCommand cmd, UUID regionID, bool create) | ||
139 | { | ||
140 | EstateSettings es = new EstateSettings(); | ||
141 | es.OnSave += StoreEstateSettings; | ||
142 | |||
132 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 143 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
133 | { | 144 | { |
134 | dbcon.Open(); | 145 | dbcon.Open(); |
135 | 146 | ||
147 | cmd.Connection = dbcon; | ||
148 | |||
136 | bool found = false; | 149 | bool found = false; |
137 | 150 | ||
138 | using (MySqlCommand cmd = dbcon.CreateCommand()) | 151 | using (IDataReader r = cmd.ExecuteReader()) |
139 | { | 152 | { |
140 | cmd.CommandText = sql; | 153 | if (r.Read()) |
141 | cmd.Parameters.AddWithValue("?RegionID", regionID.ToString()); | ||
142 | |||
143 | using (IDataReader r = cmd.ExecuteReader()) | ||
144 | { | 154 | { |
145 | if (r.Read()) | 155 | found = true; |
146 | { | ||
147 | found = true; | ||
148 | 156 | ||
149 | foreach (string name in FieldList) | 157 | foreach (string name in FieldList) |
158 | { | ||
159 | if (m_FieldMap[name].GetValue(es) is bool) | ||
150 | { | 160 | { |
151 | if (m_FieldMap[name].GetValue(es) is bool) | 161 | int v = Convert.ToInt32(r[name]); |
152 | { | 162 | if (v != 0) |
153 | int v = Convert.ToInt32(r[name]); | 163 | m_FieldMap[name].SetValue(es, true); |
154 | if (v != 0) | ||
155 | m_FieldMap[name].SetValue(es, true); | ||
156 | else | ||
157 | m_FieldMap[name].SetValue(es, false); | ||
158 | } | ||
159 | else if (m_FieldMap[name].GetValue(es) is UUID) | ||
160 | { | ||
161 | UUID uuid = UUID.Zero; | ||
162 | |||
163 | UUID.TryParse(r[name].ToString(), out uuid); | ||
164 | m_FieldMap[name].SetValue(es, uuid); | ||
165 | } | ||
166 | else | 164 | else |
167 | { | 165 | m_FieldMap[name].SetValue(es, false); |
168 | m_FieldMap[name].SetValue(es, r[name]); | 166 | } |
169 | } | 167 | else if (m_FieldMap[name].GetValue(es) is UUID) |
168 | { | ||
169 | UUID uuid = UUID.Zero; | ||
170 | |||
171 | UUID.TryParse(r[name].ToString(), out uuid); | ||
172 | m_FieldMap[name].SetValue(es, uuid); | ||
173 | } | ||
174 | else | ||
175 | { | ||
176 | m_FieldMap[name].SetValue(es, r[name]); | ||
170 | } | 177 | } |
171 | } | 178 | } |
172 | } | 179 | } |
@@ -179,45 +186,45 @@ namespace OpenSim.Data.MySQL | |||
179 | 186 | ||
180 | names.Remove("EstateID"); | 187 | names.Remove("EstateID"); |
181 | 188 | ||
182 | sql = "insert into estate_settings (" + String.Join(",", names.ToArray()) + ") values ( ?" + String.Join(", ?", names.ToArray()) + ")"; | 189 | string sql = "insert into estate_settings (" + String.Join(",", names.ToArray()) + ") values ( ?" + String.Join(", ?", names.ToArray()) + ")"; |
183 | 190 | ||
184 | using (MySqlCommand cmd = dbcon.CreateCommand()) | 191 | using (MySqlCommand cmd2 = dbcon.CreateCommand()) |
185 | { | 192 | { |
186 | cmd.CommandText = sql; | 193 | cmd2.CommandText = sql; |
187 | cmd.Parameters.Clear(); | 194 | cmd2.Parameters.Clear(); |
188 | 195 | ||
189 | foreach (string name in FieldList) | 196 | foreach (string name in FieldList) |
190 | { | 197 | { |
191 | if (m_FieldMap[name].GetValue(es) is bool) | 198 | if (m_FieldMap[name].GetValue(es) is bool) |
192 | { | 199 | { |
193 | if ((bool)m_FieldMap[name].GetValue(es)) | 200 | if ((bool)m_FieldMap[name].GetValue(es)) |
194 | cmd.Parameters.AddWithValue("?" + name, "1"); | 201 | cmd2.Parameters.AddWithValue("?" + name, "1"); |
195 | else | 202 | else |
196 | cmd.Parameters.AddWithValue("?" + name, "0"); | 203 | cmd2.Parameters.AddWithValue("?" + name, "0"); |
197 | } | 204 | } |
198 | else | 205 | else |
199 | { | 206 | { |
200 | cmd.Parameters.AddWithValue("?" + name, m_FieldMap[name].GetValue(es).ToString()); | 207 | cmd2.Parameters.AddWithValue("?" + name, m_FieldMap[name].GetValue(es).ToString()); |
201 | } | 208 | } |
202 | } | 209 | } |
203 | 210 | ||
204 | cmd.ExecuteNonQuery(); | 211 | cmd2.ExecuteNonQuery(); |
205 | 212 | ||
206 | cmd.CommandText = "select LAST_INSERT_ID() as id"; | 213 | cmd2.CommandText = "select LAST_INSERT_ID() as id"; |
207 | cmd.Parameters.Clear(); | 214 | cmd2.Parameters.Clear(); |
208 | 215 | ||
209 | using (IDataReader r = cmd.ExecuteReader()) | 216 | using (IDataReader r = cmd2.ExecuteReader()) |
210 | { | 217 | { |
211 | r.Read(); | 218 | r.Read(); |
212 | es.EstateID = Convert.ToUInt32(r["id"]); | 219 | es.EstateID = Convert.ToUInt32(r["id"]); |
213 | } | 220 | } |
214 | 221 | ||
215 | cmd.CommandText = "insert into estate_map values (?RegionID, ?EstateID)"; | 222 | cmd2.CommandText = "insert into estate_map values (?RegionID, ?EstateID)"; |
216 | cmd.Parameters.AddWithValue("?RegionID", regionID.ToString()); | 223 | cmd2.Parameters.AddWithValue("?RegionID", regionID.ToString()); |
217 | cmd.Parameters.AddWithValue("?EstateID", es.EstateID.ToString()); | 224 | cmd2.Parameters.AddWithValue("?EstateID", es.EstateID.ToString()); |
218 | 225 | ||
219 | // This will throw on dupe key | 226 | // This will throw on dupe key |
220 | try { cmd.ExecuteNonQuery(); } | 227 | try { cmd2.ExecuteNonQuery(); } |
221 | catch (Exception) { } | 228 | catch (Exception) { } |
222 | 229 | ||
223 | es.Save(); | 230 | es.Save(); |
@@ -390,5 +397,83 @@ namespace OpenSim.Data.MySQL | |||
390 | 397 | ||
391 | return uuids.ToArray(); | 398 | return uuids.ToArray(); |
392 | } | 399 | } |
400 | |||
401 | public EstateSettings LoadEstateSettings(int estateID) | ||
402 | { | ||
403 | using (MySqlCommand cmd = new MySqlCommand()) | ||
404 | { | ||
405 | string sql = "select estate_settings." + String.Join(",estate_settings.", FieldList) + " from estate_settings where EstateID = ?EstateID"; | ||
406 | |||
407 | cmd.CommandText = sql; | ||
408 | cmd.Parameters.AddWithValue("?EstateID", estateID); | ||
409 | |||
410 | return DoLoad(cmd, UUID.Zero, false); | ||
411 | } | ||
412 | } | ||
413 | |||
414 | public List<int> GetEstates(string search) | ||
415 | { | ||
416 | List<int> result = new List<int>(); | ||
417 | |||
418 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | ||
419 | { | ||
420 | dbcon.Open(); | ||
421 | |||
422 | using (MySqlCommand cmd = dbcon.CreateCommand()) | ||
423 | { | ||
424 | cmd.CommandText = "select estateID from estate_settings where EstateName = ?EstateName"; | ||
425 | cmd.Parameters.AddWithValue("?EstateName", search); | ||
426 | |||
427 | using (IDataReader reader = cmd.ExecuteReader()) | ||
428 | { | ||
429 | while (reader.Read()) | ||
430 | { | ||
431 | result.Add(Convert.ToInt32(reader["EstateID"])); | ||
432 | } | ||
433 | reader.Close(); | ||
434 | } | ||
435 | } | ||
436 | |||
437 | |||
438 | dbcon.Close(); | ||
439 | } | ||
440 | |||
441 | return result; | ||
442 | } | ||
443 | |||
444 | public bool LinkRegion(UUID regionID, int estateID) | ||
445 | { | ||
446 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | ||
447 | { | ||
448 | dbcon.Open(); | ||
449 | |||
450 | using (MySqlCommand cmd = dbcon.CreateCommand()) | ||
451 | { | ||
452 | cmd.CommandText = "insert into estate_map values (?RegionID, ?EstateID)"; | ||
453 | cmd.Parameters.AddWithValue("?RegionID", regionID); | ||
454 | cmd.Parameters.AddWithValue("?EstateID", estateID); | ||
455 | |||
456 | if (cmd.ExecuteNonQuery() == 0) | ||
457 | { | ||
458 | dbcon.Close(); | ||
459 | return false; | ||
460 | } | ||
461 | } | ||
462 | |||
463 | dbcon.Close(); | ||
464 | } | ||
465 | |||
466 | return true; | ||
467 | } | ||
468 | |||
469 | public List<UUID> GetRegions(int estateID) | ||
470 | { | ||
471 | return new List<UUID>(); | ||
472 | } | ||
473 | |||
474 | public bool DeleteEstate(int estateID) | ||
475 | { | ||
476 | return false; | ||
477 | } | ||
393 | } | 478 | } |
394 | } | 479 | } |
diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs index 4a447d2..5b6135e 100644 --- a/OpenSim/Data/SQLite/SQLiteEstateData.cs +++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs | |||
@@ -320,5 +320,30 @@ namespace OpenSim.Data.SQLite | |||
320 | 320 | ||
321 | return uuids.ToArray(); | 321 | return uuids.ToArray(); |
322 | } | 322 | } |
323 | |||
324 | public EstateSettings LoadEstateSettings(int estateID) | ||
325 | { | ||
326 | return new EstateSettings(); | ||
327 | } | ||
328 | |||
329 | public List<int> GetEstates(string search) | ||
330 | { | ||
331 | return new List<int>(); | ||
332 | } | ||
333 | |||
334 | public bool LinkRegion(UUID regionID, int estateID) | ||
335 | { | ||
336 | return false; | ||
337 | } | ||
338 | |||
339 | public List<UUID> GetRegions(int estateID) | ||
340 | { | ||
341 | return new List<UUID>(); | ||
342 | } | ||
343 | |||
344 | public bool DeleteEstate(int estateID) | ||
345 | { | ||
346 | return false; | ||
347 | } | ||
323 | } | 348 | } |
324 | } | 349 | } |
diff --git a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs index 6861544..87c7a05 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateDataStore.cs | |||
@@ -25,6 +25,7 @@ | |||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System.Collections.Generic; | ||
28 | using OpenMetaverse; | 29 | using OpenMetaverse; |
29 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
30 | 31 | ||
@@ -35,6 +36,11 @@ namespace OpenSim.Region.Framework.Interfaces | |||
35 | void Initialise(string connectstring); | 36 | void Initialise(string connectstring); |
36 | 37 | ||
37 | EstateSettings LoadEstateSettings(UUID regionID, bool create); | 38 | EstateSettings LoadEstateSettings(UUID regionID, bool create); |
39 | EstateSettings LoadEstateSettings(int estateID); | ||
38 | void StoreEstateSettings(EstateSettings es); | 40 | void StoreEstateSettings(EstateSettings es); |
41 | List<int> GetEstates(string search); | ||
42 | bool LinkRegion(UUID regionID, int estateID); | ||
43 | List<UUID> GetRegions(int estateID); | ||
44 | bool DeleteEstate(int estateID); | ||
39 | } | 45 | } |
40 | } | 46 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 078cf03..da81c03 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -604,7 +604,44 @@ namespace OpenSim.Region.Framework.Scenes | |||
604 | m_regInfo.RegionSettings = m_storageManager.DataStore.LoadRegionSettings(m_regInfo.RegionID); | 604 | m_regInfo.RegionSettings = m_storageManager.DataStore.LoadRegionSettings(m_regInfo.RegionID); |
605 | if (m_storageManager.EstateDataStore != null) | 605 | if (m_storageManager.EstateDataStore != null) |
606 | { | 606 | { |
607 | m_regInfo.EstateSettings = m_storageManager.EstateDataStore.LoadEstateSettings(m_regInfo.RegionID, true); | 607 | m_regInfo.EstateSettings = m_storageManager.EstateDataStore.LoadEstateSettings(m_regInfo.RegionID, false); |
608 | if (m_regInfo.EstateSettings.EstateID == 0) // No record at all | ||
609 | { | ||
610 | MainConsole.Instance.Output("Your region is not part of an estate."); | ||
611 | while (true) | ||
612 | { | ||
613 | string response = MainConsole.Instance.CmdPrompt("Do you wish to join an existing estate?", "no", new List<string>() {"yes", "no"}); | ||
614 | if (response == "no") | ||
615 | { | ||
616 | // Create a new estate | ||
617 | m_regInfo.EstateSettings = m_storageManager.EstateDataStore.LoadEstateSettings(m_regInfo.RegionID, true); | ||
618 | |||
619 | m_regInfo.EstateSettings.EstateName = MainConsole.Instance.CmdPrompt("New estate name", m_regInfo.EstateSettings.EstateName); | ||
620 | m_regInfo.EstateSettings.Save(); | ||
621 | break; | ||
622 | } | ||
623 | else | ||
624 | { | ||
625 | response = MainConsole.Instance.CmdPrompt("Estate name to join", "None"); | ||
626 | if (response == "None") | ||
627 | continue; | ||
628 | |||
629 | List<int> estateIDs = m_storageManager.EstateDataStore.GetEstates(response); | ||
630 | if (estateIDs.Count < 1) | ||
631 | { | ||
632 | MainConsole.Instance.Output("The name you have entered matches no known estate. Please try again"); | ||
633 | continue; | ||
634 | } | ||
635 | |||
636 | int estateID = estateIDs[0]; | ||
637 | |||
638 | if (m_storageManager.EstateDataStore.LinkRegion(m_regInfo.RegionID, estateID)) | ||
639 | break; | ||
640 | |||
641 | MainConsole.Instance.Output("Joining the estate failed. Please try again."); | ||
642 | } | ||
643 | } | ||
644 | } | ||
608 | } | 645 | } |
609 | 646 | ||
610 | //Bind Storage Manager functions to some land manager functions for this scene | 647 | //Bind Storage Manager functions to some land manager functions for this scene |
@@ -1215,6 +1252,82 @@ namespace OpenSim.Region.Framework.Scenes | |||
1215 | m_dialogModule = RequestModuleInterface<IDialogModule>(); | 1252 | m_dialogModule = RequestModuleInterface<IDialogModule>(); |
1216 | m_capsModule = RequestModuleInterface<ICapabilitiesModule>(); | 1253 | m_capsModule = RequestModuleInterface<ICapabilitiesModule>(); |
1217 | m_teleportModule = RequestModuleInterface<IEntityTransferModule>(); | 1254 | m_teleportModule = RequestModuleInterface<IEntityTransferModule>(); |
1255 | |||
1256 | // Shoving this in here for now, because we have the needed | ||
1257 | // interfaces at this point | ||
1258 | // | ||
1259 | // TODO: Find a better place for this | ||
1260 | // | ||
1261 | while (m_regInfo.EstateSettings.EstateOwner == UUID.Zero) | ||
1262 | { | ||
1263 | MainConsole.Instance.Output("The current estate has no owner set."); | ||
1264 | string first = MainConsole.Instance.CmdPrompt("Estate owner first name", "Test"); | ||
1265 | string last = MainConsole.Instance.CmdPrompt("Estate owner last name", "User"); | ||
1266 | |||
1267 | UserAccount account = UserAccountService.GetUserAccount(m_regInfo.ScopeID, first, last); | ||
1268 | |||
1269 | if (account == null) | ||
1270 | { | ||
1271 | account = new UserAccount(m_regInfo.ScopeID, first, last, String.Empty); | ||
1272 | if (account.ServiceURLs == null || (account.ServiceURLs != null && account.ServiceURLs.Count == 0)) | ||
1273 | { | ||
1274 | account.ServiceURLs = new Dictionary<string, object>(); | ||
1275 | account.ServiceURLs["HomeURI"] = string.Empty; | ||
1276 | account.ServiceURLs["GatekeeperURI"] = string.Empty; | ||
1277 | account.ServiceURLs["InventoryServerURI"] = string.Empty; | ||
1278 | account.ServiceURLs["AssetServerURI"] = string.Empty; | ||
1279 | } | ||
1280 | |||
1281 | if (UserAccountService.StoreUserAccount(account)) | ||
1282 | { | ||
1283 | string password = MainConsole.Instance.PasswdPrompt("Password"); | ||
1284 | string email = MainConsole.Instance.CmdPrompt("Email", ""); | ||
1285 | |||
1286 | account.Email = email; | ||
1287 | UserAccountService.StoreUserAccount(account); | ||
1288 | |||
1289 | bool success = false; | ||
1290 | success = AuthenticationService.SetPassword(account.PrincipalID, password); | ||
1291 | if (!success) | ||
1292 | m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to set password for account {0} {1}.", | ||
1293 | first, last); | ||
1294 | |||
1295 | GridRegion home = null; | ||
1296 | if (GridService != null) | ||
1297 | { | ||
1298 | List<GridRegion> defaultRegions = GridService.GetDefaultRegions(UUID.Zero); | ||
1299 | if (defaultRegions != null && defaultRegions.Count >= 1) | ||
1300 | home = defaultRegions[0]; | ||
1301 | |||
1302 | if (PresenceService != null && home != null) | ||
1303 | PresenceService.SetHomeLocation(account.PrincipalID.ToString(), home.RegionID, new Vector3(128, 128, 0), new Vector3(0, 1, 0)); | ||
1304 | else | ||
1305 | m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to set home for account {0} {1}.", | ||
1306 | first, last); | ||
1307 | |||
1308 | } | ||
1309 | else | ||
1310 | m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to retrieve home region for account {0} {1}.", | ||
1311 | first, last); | ||
1312 | |||
1313 | if (InventoryService != null) | ||
1314 | success = InventoryService.CreateUserInventory(account.PrincipalID); | ||
1315 | if (!success) | ||
1316 | m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to create inventory for account {0} {1}.", | ||
1317 | first, last); | ||
1318 | |||
1319 | |||
1320 | m_log.InfoFormat("[USER ACCOUNT SERVICE]: Account {0} {1} created successfully", first, last); | ||
1321 | |||
1322 | m_regInfo.EstateSettings.EstateOwner = account.PrincipalID; | ||
1323 | m_regInfo.EstateSettings.Save(); | ||
1324 | } | ||
1325 | } | ||
1326 | else | ||
1327 | { | ||
1328 | MainConsole.Instance.Output("You appear to be connected to a grid and can't create users from here. Please enter the name of an existing user"); | ||
1329 | } | ||
1330 | } | ||
1218 | } | 1331 | } |
1219 | 1332 | ||
1220 | #endregion | 1333 | #endregion |
diff --git a/OpenSim/Services/Interfaces/IUserAccountService.cs b/OpenSim/Services/Interfaces/IUserAccountService.cs index a45bf8c..befd14e 100644 --- a/OpenSim/Services/Interfaces/IUserAccountService.cs +++ b/OpenSim/Services/Interfaces/IUserAccountService.cs | |||
@@ -150,10 +150,10 @@ namespace OpenSim.Services.Interfaces | |||
150 | List<UserAccount> GetUserAccounts(UUID scopeID, string query); | 150 | List<UserAccount> GetUserAccounts(UUID scopeID, string query); |
151 | 151 | ||
152 | /// <summary> | 152 | /// <summary> |
153 | /// Store the data given, wich replaces the sotred data, therefore must be complete. | 153 | /// Store the data given, wich replaces the stored data, therefore must be complete. |
154 | /// </summary> | 154 | /// </summary> |
155 | /// <param name="data"></param> | 155 | /// <param name="data"></param> |
156 | /// <returns></returns> | 156 | /// <returns></returns> |
157 | bool StoreUserAccount(UserAccount data); | 157 | bool StoreUserAccount(UserAccount data); |
158 | } | 158 | } |
159 | } \ No newline at end of file | 159 | } |