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