From 5c21ec6d108313080ccf8bdf2212ce52ad80bbb5 Mon Sep 17 00:00:00 2001 From: Dr Scofield Date: Fri, 14 Nov 2008 13:03:18 +0000 Subject: reverting #7295, as it still fails a test case (as pointed out very kindly by sean) --- lesson learned: just running a "make test" is not sufficient, you need to precede it by a "make clean". --- .../Modules/World/Permissions/PermissionsModule.cs | 2 +- .../Region/Environment/Scenes/Scene.Inventory.cs | 18 ++++------- .../Scenes/SceneObjectGroup.Inventory.cs | 35 +++++----------------- .../Scenes/SceneObjectPart.Inventory.cs | 18 ++++------- 4 files changed, 21 insertions(+), 52 deletions(-) (limited to 'OpenSim/Region/Environment') diff --git a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs index c5a9066..87348fc 100644 --- a/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Permissions/PermissionsModule.cs @@ -277,7 +277,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions public bool PropagatePermissions() { - return !m_bypassPermissions; + return false; } public bool BypassPermissions() diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 590bea0..12095e5 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -1179,8 +1179,7 @@ namespace OpenSim.Region.Environment.Scenes destTaskItem.InvType = srcTaskItem.InvType; destTaskItem.Type = srcTaskItem.Type; - destPart.AddInventoryItem(destTaskItem, part.OwnerID!=destPart.OwnerID - && ExternalChecks.ExternalChecksPropagatePermissions()); + destPart.AddInventoryItem(destTaskItem); if ((srcTaskItem.CurrentPermissions & (uint)PermissionMask.Copy) == 0) part.RemoveInventoryItem(itemId); @@ -1250,16 +1249,11 @@ namespace OpenSim.Region.Environment.Scenes if (part != null) { - TaskInventoryItem currentItem = part.GetInventoryItem(itemID); - bool allowInventoryDrop = (part.GetEffectiveObjectFlags() - & (uint)PrimFlags.AllowInventoryDrop) != 0; - // Explicity allow anyone to add to the inventory if the AllowInventoryDrop - // flag has been set. Don't however let them update an item unless - // they pass the external checks - if (!ExternalChecks.ExternalChecksCanEditObjectInventory(part.UUID, remoteClient.AgentId) - && (currentItem != null || !allowInventoryDrop )) + if (!ExternalChecks.ExternalChecksCanEditObjectInventory(part.UUID, remoteClient.AgentId)) return; + TaskInventoryItem currentItem = part.GetInventoryItem(itemID); + if (currentItem == null) { UUID copyID = UUID.Random(); @@ -1423,7 +1417,7 @@ namespace OpenSim.Region.Environment.Scenes taskItem.PermsMask = 0; taskItem.AssetID = asset.FullID; - part.AddInventoryItem(taskItem, false); + part.AddInventoryItem(taskItem); part.GetProperties(remoteClient); part.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0); @@ -1518,7 +1512,7 @@ namespace OpenSim.Region.Environment.Scenes destTaskItem.InvType = srcTaskItem.InvType; destTaskItem.Type = srcTaskItem.Type; - destPart.AddInventoryItemExclusive(destTaskItem, false); + destPart.AddInventoryItemExclusive(destTaskItem); if (running > 0) { diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs index 8275ceb..bfa9763 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs @@ -151,42 +151,23 @@ namespace OpenSim.Region.Environment.Scenes taskItem.AssetID = item.AssetID; taskItem.Name = item.Name; taskItem.Description = item.Description; - taskItem.OwnerID = part.OwnerID; // Transfer ownership + taskItem.OwnerID = item.Owner; taskItem.CreatorID = item.Creator; taskItem.Type = item.AssetType; taskItem.InvType = item.InvType; - if (remoteClient!=null && remoteClient.AgentId!=part.OwnerID && - m_scene.ExternalChecks.ExternalChecksPropagatePermissions()) { - taskItem.BasePermissions = item.BasePermissions & item.NextPermissions; - taskItem.CurrentPermissions = item.CurrentPermissions & item.NextPermissions; - taskItem.EveryonePermissions = item.EveryOnePermissions & item.NextPermissions; - taskItem.NextPermissions = item.NextPermissions; - taskItem.CurrentPermissions |= 8; - } else { - taskItem.BasePermissions = item.BasePermissions; - taskItem.CurrentPermissions = item.CurrentPermissions; - taskItem.CurrentPermissions |= 8; - taskItem.EveryonePermissions = item.EveryOnePermissions; - taskItem.NextPermissions = item.NextPermissions; - } - - - + taskItem.BasePermissions = item.BasePermissions; + taskItem.CurrentPermissions = item.CurrentPermissions; + // FIXME: ignoring group permissions for now as they aren't stored in item + taskItem.EveryonePermissions = item.EveryOnePermissions; + taskItem.NextPermissions = item.NextPermissions; taskItem.Flags = item.Flags; // TODO: These are pending addition of those fields to TaskInventoryItem // taskItem.SalePrice = item.SalePrice; // taskItem.SaleType = item.SaleType; taskItem.CreationDate = (uint)item.CreationDate; - - bool addFromAllowedDrop = false; - if (remoteClient!=null) - { - addFromAllowedDrop = remoteClient.AgentId!=part.OwnerID && - m_scene.ExternalChecks.ExternalChecksPropagatePermissions(); - } - - part.AddInventoryItem(taskItem, addFromAllowedDrop); + + part.AddInventoryItem(taskItem); return true; } diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs index fa66515..501f199 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs @@ -289,16 +289,16 @@ namespace OpenSim.Region.Environment.Scenes /// name is chosen. /// /// - public void AddInventoryItem(TaskInventoryItem item, bool allowedDrop) + public void AddInventoryItem(TaskInventoryItem item) { - AddInventoryItem(item.Name, item, allowedDrop); + AddInventoryItem(item.Name, item); } /// /// Add an item to this prim's inventory. If an item with the same name already exists, it is replaced. /// /// - public void AddInventoryItemExclusive(TaskInventoryItem item, bool allowedDrop) + public void AddInventoryItemExclusive(TaskInventoryItem item) { List il = new List(m_taskInventory.Values); foreach (TaskInventoryItem i in il) @@ -313,7 +313,7 @@ namespace OpenSim.Region.Environment.Scenes } } - AddInventoryItem(item.Name, item, allowedDrop); + AddInventoryItem(item.Name, item); } /// @@ -324,10 +324,7 @@ namespace OpenSim.Region.Environment.Scenes /// The item itself. The name within this structure is ignored in favour of the name /// given in this method's arguments /// - /// - // Item was only added to inventory because AllowedDrop is set - /// - protected void AddInventoryItem(string name, TaskInventoryItem item, bool allowedDrop) + protected void AddInventoryItem(string name, TaskInventoryItem item) { name = FindAvailableInventoryName(name); if (name == String.Empty) @@ -340,10 +337,7 @@ namespace OpenSim.Region.Environment.Scenes lock (m_taskInventory) { m_taskInventory.Add(item.ItemID, item); - if (allowedDrop) - TriggerScriptChangedEvent(Changed.ALLOWED_DROP); - else - TriggerScriptChangedEvent(Changed.INVENTORY); + TriggerScriptChangedEvent(Changed.INVENTORY); } m_inventorySerial++; -- cgit v1.1