diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 52e2e83..a1f1ea5 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -1902,21 +1902,29 @@ namespace OpenSim.Region.Framework.Scenes | |||
1902 | else // oopsies | 1902 | else // oopsies |
1903 | item.Folder = UUID.Zero; | 1903 | item.Folder = UUID.Zero; |
1904 | 1904 | ||
1905 | // Set up base perms properly | ||
1906 | uint permsBase = (uint)(PermissionMask.Move | PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify); | ||
1907 | permsBase &= grp.RootPart.BaseMask; | ||
1908 | permsBase |= (uint)PermissionMask.Move; | ||
1909 | |||
1910 | // Make sure we don't lock it | ||
1911 | grp.RootPart.NextOwnerMask |= (uint)PermissionMask.Move; | ||
1912 | |||
1905 | if ((remoteClient.AgentId != grp.RootPart.OwnerID) && Permissions.PropagatePermissions()) | 1913 | if ((remoteClient.AgentId != grp.RootPart.OwnerID) && Permissions.PropagatePermissions()) |
1906 | { | 1914 | { |
1907 | item.BasePermissions = grp.RootPart.NextOwnerMask; | 1915 | item.BasePermissions = permsBase & grp.RootPart.NextOwnerMask; |
1908 | item.CurrentPermissions = grp.RootPart.NextOwnerMask; | 1916 | item.CurrentPermissions = permsBase & grp.RootPart.NextOwnerMask; |
1909 | item.NextPermissions = grp.RootPart.NextOwnerMask; | 1917 | item.NextPermissions = permsBase & grp.RootPart.NextOwnerMask; |
1910 | item.EveryOnePermissions = grp.RootPart.EveryoneMask & grp.RootPart.NextOwnerMask; | 1918 | item.EveryOnePermissions = permsBase & grp.RootPart.EveryoneMask & grp.RootPart.NextOwnerMask; |
1911 | item.GroupPermissions = grp.RootPart.GroupMask & grp.RootPart.NextOwnerMask; | 1919 | item.GroupPermissions = permsBase & grp.RootPart.GroupMask & grp.RootPart.NextOwnerMask; |
1912 | } | 1920 | } |
1913 | else | 1921 | else |
1914 | { | 1922 | { |
1915 | item.BasePermissions = grp.RootPart.BaseMask; | 1923 | item.BasePermissions = permsBase; |
1916 | item.CurrentPermissions = grp.RootPart.OwnerMask; | 1924 | item.CurrentPermissions = permsBase & grp.RootPart.OwnerMask; |
1917 | item.NextPermissions = grp.RootPart.NextOwnerMask; | 1925 | item.NextPermissions = permsBase & grp.RootPart.NextOwnerMask; |
1918 | item.EveryOnePermissions = grp.RootPart.EveryoneMask; | 1926 | item.EveryOnePermissions = permsBase & grp.RootPart.EveryoneMask; |
1919 | item.GroupPermissions = grp.RootPart.GroupMask; | 1927 | item.GroupPermissions = permsBase & grp.RootPart.GroupMask; |
1920 | } | 1928 | } |
1921 | item.CreationDate = Util.UnixTimeSinceEpoch(); | 1929 | item.CreationDate = Util.UnixTimeSinceEpoch(); |
1922 | 1930 | ||