From 375673ec903719f0225b182cb62aab153c86e04e Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sat, 24 May 2008 11:10:21 +0000 Subject: This enables return from the parcel object owner display. There's some oddness with the parcel counts, but if you can get past the oddness, you can return objects under an owner that you have permission to return. --- .../Region/Environment/Scenes/Scene.Inventory.cs | 51 ++++++++++++---------- OpenSim/Region/Environment/Scenes/Scene.cs | 1 + 2 files changed, 30 insertions(+), 22 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes') diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index a284ba5..850962d 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -1690,31 +1690,32 @@ namespace OpenSim.Region.Environment.Scenes //returnstring += "\n"; - CachedUserInfo userInfo = - CommsManager.UserProfileCacheService.GetUserDetails(AgentId); - if (userInfo != null) - { - LLUUID folderID = LLUUID.Zero; - - List subrootfolders = userInfo.RootFolder.RequestListOfFolders(); - foreach (InventoryFolderBase flder in subrootfolders) - { - if (flder.Name == "Lost And Found") - { - folderID = flder.ID; - break; - } - } - - if (folderID == LLUUID.Zero) - { - folderID = userInfo.RootFolder.ID; - } + bool permissionToDelete = false; for (int i = 0; i < returnobjects.Length; i++) { + CachedUserInfo userInfo = + CommsManager.UserProfileCacheService.GetUserDetails(returnobjects[i].OwnerID); + if (userInfo != null) + { + LLUUID folderID = LLUUID.Zero; + + List subrootfolders = userInfo.RootFolder.RequestListOfFolders(); + foreach (InventoryFolderBase flder in subrootfolders) + { + if (flder.Name == "Lost And Found") + { + folderID = flder.ID; + break; + } + } + + if (folderID == LLUUID.Zero) + { + folderID = userInfo.RootFolder.ID; + } permissionToDelete = ExternalChecks.ExternalChecksCanDeleteObject(returnobjects[i].UUID, AgentId); // If the user doesn't have permission, go on to the next one. @@ -1732,7 +1733,7 @@ namespace OpenSim.Region.Environment.Scenes InventoryItemBase item = new InventoryItemBase(); item.Creator = returnobjects[i].RootPart.CreatorID; - item.Owner = AgentId; + item.Owner = returnobjects[i].OwnerID; item.ID = LLUUID.Random(); item.AssetID = asset.FullID; item.Description = asset.Description; @@ -1768,7 +1769,13 @@ namespace OpenSim.Region.Environment.Scenes // TODO: add the new fields (Flags, Sale info, etc) userInfo.AddItem(item); - + + ScenePresence notifyUser = GetScenePresence(item.Owner); + if (notifyUser != null) + { + notifyUser.ControllingClient.SendInventoryItemCreateUpdate(item); + } + SceneObjectGroup ObjectDeleting = returnobjects[i]; returnobjects[i] = null; diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 71c5b18..a42bad5 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -1660,6 +1660,7 @@ namespace OpenSim.Region.Environment.Scenes client.OnSetStartLocationRequest += SetHomeRezPoint; client.OnUndo += m_innerScene.HandleUndo; client.OnObjectGroupRequest += m_innerScene.HandleObjectGroupUpdate; + client.OnParcelReturnObjectsRequest += LandChannel.ReturnObjectsInParcel; // EventManager.TriggerOnNewClient(client); } -- cgit v1.1