From 3fc2d86dfe9fa041097eb33a4d7d3660c72df373 Mon Sep 17 00:00:00 2001
From: Adam Frisby
Date: Sat, 4 Aug 2007 00:56:56 +0000
Subject: * More work on PermissionManager

---
 OpenSim/Region/Environment/EstateManager.cs     |  9 +++---
 OpenSim/Region/Environment/PermissionManager.cs | 40 +++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 5 deletions(-)

diff --git a/OpenSim/Region/Environment/EstateManager.cs b/OpenSim/Region/Environment/EstateManager.cs
index 67cfba6..83bfbb4 100644
--- a/OpenSim/Region/Environment/EstateManager.cs
+++ b/OpenSim/Region/Environment/EstateManager.cs
@@ -70,9 +70,8 @@ namespace OpenSim.Region.Environment
         /// <param name="corner">Which corner</param>
         /// <param name="lowValue">Minimum height that texture range should cover</param>
         /// <param name="highValue">Maximum height that texture range should cover</param>
-        public void setEstateTextureRange(UInt16 corner, float lowValue, float highValue)
+        public void setEstateTextureRange(Int16 corner, float lowValue, float highValue)
         {
-
             switch (corner)
             {
                 case 0:
@@ -99,7 +98,7 @@ namespace OpenSim.Region.Environment
         /// </summary>
         /// <param name="band">Which texture band</param>
         /// <param name="textureUUID">The UUID of the texture</param>
-        public void setTerrainTexture(UInt16 band, LLUUID textureUUID)
+        public void setTerrainTexture(Int16 band, LLUUID textureUUID)
         {
             switch (band)
             {
@@ -265,7 +264,7 @@ namespace OpenSim.Region.Environment
                 if (splitField.Length == 3)
                 {
 
-                    UInt16 corner = Convert.ToInt16(splitField[0]);
+                    Int16 corner = Convert.ToInt16(splitField[0]);
                     float lowValue = (float)Convert.ToDecimal(splitField[1]);
                     float highValue = (float)Convert.ToDecimal(splitField[2]);
 
@@ -283,7 +282,7 @@ namespace OpenSim.Region.Environment
                 string[] splitField = s.Split(' ');
                 if (splitField.Length == 2)
                 {
-                    UInt16 corner = Convert.ToInt16(splitField[0]);
+                    Int16 corner = Convert.ToInt16(splitField[0]);
                     LLUUID textureUUID = new LLUUID(splitField[1]);
 
                     setTerrainTexture(corner, textureUUID);
diff --git a/OpenSim/Region/Environment/PermissionManager.cs b/OpenSim/Region/Environment/PermissionManager.cs
index fc9e58d..e768d7f 100644
--- a/OpenSim/Region/Environment/PermissionManager.cs
+++ b/OpenSim/Region/Environment/PermissionManager.cs
@@ -20,6 +20,15 @@ namespace OpenSim.Region.Environment
             m_scene = world;
         }
 
+        public delegate void OnPermissionErrorDelegate(LLUUID user, string reason);
+        public event OnPermissionErrorDelegate OnPermissionError;
+
+        protected virtual void SendPermissionError(LLUUID user, string reason)
+        {
+            if (OnPermissionError != null)
+                OnPermissionError(user, reason);
+        }
+
         protected virtual bool IsAdministrator(LLUUID user)
         {
             return m_scene.RegionInfo.MasterAvatarAssignedUUID == user;
@@ -104,5 +113,36 @@ namespace OpenSim.Region.Environment
         {
             return false;
         }
+
+        public virtual bool CanEditEstateSettings(LLUUID user)
+        {
+            // Default: deny
+            bool canEdit = false;
+
+            // Estate admins should be able to use estate tools
+            if (IsEstateManager(user))
+                canEdit = true;
+
+            // Administrators always have permission
+            if (IsAdministrator(user))
+                canEdit = true;
+
+            return canEdit;
+        }
+
+        public virtual bool CanEditParcel(LLUUID user, Land parcel)
+        {
+            return false;
+        }
+
+        public virtual bool CanSellParcel(LLUUID user, Land parcel)
+        {
+            return false;
+        }
+
+        public virtual bool CanAbandonParcel(LLUUID user, Land parcel)
+        {
+            return false;
+        }
     }
 }
-- 
cgit v1.1