diff options
author | Melanie | 2010-10-06 19:59:30 +0200 |
---|---|---|
committer | Melanie | 2010-10-06 19:59:30 +0200 |
commit | 42f76773a15d83fd31f249cc4a21985184b0cdbf (patch) | |
tree | 26b1096beea348dbc1304d24d13087d5f14ab5d4 /OpenSim/Region/CoreModules/Framework | |
parent | Merge branch 'master' into careminster-presence-refactor (diff) | |
download | opensim-SC_OLD-42f76773a15d83fd31f249cc4a21985184b0cdbf.zip opensim-SC_OLD-42f76773a15d83fd31f249cc4a21985184b0cdbf.tar.gz opensim-SC_OLD-42f76773a15d83fd31f249cc4a21985184b0cdbf.tar.bz2 opensim-SC_OLD-42f76773a15d83fd31f249cc4a21985184b0cdbf.tar.xz |
Plumb the path for multiple object deletes
Diffstat (limited to 'OpenSim/Region/CoreModules/Framework')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 42e3359..9ccf5a0 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -196,13 +196,24 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
196 | // currently calls this with multiple items. | 196 | // currently calls this with multiple items. |
197 | UUID ret = UUID.Zero; | 197 | UUID ret = UUID.Zero; |
198 | 198 | ||
199 | Dictionary<UUID, List<SceneObjectGroup>> deletes = | ||
200 | new Dictionary<UUID, List<SceneObjectGroup>>(); | ||
201 | |||
199 | foreach (SceneObjectGroup g in objectGroups) | 202 | foreach (SceneObjectGroup g in objectGroups) |
200 | ret = DeleteToInventory(action, folderID, g, remoteClient); | 203 | { |
204 | if (!deletes.ContainsKey(g.OwnerID)) | ||
205 | deletes[g.OwnerID] = new List<SceneObjectGroup>(); | ||
206 | |||
207 | deletes[g.OwnerID].Add(g); | ||
208 | } | ||
209 | |||
210 | foreach (List<SceneObjectGroup> objlist in deletes.Values) | ||
211 | ret = DeleteToInventory(action, folderID, objlist, remoteClient); | ||
201 | 212 | ||
202 | return ret; | 213 | return ret; |
203 | } | 214 | } |
204 | 215 | ||
205 | public virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, | 216 | private UUID DeleteToInventory(DeRezAction action, UUID folderID, |
206 | SceneObjectGroup objectGroup, IClientAPI remoteClient) | 217 | SceneObjectGroup objectGroup, IClientAPI remoteClient) |
207 | { | 218 | { |
208 | UUID assetID = UUID.Zero; | 219 | UUID assetID = UUID.Zero; |
@@ -320,10 +331,20 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
320 | } | 331 | } |
321 | else | 332 | else |
322 | { | 333 | { |
323 | // Catch all. Use lost & found | 334 | if (remoteClient == null || |
324 | // | 335 | objectGroup.OwnerID != remoteClient.AgentId) |
336 | { | ||
337 | // Taking copy of another person's item. Take to | ||
338 | // Objects folder. | ||
339 | folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.Object); | ||
340 | } | ||
341 | else | ||
342 | { | ||
343 | // Catch all. Use lost & found | ||
344 | // | ||
325 | 345 | ||
326 | folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); | 346 | folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); |
347 | } | ||
327 | } | 348 | } |
328 | } | 349 | } |
329 | 350 | ||