diff options
20 files changed, 106 insertions, 53 deletions
diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs index aec06be..59431bb 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs | |||
@@ -851,7 +851,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory | |||
851 | 851 | ||
852 | // Delete the old item | 852 | // Delete the old item |
853 | 853 | ||
854 | Rest.InventoryServices.DeleteItem(uri); | 854 | List<UUID> uuids = new List<UUID>(); |
855 | uuids.Add(uri.ID); | ||
856 | Rest.InventoryServices.DeleteItems(uri.Owner, uuids); | ||
855 | 857 | ||
856 | // Add the new item to the inventory | 858 | // Add the new item to the inventory |
857 | 859 | ||
@@ -927,7 +929,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory | |||
927 | InventoryItemBase item = (InventoryItemBase) InventoryNode; | 929 | InventoryItemBase item = (InventoryItemBase) InventoryNode; |
928 | Rest.Log.DebugFormat("{0} {1}: Item {2} will be deleted", | 930 | Rest.Log.DebugFormat("{0} {1}: Item {2} will be deleted", |
929 | MsgId, rdata.method, rdata.path); | 931 | MsgId, rdata.method, rdata.path); |
930 | Rest.InventoryServices.DeleteItem(item); | 932 | List<UUID> uuids = new List<UUID>(); |
933 | uuids.Add(item.ID); | ||
934 | Rest.InventoryServices.DeleteItems(item.Owner, uuids); | ||
931 | rdata.appendStatus(String.Format("<p>Deleted item {0} UUID {1} <p>", item.Name, item.ID)); | 935 | rdata.appendStatus(String.Format("<p>Deleted item {0} UUID {1} <p>", item.Name, item.ID)); |
932 | } | 936 | } |
933 | 937 | ||
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index ca641d0..238810a 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs | |||
@@ -653,7 +653,9 @@ namespace OpenSim.Framework.Communications.Cache | |||
653 | 653 | ||
654 | if (RootFolder.DeleteItem(item.ID)) | 654 | if (RootFolder.DeleteItem(item.ID)) |
655 | { | 655 | { |
656 | return m_InventoryService.DeleteItem(item); | 656 | List<UUID> uuids = new List<UUID>(); |
657 | uuids.Add(itemID); | ||
658 | return m_InventoryService.DeleteItems(this.UserProfile.ID, uuids); | ||
657 | } | 659 | } |
658 | } | 660 | } |
659 | else | 661 | else |
diff --git a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs index 22dcef9..d5d4d1e 100644 --- a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs +++ b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs | |||
@@ -547,7 +547,7 @@ namespace OpenSim.Framework.Communications.Tests | |||
547 | return false; | 547 | return false; |
548 | } | 548 | } |
549 | 549 | ||
550 | public bool DeleteItem(InventoryItemBase item) | 550 | public bool DeleteItems(UUID owner, List<UUID> items) |
551 | { | 551 | { |
552 | return false; | 552 | return false; |
553 | } | 553 | } |
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index e451dd8..ca37a5b 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -257,7 +257,7 @@ namespace OpenSim.Framework | |||
257 | IClientAPI remoteClient, UUID folderID, UUID itemID, int length, string newName); | 257 | IClientAPI remoteClient, UUID folderID, UUID itemID, int length, string newName); |
258 | 258 | ||
259 | public delegate void RemoveInventoryItem( | 259 | public delegate void RemoveInventoryItem( |
260 | IClientAPI remoteClient, UUID itemID); | 260 | IClientAPI remoteClient, List<UUID> itemIDs); |
261 | 261 | ||
262 | public delegate void RemoveInventoryFolder( | 262 | public delegate void RemoveInventoryFolder( |
263 | IClientAPI remoteClient, UUID folderID); | 263 | IClientAPI remoteClient, UUID folderID); |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 16ce9e0..e2fb659 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -7053,14 +7053,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7053 | if (OnRemoveInventoryItem != null) | 7053 | if (OnRemoveInventoryItem != null) |
7054 | { | 7054 | { |
7055 | handlerRemoveInventoryItem = null; | 7055 | handlerRemoveInventoryItem = null; |
7056 | List<UUID> uuids = new List<UUID>(); | ||
7056 | foreach (RemoveInventoryItemPacket.InventoryDataBlock datablock in removeItem.InventoryData) | 7057 | foreach (RemoveInventoryItemPacket.InventoryDataBlock datablock in removeItem.InventoryData) |
7057 | { | 7058 | { |
7058 | handlerRemoveInventoryItem = OnRemoveInventoryItem; | 7059 | uuids.Add(datablock.ItemID); |
7059 | if (handlerRemoveInventoryItem != null) | ||
7060 | { | ||
7061 | handlerRemoveInventoryItem(this, datablock.ItemID); | ||
7062 | } | ||
7063 | } | 7060 | } |
7061 | handlerRemoveInventoryItem = OnRemoveInventoryItem; | ||
7062 | if (handlerRemoveInventoryItem != null) | ||
7063 | { | ||
7064 | handlerRemoveInventoryItem(this, uuids); | ||
7065 | } | ||
7066 | |||
7064 | } | 7067 | } |
7065 | break; | 7068 | break; |
7066 | case PacketType.RemoveInventoryFolder: | 7069 | case PacketType.RemoveInventoryFolder: |
@@ -7116,13 +7119,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7116 | if (OnRemoveInventoryItem != null) | 7119 | if (OnRemoveInventoryItem != null) |
7117 | { | 7120 | { |
7118 | handlerRemoveInventoryItem = null; | 7121 | handlerRemoveInventoryItem = null; |
7122 | List<UUID> uuids = new List<UUID>(); | ||
7119 | foreach (RemoveInventoryObjectsPacket.ItemDataBlock datablock in removeObject.ItemData) | 7123 | foreach (RemoveInventoryObjectsPacket.ItemDataBlock datablock in removeObject.ItemData) |
7120 | { | 7124 | { |
7121 | handlerRemoveInventoryItem = OnRemoveInventoryItem; | 7125 | uuids.Add(datablock.ItemID); |
7122 | if (handlerRemoveInventoryItem != null) | 7126 | } |
7123 | { | 7127 | handlerRemoveInventoryItem = OnRemoveInventoryItem; |
7124 | handlerRemoveInventoryItem(this, datablock.ItemID); | 7128 | if (handlerRemoveInventoryItem != null) |
7125 | } | 7129 | { |
7130 | handlerRemoveInventoryItem(this, uuids); | ||
7126 | } | 7131 | } |
7127 | } | 7132 | } |
7128 | break; | 7133 | break; |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs index 3a65336..5afbf68 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs | |||
@@ -267,7 +267,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer | |||
267 | item.Folder = trashFolder.ID; | 267 | item.Folder = trashFolder.ID; |
268 | 268 | ||
269 | // Diva comment: can't we just update this item??? | 269 | // Diva comment: can't we just update this item??? |
270 | invService.DeleteItem(item); | 270 | List<UUID> uuids = new List<UUID>(); |
271 | uuids.Add(item.ID); | ||
272 | invService.DeleteItems(item.Owner, uuids); | ||
271 | scene.AddInventoryItem(client, item); | 273 | scene.AddInventoryItem(client, item); |
272 | } | 274 | } |
273 | else | 275 | else |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs index ef5ffe1..d1ae3e4 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs | |||
@@ -186,7 +186,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
186 | /// </summary> | 186 | /// </summary> |
187 | /// <param name="item"></param> | 187 | /// <param name="item"></param> |
188 | /// <returns>true if the item was successfully deleted</returns> | 188 | /// <returns>true if the item was successfully deleted</returns> |
189 | public abstract bool DeleteItem(InventoryItemBase item); | 189 | public abstract bool DeleteItems(UUID ownerID, List<UUID> itemIDs); |
190 | 190 | ||
191 | public abstract InventoryItemBase GetItem(InventoryItemBase item); | 191 | public abstract InventoryItemBase GetItem(InventoryItemBase item); |
192 | 192 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs index 3649097..6a1f2d5 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs | |||
@@ -393,18 +393,22 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
393 | } | 393 | } |
394 | } | 394 | } |
395 | 395 | ||
396 | public override bool DeleteItem(InventoryItemBase item) | 396 | public override bool DeleteItems(UUID ownerID, List<UUID> itemIDs) |
397 | { | 397 | { |
398 | if (item == null) | 398 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Delete {0} items for user {1}", itemIDs.Count, ownerID); |
399 | |||
400 | if (itemIDs == null) | ||
399 | return false; | 401 | return false; |
402 | if (itemIDs.Count == 0) | ||
403 | return true; | ||
400 | 404 | ||
401 | if (IsLocalGridUser(item.Owner)) | 405 | if (IsLocalGridUser(ownerID)) |
402 | return m_GridService.DeleteItem(item); | 406 | return m_GridService.DeleteItems(ownerID, itemIDs); |
403 | else | 407 | else |
404 | { | 408 | { |
405 | UUID sessionID = GetSessionID(item.Owner); | 409 | UUID sessionID = GetSessionID(ownerID); |
406 | string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); | 410 | string uri = GetUserInventoryURI(ownerID) + "/" + ownerID.ToString(); |
407 | return m_HGService.DeleteItem(uri, item, sessionID); | 411 | return m_HGService.DeleteItems(uri, itemIDs, sessionID); |
408 | } | 412 | } |
409 | } | 413 | } |
410 | 414 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs index 2fbc5fe..b2640af 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs | |||
@@ -294,9 +294,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
294 | /// </summary> | 294 | /// </summary> |
295 | /// <param name="item"></param> | 295 | /// <param name="item"></param> |
296 | /// <returns>true if the item was successfully deleted</returns> | 296 | /// <returns>true if the item was successfully deleted</returns> |
297 | public override bool DeleteItem(InventoryItemBase item) | 297 | public override bool DeleteItems(UUID ownerID, List<UUID> itemIDs) |
298 | { | 298 | { |
299 | return m_InventoryService.DeleteItem(item); | 299 | return m_InventoryService.DeleteItems(ownerID, itemIDs); |
300 | } | 300 | } |
301 | 301 | ||
302 | public override InventoryItemBase GetItem(InventoryItemBase item) | 302 | public override InventoryItemBase GetItem(InventoryItemBase item) |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs index 522f680..012f0e3 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs | |||
@@ -273,13 +273,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
273 | return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID); | 273 | return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID); |
274 | } | 274 | } |
275 | 275 | ||
276 | public override bool DeleteItem(InventoryItemBase item) | 276 | public override bool DeleteItems(UUID ownerID, List<UUID> itemIDs) |
277 | { | 277 | { |
278 | if (item == null) | 278 | if (itemIDs == null) |
279 | return false; | 279 | return false; |
280 | if (itemIDs.Count == 0) | ||
281 | return true; | ||
280 | 282 | ||
281 | UUID sessionID = GetSessionID(item.Owner); | 283 | UUID sessionID = GetSessionID(ownerID); |
282 | return m_RemoteConnector.DeleteItem(item.Owner.ToString(), item, sessionID); | 284 | return m_RemoteConnector.DeleteItems(ownerID.ToString(), itemIDs, sessionID); |
283 | } | 285 | } |
284 | 286 | ||
285 | public override InventoryItemBase GetItem(InventoryItemBase item) | 287 | public override InventoryItemBase GetItem(InventoryItemBase item) |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 48c7f4e..5e2eb73 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -477,7 +477,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
477 | if (!Permissions.BypassPermissions()) | 477 | if (!Permissions.BypassPermissions()) |
478 | { | 478 | { |
479 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) | 479 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) |
480 | InventoryService.DeleteItem(new InventoryItemBase(itemId)); | 480 | { |
481 | List<UUID> items = new List<UUID>(); | ||
482 | items.Add(itemId); | ||
483 | InventoryService.DeleteItems(senderId, items); | ||
484 | } | ||
481 | } | 485 | } |
482 | 486 | ||
483 | return itemCopy; | 487 | return itemCopy; |
@@ -652,7 +656,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
652 | item.Folder = folderID; | 656 | item.Folder = folderID; |
653 | 657 | ||
654 | // Diva comment: can't we just update? | 658 | // Diva comment: can't we just update? |
655 | InventoryService.DeleteItem(item); | 659 | List<UUID> uuids = new List<UUID>(); |
660 | uuids.Add(item.ID); | ||
661 | InventoryService.DeleteItems(item.Owner, uuids); | ||
656 | 662 | ||
657 | AddInventoryItem(remoteClient, item); | 663 | AddInventoryItem(remoteClient, item); |
658 | } | 664 | } |
@@ -799,9 +805,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
799 | /// </summary> | 805 | /// </summary> |
800 | /// <param name="remoteClient"></param> | 806 | /// <param name="remoteClient"></param> |
801 | /// <param name="itemID"></param> | 807 | /// <param name="itemID"></param> |
802 | private void RemoveInventoryItem(IClientAPI remoteClient, UUID itemID) | 808 | private void RemoveInventoryItem(IClientAPI remoteClient, List<UUID> itemIDs) |
803 | { | 809 | { |
804 | InventoryService.DeleteItem(new InventoryItemBase(itemID)); | 810 | //m_log.Debug("[SCENE INVENTORY]: user " + remoteClient.AgentId); |
811 | InventoryService.DeleteItems(remoteClient.AgentId, itemIDs); | ||
805 | } | 812 | } |
806 | 813 | ||
807 | /// <summary> | 814 | /// <summary> |
@@ -1248,7 +1255,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1248 | if (!Permissions.BypassPermissions()) | 1255 | if (!Permissions.BypassPermissions()) |
1249 | { | 1256 | { |
1250 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) | 1257 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) |
1251 | RemoveInventoryItem(remoteClient, itemID); | 1258 | { |
1259 | List<UUID> uuids = new List<UUID>(); | ||
1260 | uuids.Add(itemID); | ||
1261 | RemoveInventoryItem(remoteClient, uuids); | ||
1262 | } | ||
1252 | } | 1263 | } |
1253 | } | 1264 | } |
1254 | else | 1265 | else |
@@ -2144,7 +2155,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
2144 | // copy ones will be lost, so avoid it | 2155 | // copy ones will be lost, so avoid it |
2145 | // | 2156 | // |
2146 | if (!attachment) | 2157 | if (!attachment) |
2147 | InventoryService.DeleteItem(item); | 2158 | { |
2159 | List<UUID> uuids = new List<UUID>(); | ||
2160 | uuids.Add(item.ID); | ||
2161 | InventoryService.DeleteItems(item.Owner, uuids); | ||
2162 | } | ||
2148 | } | 2163 | } |
2149 | } | 2164 | } |
2150 | 2165 | ||
@@ -2404,7 +2419,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2404 | } | 2419 | } |
2405 | part.ParentGroup.DetachToGround(); | 2420 | part.ParentGroup.DetachToGround(); |
2406 | 2421 | ||
2407 | InventoryService.DeleteItem(new InventoryItemBase(inventoryID)); | 2422 | List<UUID> uuids = new List<UUID>(); |
2423 | uuids.Add(inventoryID); | ||
2424 | InventoryService.DeleteItems(remoteClient.AgentId, uuids); | ||
2408 | remoteClient.SendRemoveInventoryItem(inventoryID); | 2425 | remoteClient.SendRemoveInventoryItem(inventoryID); |
2409 | } | 2426 | } |
2410 | SendAttachEvent(part.ParentGroup.LocalId, itemID, UUID.Zero); | 2427 | SendAttachEvent(part.ParentGroup.LocalId, itemID, UUID.Zero); |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs index 1bbca49..a2414e5 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs | |||
@@ -560,7 +560,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
560 | 560 | ||
561 | public void HandlePurgeInventoryDescendents(IClientAPI remoteClient, UUID folderID) | 561 | public void HandlePurgeInventoryDescendents(IClientAPI remoteClient, UUID folderID) |
562 | { | 562 | { |
563 | InventoryFolderBase folder = new InventoryFolderBase(folderID); | 563 | InventoryFolderBase folder = new InventoryFolderBase(folderID, remoteClient.AgentId); |
564 | 564 | ||
565 | if (InventoryService.PurgeFolder(folder)) | 565 | if (InventoryService.PurgeFolder(folder)) |
566 | m_log.DebugFormat("[AGENT INVENTORY]: folder {0} purged successfully", folderID); | 566 | m_log.DebugFormat("[AGENT INVENTORY]: folder {0} purged successfully", folderID); |
diff --git a/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs b/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs index 30b3cae..6cfc7df 100644 --- a/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs +++ b/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs | |||
@@ -105,8 +105,8 @@ namespace OpenSim.Server.Handlers.Inventory | |||
105 | "POST", "/PurgeFolder/", m_InventoryService.PurgeFolder, CheckAuthSession)); | 105 | "POST", "/PurgeFolder/", m_InventoryService.PurgeFolder, CheckAuthSession)); |
106 | 106 | ||
107 | m_httpServer.AddStreamHandler( | 107 | m_httpServer.AddStreamHandler( |
108 | new RestDeserialiseSecureHandler<InventoryItemBase, bool>( | 108 | new RestDeserialiseSecureHandler<List<Guid>, bool>( |
109 | "POST", "/DeleteItem/", m_InventoryService.DeleteItem, CheckAuthSession)); | 109 | "POST", "/DeleteItem/", DeleteItems, CheckAuthSession)); |
110 | 110 | ||
111 | m_httpServer.AddStreamHandler( | 111 | m_httpServer.AddStreamHandler( |
112 | new RestDeserialiseSecureHandler<InventoryItemBase, InventoryItemBase>( | 112 | new RestDeserialiseSecureHandler<InventoryItemBase, InventoryItemBase>( |
@@ -247,6 +247,15 @@ namespace OpenSim.Server.Handlers.Inventory | |||
247 | return m_InventoryService.GetAssetPermissions(item.Owner, item.AssetID); | 247 | return m_InventoryService.GetAssetPermissions(item.Owner, item.AssetID); |
248 | } | 248 | } |
249 | 249 | ||
250 | public bool DeleteItems(List<Guid> items) | ||
251 | { | ||
252 | List<UUID> uuids = new List<UUID>(); | ||
253 | foreach (Guid g in items) | ||
254 | uuids.Add(new UUID(g)); | ||
255 | // oops we lost the user info here. Bad bad handlers | ||
256 | return m_InventoryService.DeleteItems(UUID.Zero, uuids); | ||
257 | } | ||
258 | |||
250 | #endregion | 259 | #endregion |
251 | 260 | ||
252 | /// <summary> | 261 | /// <summary> |
diff --git a/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs index 75fa516..00b74b5 100644 --- a/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs | |||
@@ -253,7 +253,7 @@ namespace OpenSim.Services.Connectors.Inventory | |||
253 | return false; | 253 | return false; |
254 | } | 254 | } |
255 | 255 | ||
256 | public bool DeleteItem(string id, InventoryItemBase item, UUID sessionID) | 256 | public bool DeleteItems(string id, List<UUID> itemIDs, UUID sessionID) |
257 | { | 257 | { |
258 | string url = string.Empty; | 258 | string url = string.Empty; |
259 | string userID = string.Empty; | 259 | string userID = string.Empty; |
@@ -261,7 +261,7 @@ namespace OpenSim.Services.Connectors.Inventory | |||
261 | if (StringToUrlAndUserID(id, out url, out userID)) | 261 | if (StringToUrlAndUserID(id, out url, out userID)) |
262 | { | 262 | { |
263 | ISessionAuthInventoryService connector = GetConnector(url); | 263 | ISessionAuthInventoryService connector = GetConnector(url); |
264 | return connector.UpdateItem(userID, item, sessionID); | 264 | return connector.DeleteItems(userID, itemIDs, sessionID); |
265 | } | 265 | } |
266 | return false; | 266 | return false; |
267 | } | 267 | } |
diff --git a/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs b/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs index 7f051f3..e4e713c 100644 --- a/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs +++ b/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs | |||
@@ -121,7 +121,7 @@ namespace OpenSim.Services.Connectors | |||
121 | /// </summary> | 121 | /// </summary> |
122 | /// <param name="item"></param> | 122 | /// <param name="item"></param> |
123 | /// <returns>true if the item was successfully deleted</returns> | 123 | /// <returns>true if the item was successfully deleted</returns> |
124 | bool DeleteItem(string userID, InventoryItemBase item, UUID session_id); | 124 | bool DeleteItems(string userID, List<UUID> itemIDs, UUID session_id); |
125 | 125 | ||
126 | InventoryItemBase QueryItem(string userID, InventoryItemBase item, UUID session_id); | 126 | InventoryItemBase QueryItem(string userID, InventoryItemBase item, UUID session_id); |
127 | 127 | ||
diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs index 5aa4b30..9b2e331 100644 --- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs | |||
@@ -383,12 +383,15 @@ namespace OpenSim.Services.Connectors | |||
383 | return false; | 383 | return false; |
384 | } | 384 | } |
385 | 385 | ||
386 | public bool DeleteItem(string userID, InventoryItemBase item, UUID sessionID) | 386 | public bool DeleteItems(string userID, List<UUID> items, UUID sessionID) |
387 | { | 387 | { |
388 | try | 388 | try |
389 | { | 389 | { |
390 | return SynchronousRestSessionObjectPoster<InventoryItemBase, bool>.BeginPostObject( | 390 | List<Guid> guids = new List<Guid>(); |
391 | "POST", m_ServerURI + "/DeleteItem/", item, sessionID.ToString(), item.Owner.ToString()); | 391 | foreach (UUID u in items) |
392 | guids.Add(u.Guid); | ||
393 | return SynchronousRestSessionObjectPoster<List<Guid>, bool>.BeginPostObject( | ||
394 | "POST", m_ServerURI + "/DeleteItem/", guids, sessionID.ToString(), userID); | ||
392 | } | 395 | } |
393 | catch (Exception e) | 396 | catch (Exception e) |
394 | { | 397 | { |
diff --git a/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs index 5cbd307..3bbf129 100644 --- a/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs | |||
@@ -151,7 +151,7 @@ namespace OpenSim.Services.Connectors | |||
151 | return false; | 151 | return false; |
152 | } | 152 | } |
153 | 153 | ||
154 | public bool DeleteItem(InventoryItemBase item) | 154 | public bool DeleteItems(UUID owner, List<UUID> itemIDs) |
155 | { | 155 | { |
156 | return false; | 156 | return false; |
157 | } | 157 | } |
diff --git a/OpenSim/Services/Interfaces/IInventoryService.cs b/OpenSim/Services/Interfaces/IInventoryService.cs index a89a238..6409b57 100644 --- a/OpenSim/Services/Interfaces/IInventoryService.cs +++ b/OpenSim/Services/Interfaces/IInventoryService.cs | |||
@@ -147,7 +147,8 @@ namespace OpenSim.Services.Interfaces | |||
147 | /// </summary> | 147 | /// </summary> |
148 | /// <param name="item"></param> | 148 | /// <param name="item"></param> |
149 | /// <returns>true if the item was successfully deleted</returns> | 149 | /// <returns>true if the item was successfully deleted</returns> |
150 | bool DeleteItem(InventoryItemBase item); | 150 | //bool DeleteItem(InventoryItemBase item); |
151 | bool DeleteItems(UUID userID, List<UUID> itemIDs); | ||
151 | 152 | ||
152 | /// <summary> | 153 | /// <summary> |
153 | /// Get an item, given by its UUID | 154 | /// Get an item, given by its UUID |
diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs index 65c2d96..69b1b28 100644 --- a/OpenSim/Services/InventoryService/InventoryService.cs +++ b/OpenSim/Services/InventoryService/InventoryService.cs | |||
@@ -387,12 +387,14 @@ namespace OpenSim.Services.InventoryService | |||
387 | } | 387 | } |
388 | 388 | ||
389 | // See IInventoryServices | 389 | // See IInventoryServices |
390 | public virtual bool DeleteItem(InventoryItemBase item) | 390 | public virtual bool DeleteItems(UUID owner, List<UUID> itemIDs) |
391 | { | 391 | { |
392 | m_log.InfoFormat( | 392 | m_log.InfoFormat( |
393 | "[INVENTORY SERVICE]: Deleting item {0} {1} from folder {2}", item.Name, item.ID, item.Folder); | 393 | "[INVENTORY SERVICE]: Deleting {0} items from user {1}", itemIDs.Count, owner); |
394 | 394 | ||
395 | m_Database.deleteInventoryItem(item.ID); | 395 | // uhh..... |
396 | foreach (UUID uuid in itemIDs) | ||
397 | m_Database.deleteInventoryItem(uuid); | ||
396 | 398 | ||
397 | // FIXME: Should return false on failure | 399 | // FIXME: Should return false on failure |
398 | return true; | 400 | return true; |
@@ -439,10 +441,12 @@ namespace OpenSim.Services.InventoryService | |||
439 | 441 | ||
440 | List<InventoryItemBase> items = GetFolderItems(folder.Owner, folder.ID); | 442 | List<InventoryItemBase> items = GetFolderItems(folder.Owner, folder.ID); |
441 | 443 | ||
444 | List<UUID> uuids = new List<UUID>(); | ||
442 | foreach (InventoryItemBase item in items) | 445 | foreach (InventoryItemBase item in items) |
443 | { | 446 | { |
444 | DeleteItem(item); | 447 | uuids.Add(item.ID); |
445 | } | 448 | } |
449 | DeleteItems(folder.Owner, uuids); | ||
446 | 450 | ||
447 | // FIXME: Should return false on failure | 451 | // FIXME: Should return false on failure |
448 | return true; | 452 | return true; |
diff --git a/OpenSim/Tests/Common/Mock/TestInventoryService.cs b/OpenSim/Tests/Common/Mock/TestInventoryService.cs index ba9cbe9..f770f75 100644 --- a/OpenSim/Tests/Common/Mock/TestInventoryService.cs +++ b/OpenSim/Tests/Common/Mock/TestInventoryService.cs | |||
@@ -143,7 +143,7 @@ namespace OpenSim.Tests.Common.Mock | |||
143 | return false; | 143 | return false; |
144 | } | 144 | } |
145 | 145 | ||
146 | public bool DeleteItem(InventoryItemBase item) | 146 | public bool DeleteItems(UUID ownerID, List<UUID> itemIDs) |
147 | { | 147 | { |
148 | return false; | 148 | return false; |
149 | } | 149 | } |