diff options
-rw-r--r-- | OpenSim/Data/IXInventoryData.cs | 29 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs | 35 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLXInventoryData.cs | 10 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | 27 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLXInventoryData.cs | 10 | ||||
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs | 28 | ||||
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteXInventoryData.cs | 10 | ||||
-rw-r--r-- | OpenSim/Services/InventoryService/XInventoryService.cs | 30 |
8 files changed, 30 insertions, 149 deletions
diff --git a/OpenSim/Data/IXInventoryData.cs b/OpenSim/Data/IXInventoryData.cs index 85a5c08..d85a7ef 100644 --- a/OpenSim/Data/IXInventoryData.cs +++ b/OpenSim/Data/IXInventoryData.cs | |||
@@ -74,38 +74,9 @@ namespace OpenSim.Data | |||
74 | bool StoreFolder(XInventoryFolder folder); | 74 | bool StoreFolder(XInventoryFolder folder); |
75 | bool StoreItem(XInventoryItem item); | 75 | bool StoreItem(XInventoryItem item); |
76 | 76 | ||
77 | /// <summary> | ||
78 | /// Delete folders where field == val | ||
79 | /// </summary> | ||
80 | /// <param name="field"></param> | ||
81 | /// <param name="val"></param> | ||
82 | /// <returns>true if the delete was successful, false if it was not</returns> | ||
83 | bool DeleteFolders(string field, string val); | 77 | bool DeleteFolders(string field, string val); |
84 | |||
85 | /// <summary> | ||
86 | /// Delete folders where field1 == val1, field2 == val2... | ||
87 | /// </summary> | ||
88 | /// <param name="fields"></param> | ||
89 | /// <param name="vals"></param> | ||
90 | /// <returns>true if the delete was successful, false if it was not</returns> | ||
91 | bool DeleteFolders(string[] fields, string[] vals); | ||
92 | |||
93 | /// <summary> | ||
94 | /// Delete items where field == val | ||
95 | /// </summary> | ||
96 | /// <param name="field"></param> | ||
97 | /// <param name="val"></param> | ||
98 | /// <returns>true if the delete was successful, false if it was not</returns> | ||
99 | bool DeleteItems(string field, string val); | 78 | bool DeleteItems(string field, string val); |
100 | 79 | ||
101 | /// <summary> | ||
102 | /// Delete items where field1 == val1, field2 == val2... | ||
103 | /// </summary> | ||
104 | /// <param name="fields"></param> | ||
105 | /// <param name="vals"></param> | ||
106 | /// <returns>true if the delete was successful, false if it was not</returns> | ||
107 | bool DeleteItems(string[] fields, string[] vals); | ||
108 | |||
109 | bool MoveItem(string id, string newParent); | 80 | bool MoveItem(string id, string newParent); |
110 | XInventoryItem[] GetActiveGestures(UUID principalID); | 81 | XInventoryItem[] GetActiveGestures(UUID principalID); |
111 | int GetAssetPermissions(UUID principalID, UUID assetID); | 82 | int GetAssetPermissions(UUID principalID, UUID assetID); |
diff --git a/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs b/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs index 317afac..f5492b3 100644 --- a/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs +++ b/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs | |||
@@ -335,35 +335,24 @@ namespace OpenSim.Data.MSSQL | |||
335 | } | 335 | } |
336 | } | 336 | } |
337 | 337 | ||
338 | public virtual bool Delete(string field, string key) | 338 | public virtual bool Delete(string field, string val) |
339 | { | 339 | { |
340 | return Delete(new string[] { field }, new string[] { key }); | ||
341 | } | ||
342 | |||
343 | public virtual bool Delete(string[] fields, string[] keys) | ||
344 | { | ||
345 | if (fields.Length != keys.Length) | ||
346 | return false; | ||
347 | |||
348 | List<string> terms = new List<string>(); | ||
349 | |||
350 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 340 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) |
351 | using (SqlCommand cmd = new SqlCommand()) | 341 | using (SqlCommand cmd = new SqlCommand()) |
352 | { | 342 | { |
353 | for (int i = 0; i < fields.Length; i++) | 343 | string deleteCommand = String.Format("DELETE FROM {0} WHERE [{1}] = @{1}", m_Realm, field); |
354 | { | 344 | cmd.CommandText = deleteCommand; |
355 | cmd.Parameters.Add(m_database.CreateParameter(fields[i], keys[i])); | 345 | |
356 | terms.Add("[" + fields[i] + "] = @" + fields[i]); | 346 | cmd.Parameters.Add(m_database.CreateParameter(field, val)); |
357 | } | ||
358 | |||
359 | string where = String.Join(" AND ", terms.ToArray()); | ||
360 | |||
361 | string query = String.Format("DELETE * FROM {0} WHERE {1}", m_Realm, where); | ||
362 | |||
363 | cmd.Connection = conn; | 347 | cmd.Connection = conn; |
364 | cmd.CommandText = query; | ||
365 | conn.Open(); | 348 | conn.Open(); |
366 | return cmd.ExecuteNonQuery() > 0; | 349 | |
350 | if (cmd.ExecuteNonQuery() > 0) | ||
351 | { | ||
352 | //m_log.Warn("[MSSQLGenericTable]: " + deleteCommand); | ||
353 | return true; | ||
354 | } | ||
355 | return false; | ||
367 | } | 356 | } |
368 | } | 357 | } |
369 | } | 358 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs b/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs index 01689a4..5bc4fe4 100644 --- a/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs +++ b/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs | |||
@@ -79,21 +79,11 @@ namespace OpenSim.Data.MSSQL | |||
79 | return m_Folders.Delete(field, val); | 79 | return m_Folders.Delete(field, val); |
80 | } | 80 | } |
81 | 81 | ||
82 | public bool DeleteFolders(string[] fields, string[] vals) | ||
83 | { | ||
84 | return m_Folders.Delete(fields, vals); | ||
85 | } | ||
86 | |||
87 | public bool DeleteItems(string field, string val) | 82 | public bool DeleteItems(string field, string val) |
88 | { | 83 | { |
89 | return m_Items.Delete(field, val); | 84 | return m_Items.Delete(field, val); |
90 | } | 85 | } |
91 | 86 | ||
92 | public bool DeleteItems(string[] fields, string[] vals) | ||
93 | { | ||
94 | return m_Items.Delete(fields, vals); | ||
95 | } | ||
96 | |||
97 | public bool MoveItem(string id, string newParent) | 87 | public bool MoveItem(string id, string newParent) |
98 | { | 88 | { |
99 | return m_Items.MoveItem(id, newParent); | 89 | return m_Items.MoveItem(id, newParent); |
diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs index 754cf72..cfffbd8 100644 --- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs +++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | |||
@@ -264,33 +264,18 @@ namespace OpenSim.Data.MySQL | |||
264 | } | 264 | } |
265 | } | 265 | } |
266 | 266 | ||
267 | public virtual bool Delete(string field, string key) | 267 | public virtual bool Delete(string field, string val) |
268 | { | 268 | { |
269 | return Delete(new string[] { field }, new string[] { key }); | ||
270 | } | ||
271 | |||
272 | public virtual bool Delete(string[] fields, string[] keys) | ||
273 | { | ||
274 | if (fields.Length != keys.Length) | ||
275 | return false; | ||
276 | |||
277 | List<string> terms = new List<string>(); | ||
278 | |||
279 | using (MySqlCommand cmd = new MySqlCommand()) | 269 | using (MySqlCommand cmd = new MySqlCommand()) |
280 | { | 270 | { |
281 | for (int i = 0 ; i < fields.Length ; i++) | ||
282 | { | ||
283 | cmd.Parameters.AddWithValue(fields[i], keys[i]); | ||
284 | terms.Add("`" + fields[i] + "` = ?" + fields[i]); | ||
285 | } | ||
286 | |||
287 | string where = String.Join(" and ", terms.ToArray()); | ||
288 | 271 | ||
289 | string query = String.Format("delete from {0} where {1}", m_Realm, where); | 272 | cmd.CommandText = String.Format("delete from {0} where `{1}` = ?{1}", m_Realm, field); |
273 | cmd.Parameters.AddWithValue(field, val); | ||
290 | 274 | ||
291 | cmd.CommandText = query; | 275 | if (ExecuteNonQuery(cmd) > 0) |
276 | return true; | ||
292 | 277 | ||
293 | return ExecuteNonQuery(cmd) > 0; | 278 | return false; |
294 | } | 279 | } |
295 | } | 280 | } |
296 | } | 281 | } |
diff --git a/OpenSim/Data/MySQL/MySQLXInventoryData.cs b/OpenSim/Data/MySQL/MySQLXInventoryData.cs index caf18a4..481da49 100644 --- a/OpenSim/Data/MySQL/MySQLXInventoryData.cs +++ b/OpenSim/Data/MySQL/MySQLXInventoryData.cs | |||
@@ -85,21 +85,11 @@ namespace OpenSim.Data.MySQL | |||
85 | return m_Folders.Delete(field, val); | 85 | return m_Folders.Delete(field, val); |
86 | } | 86 | } |
87 | 87 | ||
88 | public bool DeleteFolders(string[] fields, string[] vals) | ||
89 | { | ||
90 | return m_Folders.Delete(fields, vals); | ||
91 | } | ||
92 | |||
93 | public bool DeleteItems(string field, string val) | 88 | public bool DeleteItems(string field, string val) |
94 | { | 89 | { |
95 | return m_Items.Delete(field, val); | 90 | return m_Items.Delete(field, val); |
96 | } | 91 | } |
97 | 92 | ||
98 | public bool DeleteItems(string[] fields, string[] vals) | ||
99 | { | ||
100 | return m_Items.Delete(fields, vals); | ||
101 | } | ||
102 | |||
103 | public bool MoveItem(string id, string newParent) | 93 | public bool MoveItem(string id, string newParent) |
104 | { | 94 | { |
105 | return m_Items.MoveItem(id, newParent); | 95 | return m_Items.MoveItem(id, newParent); |
diff --git a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs index 3fb2d3f..0d7b001 100644 --- a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs +++ b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs | |||
@@ -258,33 +258,17 @@ namespace OpenSim.Data.SQLite | |||
258 | return false; | 258 | return false; |
259 | } | 259 | } |
260 | 260 | ||
261 | public virtual bool Delete(string field, string key) | 261 | public bool Delete(string field, string val) |
262 | { | 262 | { |
263 | return Delete(new string[] { field }, new string[] { key }); | ||
264 | } | ||
265 | |||
266 | public bool Delete(string[] fields, string[] keys) | ||
267 | { | ||
268 | if (fields.Length != keys.Length) | ||
269 | return false; | ||
270 | |||
271 | List<string> terms = new List<string>(); | ||
272 | |||
273 | SqliteCommand cmd = new SqliteCommand(); | 263 | SqliteCommand cmd = new SqliteCommand(); |
274 | 264 | ||
275 | for (int i = 0 ; i < fields.Length ; i++) | 265 | cmd.CommandText = String.Format("delete from {0} where `{1}` = :{1}", m_Realm, field); |
276 | { | 266 | cmd.Parameters.Add(new SqliteParameter(field, val)); |
277 | cmd.Parameters.Add(new SqliteParameter(":" + fields[i], keys[i])); | ||
278 | terms.Add("`" + fields[i] + "` = :" + fields[i]); | ||
279 | } | ||
280 | |||
281 | string where = String.Join(" and ", terms.ToArray()); | ||
282 | |||
283 | string query = String.Format("delete * from {0} where {1}", m_Realm, where); | ||
284 | 267 | ||
285 | cmd.CommandText = query; | 268 | if (ExecuteNonQuery(cmd, m_Connection) > 0) |
269 | return true; | ||
286 | 270 | ||
287 | return ExecuteNonQuery(cmd, m_Connection) > 0; | 271 | return false; |
288 | } | 272 | } |
289 | } | 273 | } |
290 | } | 274 | } |
diff --git a/OpenSim/Data/SQLite/SQLiteXInventoryData.cs b/OpenSim/Data/SQLite/SQLiteXInventoryData.cs index 02edc30..ccbd86e 100644 --- a/OpenSim/Data/SQLite/SQLiteXInventoryData.cs +++ b/OpenSim/Data/SQLite/SQLiteXInventoryData.cs | |||
@@ -91,21 +91,11 @@ namespace OpenSim.Data.SQLite | |||
91 | return m_Folders.Delete(field, val); | 91 | return m_Folders.Delete(field, val); |
92 | } | 92 | } |
93 | 93 | ||
94 | public bool DeleteFolders(string[] fields, string[] vals) | ||
95 | { | ||
96 | return m_Folders.Delete(fields, vals); | ||
97 | } | ||
98 | |||
99 | public bool DeleteItems(string field, string val) | 94 | public bool DeleteItems(string field, string val) |
100 | { | 95 | { |
101 | return m_Items.Delete(field, val); | 96 | return m_Items.Delete(field, val); |
102 | } | 97 | } |
103 | 98 | ||
104 | public bool DeleteItems(string[] fields, string[] vals) | ||
105 | { | ||
106 | return m_Items.Delete(fields, vals); | ||
107 | } | ||
108 | |||
109 | public bool MoveItem(string id, string newParent) | 99 | public bool MoveItem(string id, string newParent) |
110 | { | 100 | { |
111 | return m_Items.MoveItem(id, newParent); | 101 | return m_Items.MoveItem(id, newParent); |
diff --git a/OpenSim/Services/InventoryService/XInventoryService.cs b/OpenSim/Services/InventoryService/XInventoryService.cs index a094a02..0af35c8 100644 --- a/OpenSim/Services/InventoryService/XInventoryService.cs +++ b/OpenSim/Services/InventoryService/XInventoryService.cs | |||
@@ -411,30 +411,12 @@ namespace OpenSim.Services.InventoryService | |||
411 | public virtual bool DeleteItems(UUID principalID, List<UUID> itemIDs) | 411 | public virtual bool DeleteItems(UUID principalID, List<UUID> itemIDs) |
412 | { | 412 | { |
413 | if (!m_AllowDelete) | 413 | if (!m_AllowDelete) |
414 | { | 414 | return false; |
415 | // We must still allow links and links to folders to be deleted, otherwise they will build up | 415 | |
416 | // in the player's inventory until they can no longer log in. Deletions of links due to code bugs or | 416 | // Just use the ID... *facepalms* |
417 | // similar is inconvenient but on a par with accidental movement of items. The original item is never | 417 | // |
418 | // touched. | 418 | foreach (UUID id in itemIDs) |
419 | foreach (UUID id in itemIDs) | 419 | m_Database.DeleteItems("inventoryID", id.ToString()); |
420 | { | ||
421 | if (!m_Database.DeleteItems( | ||
422 | new string[] { "inventoryID", "assetType" }, | ||
423 | new string[] { id.ToString(), ((sbyte)AssetType.Link).ToString() })); | ||
424 | { | ||
425 | m_Database.DeleteItems( | ||
426 | new string[] { "inventoryID", "assetType" }, | ||
427 | new string[] { id.ToString(), ((sbyte)AssetType.LinkFolder).ToString() }); | ||
428 | } | ||
429 | } | ||
430 | } | ||
431 | else | ||
432 | { | ||
433 | // Just use the ID... *facepalms* | ||
434 | // | ||
435 | foreach (UUID id in itemIDs) | ||
436 | m_Database.DeleteItems("inventoryID", id.ToString()); | ||
437 | } | ||
438 | 420 | ||
439 | return true; | 421 | return true; |
440 | } | 422 | } |