diff options
Diffstat (limited to 'OpenSim/Region')
8 files changed, 63 insertions, 33 deletions
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); |