From 1494c84f56221ae264c3bba3dd5a23510bc43aea Mon Sep 17 00:00:00 2001
From: Melanie
Date: Mon, 3 May 2010 02:40:52 +0100
Subject: Fix a bug in owner change notification

---
 OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index eea73ff..8b83b06 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -1051,7 +1051,9 @@ namespace OpenSim.Region.Framework.Scenes
                         {
                             if (engine != null)
                             {
-                                engine.PostScriptEvent(item.ItemID, "changed", new Object[] { Changed.OWNER });
+                                if (item.OwnerChanged)
+                                    engine.PostScriptEvent(item.ItemID, "changed", new Object[] { (int)Changed.OWNER });
+                                item.OwnerChanged = false;
                                 engine.ResumeScript(item.ItemID);
                             }
                         }
-- 
cgit v1.1


From b10811a13b8fab81ce00d544d8efe081792bdaaa Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 3 May 2010 09:50:55 -0700
Subject: Assorted bug fixes in hypergrid linking.

---
 .../Hypergrid/HypergridServiceInConnectorModule.cs |  2 +-
 .../Grid/RemoteGridServiceConnector.cs             |  5 +++
 .../Hypergrid/GatekeeperServerConnector.cs         |  1 -
 .../Server/Handlers/Hypergrid/HypergridHandlers.cs |  3 ++
 .../Connectors/Grid/GridServiceConnector.cs        |  5 +--
 OpenSim/Services/GridService/GridService.cs        |  5 ++-
 OpenSim/Services/GridService/HypergridLinker.cs    | 52 ++++++++++++----------
 .../Services/HypergridService/GatekeeperService.cs |  3 +-
 8 files changed, 45 insertions(+), 31 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs
index c6848bb..235914a 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs
@@ -113,10 +113,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Hypergrid
 
                 ISimulationService simService = scene.RequestModuleInterface<ISimulationService>();
                 m_HypergridHandler = new GatekeeperServiceInConnector(m_Config, MainServer.Instance, simService);
-                scene.RegisterModuleInterface<IGatekeeperService>(m_HypergridHandler.GateKeeper);
 
                 new UserAgentServerConnector(m_Config, MainServer.Instance);
             }
+            scene.RegisterModuleInterface<IGatekeeperService>(m_HypergridHandler.GateKeeper);
         }
 
         #endregion
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs
index 2c234d2..d44ddf4 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/RemoteGridServiceConnector.cs
@@ -191,10 +191,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
         public override List<GridRegion> GetRegionsByName(UUID scopeID, string name, int maxNumber)
         {
             List<GridRegion> rinfo = m_LocalGridService.GetRegionsByName(scopeID, name, maxNumber);
+            //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Local GetRegionsByName {0} found {1} regions", name, rinfo.Count);
             List<GridRegion> grinfo = base.GetRegionsByName(scopeID, name, maxNumber);
 
             if (grinfo != null)
+            {
+                //m_log.DebugFormat("[REMOTE GRID CONNECTOR]: Remote GetRegionsByName {0} found {1} regions", name, grinfo.Count);
                 rinfo.AddRange(grinfo);
+            }
+
             return rinfo;
         }
 
diff --git a/OpenSim/Server/Handlers/Hypergrid/GatekeeperServerConnector.cs b/OpenSim/Server/Handlers/Hypergrid/GatekeeperServerConnector.cs
index f2d9321..dcb2725 100644
--- a/OpenSim/Server/Handlers/Hypergrid/GatekeeperServerConnector.cs
+++ b/OpenSim/Server/Handlers/Hypergrid/GatekeeperServerConnector.cs
@@ -70,7 +70,6 @@ namespace OpenSim.Server.Handlers.Hypergrid
             server.AddXmlRPCHandler("get_region", hghandlers.GetRegion, false);
 
             server.AddHTTPHandler("/foreignagent/", new GatekeeperAgentHandler(m_GatekeeperService).Handler);
-
         }
 
         public GatekeeperServiceInConnector(IConfigSource config, IHttpServer server)
diff --git a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
index 0b65245..5d03097 100644
--- a/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
+++ b/OpenSim/Server/Handlers/Hypergrid/HypergridHandlers.cs
@@ -48,6 +48,7 @@ namespace OpenSim.Server.Handlers.Hypergrid
         public HypergridHandlers(IGatekeeperService gatekeeper)
         {
             m_GatekeeperService = gatekeeper;
+            m_log.DebugFormat("[HYPERGRID HANDLERS]: Active");
         }
 
         /// <summary>
@@ -61,6 +62,8 @@ namespace OpenSim.Server.Handlers.Hypergrid
             //string host = (string)requestData["host"];
             //string portstr = (string)requestData["port"];
             string name = (string)requestData["region_name"];
+            if (name == null)
+                name = string.Empty;
 
             UUID regionID = UUID.Zero;
             string externalName = string.Empty;
diff --git a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs
index a453d99..0ec8912 100644
--- a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs
@@ -300,7 +300,7 @@ namespace OpenSim.Services.Connectors
                     if (replyData["result"] is Dictionary<string, object>)
                         rinfo = new GridRegion((Dictionary<string, object>)replyData["result"]);
                     else
-                        m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1}-{2} received invalid response",
+                        m_log.DebugFormat("[GRID CONNECTOR]: GetRegionByPosition {0}, {1}-{2} received no region",
                             scopeID, x, y);
                 }
                 else
@@ -391,9 +391,6 @@ namespace OpenSim.Services.Connectors
                             GridRegion rinfo = new GridRegion((Dictionary<string, object>)r);
                             rinfos.Add(rinfo);
                         }
-                        else
-                            m_log.DebugFormat("[GRID CONNECTOR]: GetRegionsByName {0}, {1}, {2} received invalid response",
-                                scopeID, name, maxNumber);
                     }
                 }
                 else
diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs
index 2faf018..4089fce 100644
--- a/OpenSim/Services/GridService/GridService.cs
+++ b/OpenSim/Services/GridService/GridService.cs
@@ -315,6 +315,8 @@ namespace OpenSim.Services.GridService
 
         public List<GridRegion> GetRegionsByName(UUID scopeID, string name, int maxNumber)
         {
+            m_log.DebugFormat("[GRID SERVICE]: GetRegionsByName {0}", name);
+
             List<RegionData> rdatas = m_Database.Get("%" + name + "%", scopeID);
 
             int count = 0;
@@ -329,7 +331,7 @@ namespace OpenSim.Services.GridService
                 }
             }
 
-            if (m_AllowHypergridMapSearch && rdatas == null || (rdatas != null && rdatas.Count == 0) && name.Contains("."))
+            if (m_AllowHypergridMapSearch && (rdatas == null || (rdatas != null && rdatas.Count == 0) && name.Contains(".")))
             {
                 GridRegion r = m_HypergridLinker.LinkRegion(scopeID, name);
                 if (r != null)
@@ -397,6 +399,7 @@ namespace OpenSim.Services.GridService
                     ret.Add(RegionData2RegionInfo(r));
             }
 
+            m_log.DebugFormat("[GRID SERVICE]: GetDefaultRegions returning {0} regions", ret.Count);
             return ret;
         }
 
diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs
index 58746d0..af603b2 100644
--- a/OpenSim/Services/GridService/HypergridLinker.cs
+++ b/OpenSim/Services/GridService/HypergridLinker.cs
@@ -79,9 +79,16 @@ namespace OpenSim.Services.GridService
                         m_DefaultRegion = defs[0];
                     else
                     {
-                        // Best guess, may be totally off
-                        m_DefaultRegion = new GridRegion(1000, 1000);
-                        m_log.WarnFormat("[HYPERGRID LINKER]: This grid does not have a default region. Assuming default coordinates at 1000, 1000.");
+                        // Get any region
+                        defs = m_GridService.GetRegionsByName(m_ScopeID, "", 1);
+                        if (defs != null && defs.Count > 0)
+                            m_DefaultRegion = defs[0];
+                        else
+                        {
+                            // This shouldn't happen
+                            m_DefaultRegion = new GridRegion(1000, 1000);
+                            m_log.Error("[HYPERGRID LINKER]: Something is wrong with this grid. It has no regions?");
+                        }
                     }
                 }
                 return m_DefaultRegion;
@@ -90,7 +97,7 @@ namespace OpenSim.Services.GridService
 
         public HypergridLinker(IConfigSource config, GridService gridService, IRegionData db)
         {
-            m_log.DebugFormat("[HYPERGRID LINKER]: Starting...");
+            m_log.DebugFormat("[HYPERGRID LINKER]: Starting with db {0}", db.GetType());
 
             m_Database = db;
             m_GridService = gridService;
@@ -196,7 +203,7 @@ namespace OpenSim.Services.GridService
         public bool TryCreateLink(UUID scopeID, int xloc, int yloc,
             string externalRegionName, uint externalPort, string externalHostName, out GridRegion regInfo, out string reason)
         {
-            m_log.DebugFormat("[HYPERGRID LINKER]: Link to {0}:{1}, in {2}-{3}", externalHostName, externalPort, xloc, yloc);
+            m_log.DebugFormat("[HYPERGRID LINKER]: Link to {0}:{1}:{2}, in {3}-{4}", externalHostName, externalPort, externalRegionName, xloc, yloc);
 
             reason = string.Empty;
             regInfo = new GridRegion();
@@ -280,29 +287,28 @@ namespace OpenSim.Services.GridService
 
         public bool TryUnlinkRegion(string mapName)
         {
+            m_log.DebugFormat("[HYPERGRID LINKER]: Request to unlink {0}", mapName);
             GridRegion regInfo = null;
-            if (mapName.Contains(":"))
+
+            List<RegionData> regions = m_Database.Get(mapName, m_ScopeID);
+            if (regions != null && regions.Count > 0)
             {
-                string host = "127.0.0.1";
-                //string portstr;
-                //string regionName = "";
-                uint port = 9000;
-                string[] parts = mapName.Split(new char[] { ':' });
-                if (parts.Length >= 1)
+                OpenSim.Data.RegionFlags rflags = (OpenSim.Data.RegionFlags)Convert.ToInt32(regions[0].Data["flags"]);
+                if ((rflags & OpenSim.Data.RegionFlags.Hyperlink) != 0)
                 {
-                    host = parts[0];
+                    regInfo = new GridRegion(); 
+                    regInfo.RegionID = regions[0].RegionID;
+                    regInfo.ScopeID = m_ScopeID;
                 }
-
-                foreach (GridRegion r in m_HyperlinkRegions.Values)
-                    if (host.Equals(r.ExternalHostName) && (port == r.HttpPort))
-                        regInfo = r;
-            }
-            else
-            {
-                foreach (GridRegion r in m_HyperlinkRegions.Values)
-                    if (r.RegionName.Equals(mapName))
-                        regInfo = r;
             }
+
+            //foreach (GridRegion r in m_HyperlinkRegions.Values)
+            //{
+            //    m_log.DebugFormat("XXX Comparing {0}:{1} with {2}:{3}", host, port, r.ExternalHostName, r.HttpPort);
+            //    if (host.Equals(r.ExternalHostName) && (port == r.HttpPort))
+            //        regInfo = r;
+            //}
+
             if (regInfo != null)
             {
                 RemoveHyperlinkRegion(regInfo.RegionID);
diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs
index 56744b6..c5cfe75 100644
--- a/OpenSim/Services/HypergridService/GatekeeperService.cs
+++ b/OpenSim/Services/HypergridService/GatekeeperService.cs
@@ -119,7 +119,8 @@ namespace OpenSim.Services.HypergridService
             imageURL = string.Empty;
             reason = string.Empty;
 
-            m_log.DebugFormat("[GATEKEEPER SERVICE]: Request to link to {0}", (regionName == string.Empty ? "default region" : regionName));
+
+            m_log.DebugFormat("[GATEKEEPER SERVICE]: Request to link to {0}", (regionName == string.Empty)? "default region" : regionName);
             if (!m_AllowTeleportsToAnyRegion || regionName == string.Empty)
             {
                 List<GridRegion> defs = m_GridService.GetDefaultRegions(m_ScopeID);
-- 
cgit v1.1


From 92561aef8dd1658bc29e5f9458c94407be7da582 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Mon, 3 May 2010 23:44:23 +0200
Subject: Store given items in correct parent folder. Fixes items given to
 offline avatars not getting lost.

---
 OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 9117224..20760b2 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -415,6 +415,25 @@ namespace OpenSim.Region.Framework.Scenes
                     itemCopy.BasePermissions = item.BasePermissions;
                 }
                 
+                if (itemCopy.Folder == UUID.Zero)
+                {
+                    InventoryFolderBase folder = InventoryService.GetFolderForType(recipient, (AssetType)itemCopy.AssetType);
+
+                    if (folder != null)
+                    {
+                        itemCopy.Folder = folder.ID;
+                    }
+                    else
+                    {
+                        InventoryFolderBase root = InventoryService.GetRootFolder(recipient);
+
+                        if (root != null)
+                            itemCopy.Folder = root.ID;
+                        else
+                            return null; // No destination
+                    }
+                }
+
                 itemCopy.GroupID = UUID.Zero;
                 itemCopy.GroupOwned = false;
                 itemCopy.Flags = item.Flags;
-- 
cgit v1.1


From 92dff5edb1333a798e21f956ea6291b357dd0c20 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Mon, 3 May 2010 23:45:05 +0200
Subject: Add folder version incrementing to XInventoryService. Fixes offline
 give for avatar->avatar

---
 OpenSim/Data/MySQL/MySQLXInventoryData.cs | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

(limited to 'OpenSim')

diff --git a/OpenSim/Data/MySQL/MySQLXInventoryData.cs b/OpenSim/Data/MySQL/MySQLXInventoryData.cs
index 307a4c7..a3b728b 100644
--- a/OpenSim/Data/MySQL/MySQLXInventoryData.cs
+++ b/OpenSim/Data/MySQL/MySQLXInventoryData.cs
@@ -160,5 +160,36 @@ namespace OpenSim.Data.MySQL
                 }
             }
         }
+
+        public override bool Store(XInventoryItem item)
+        {
+            if (base.Store(item))
+                return false;
+
+            using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
+            {
+                dbcon.Open();
+
+                using (MySqlCommand cmd = new MySqlCommand())
+                {
+                    cmd.Connection = dbcon;
+
+                    cmd.CommandText = String.Format("update inventoryfolders set version=version+1 where folderID = ?folderID");
+                    cmd.Parameters.AddWithValue("?folderID", item.parentFolderID.ToString());
+
+                    try
+                    {
+                        cmd.ExecuteNonQuery();
+                    }
+                    catch (Exception e)
+                    {
+                        return false;
+                    }
+                    cmd.Dispose();
+                }
+                dbcon.Close();
+            }
+            return true;
+        }
     }
 }
-- 
cgit v1.1


From 23d7a942ea88c597768430c09f7ff42331ac9c96 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Mon, 3 May 2010 23:53:49 +0200
Subject: Refix the fix

---
 OpenSim/Data/MySQL/MySQLXInventoryData.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Data/MySQL/MySQLXInventoryData.cs b/OpenSim/Data/MySQL/MySQLXInventoryData.cs
index a3b728b..0fe801d 100644
--- a/OpenSim/Data/MySQL/MySQLXInventoryData.cs
+++ b/OpenSim/Data/MySQL/MySQLXInventoryData.cs
@@ -163,7 +163,7 @@ namespace OpenSim.Data.MySQL
 
         public override bool Store(XInventoryItem item)
         {
-            if (base.Store(item))
+            if (!base.Store(item))
                 return false;
 
             using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
-- 
cgit v1.1


From 9635af61f082ab1619a9ca482c76e2e01b0a4c55 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Tue, 4 May 2010 17:56:30 +0200
Subject: Allow regions to get the list of the other regions in the estate

---
 OpenSim/Data/MySQL/MySQLEstateData.cs | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs
index d0c02f0..08e2144 100644
--- a/OpenSim/Data/MySQL/MySQLEstateData.cs
+++ b/OpenSim/Data/MySQL/MySQLEstateData.cs
@@ -474,7 +474,36 @@ namespace OpenSim.Data.MySQL
 
         public List<UUID> GetRegions(int estateID)
         {
-            return new List<UUID>();
+            List<UUID> result = new List<UUID>();
+
+            using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
+            {
+                dbcon.Open();
+
+                try
+                {
+                    using (MySqlCommand cmd = dbcon.CreateCommand())
+                    {
+                        cmd.CommandText = "select RegionID from estate_map where EstateID = ?EstateID";
+                        cmd.Parameters.AddWithValue("?EstateID", estateID.ToString());
+
+                        using (IDataReader reader = cmd.ExecuteReader())
+                        {
+                            while(reader.Read())
+                                result.Add(new UUID(reader["RegionID"].ToString()));
+                            reader.Close();
+                        }
+                    }
+                }
+                catch (Exception e)
+                {
+                    m_log.Error("[REGION DB]: Error reading estate map. " + e.ToString());
+                    return result;
+                }
+                dbcon.Close();
+            }
+
+            return result;
         }
 
         public bool DeleteEstate(int estateID)
-- 
cgit v1.1


From 6eea0a39316483d2e1d02374e6caf2397ed9e3b6 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Tue, 4 May 2010 18:10:13 +0200
Subject: Allow reloading of estate settings into a running region. Move sun
 update helper into Scene, since that is less evil than exposing
 m_storageManager to the public.

---
 .../World/Estate/EstateManagementModule.cs         | 40 ++-----------------
 OpenSim/Region/Framework/Scenes/Scene.cs           | 46 ++++++++++++++++++++++
 2 files changed, 49 insertions(+), 37 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
index 91d40ab..77068b0 100644
--- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
@@ -212,7 +212,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
             m_scene.RegionInfo.RegionSettings.FixedSun = UseFixedSun;
             m_scene.RegionInfo.RegionSettings.SunPosition = SunHour;
 
-            TriggerEstateToolsSunUpdate();
+            m_scene.TriggerEstateSunUpdate();
 
             //m_log.Debug("[ESTATE]: UFS: " + UseFixedSun.ToString());
             //m_log.Debug("[ESTATE]: SunHour: " + SunHour.ToString());
@@ -861,7 +861,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
 
             m_scene.RegionInfo.EstateSettings.Save();
 
-            TriggerEstateToolsSunUpdate();
+            m_scene.TriggerEstateSunUpdate();
 
             sendDetailedEstateData(remoteClient, invoice);
         }
@@ -983,7 +983,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
         {
             // Sets up the sun module based no the saved Estate and Region Settings
             // DO NOT REMOVE or the sun will stop working
-            TriggerEstateToolsSunUpdate();
+            m_scene.TriggerEstateSunUpdate();
         }
 
         public void Close()
@@ -1004,40 +1004,6 @@ namespace OpenSim.Region.CoreModules.World.Estate
 
         #region Other Functions
 
-        private void TriggerEstateToolsSunUpdate()
-        {
-            float sun;
-            if (m_scene.RegionInfo.RegionSettings.UseEstateSun)
-            {
-                sun = (float)m_scene.RegionInfo.EstateSettings.SunPosition;
-                if (m_scene.RegionInfo.EstateSettings.UseGlobalTime)
-                {
-                    sun = m_scene.EventManager.GetCurrentTimeAsSunLindenHour() - 6.0f;
-                }
-
-                // 
-                m_scene.EventManager.TriggerEstateToolsSunUpdate(
-                        m_scene.RegionInfo.RegionHandle,
-                        m_scene.RegionInfo.EstateSettings.FixedSun,
-                        m_scene.RegionInfo.RegionSettings.UseEstateSun, 
-                        sun);
-            }
-            else
-            {
-                // Use the Sun Position from the Region Settings
-                sun = (float)m_scene.RegionInfo.RegionSettings.SunPosition - 6.0f;
-
-                m_scene.EventManager.TriggerEstateToolsSunUpdate(
-                        m_scene.RegionInfo.RegionHandle,
-                        m_scene.RegionInfo.RegionSettings.FixedSun,
-                        m_scene.RegionInfo.RegionSettings.UseEstateSun, 
-                        sun);
-            }
-
-
-        }
-
-
         public void changeWaterHeight(float height)
         {
             setRegionTerrainSettings(height,
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 3e4694a..da18629 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -5075,5 +5075,51 @@ namespace OpenSim.Region.Framework.Scenes
         {
             return new Vector3(x, y, GetGroundHeight(x, y));
         }
+
+        public List<UUID> GetEstateRegions(int estateID)
+        {
+            if (m_storageManager.EstateDataStore == null)
+                return new List<UUID>();
+
+            return m_storageManager.EstateDataStore.GetRegions(estateID);
+        }
+
+        public void ReloadEstateData()
+        {
+            m_regInfo.EstateSettings = m_storageManager.EstateDataStore.LoadEstateSettings(m_regInfo.RegionID, false);
+
+            TriggerEstateSunUpdate();
+        }
+
+        public void TriggerEstateSunUpdate()
+        {
+            float sun;
+            if (RegionInfo.RegionSettings.UseEstateSun)
+            {
+                sun = (float)RegionInfo.EstateSettings.SunPosition;
+                if (RegionInfo.EstateSettings.UseGlobalTime)
+                {
+                    sun = EventManager.GetCurrentTimeAsSunLindenHour() - 6.0f;
+                }
+
+                // 
+                EventManager.TriggerEstateToolsSunUpdate(
+                        RegionInfo.RegionHandle,
+                        RegionInfo.EstateSettings.FixedSun,
+                        RegionInfo.RegionSettings.UseEstateSun,
+                        sun);
+            }
+            else
+            {
+                // Use the Sun Position from the Region Settings
+                sun = (float)RegionInfo.RegionSettings.SunPosition - 6.0f;
+
+                EventManager.TriggerEstateToolsSunUpdate(
+                        RegionInfo.RegionHandle,
+                        RegionInfo.RegionSettings.FixedSun,
+                        RegionInfo.RegionSettings.UseEstateSun,
+                        sun);
+            }
+        }
     }
 }
-- 
cgit v1.1


From 9cf0077bf9792833ec59b2d3ff69663c4dae1bbd Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Tue, 4 May 2010 18:31:52 +0200
Subject: Add "reload estate" command to sims

---
 OpenSim/Region/Framework/Scenes/Scene.cs | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index da18629..1a46837 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -646,6 +646,10 @@ namespace OpenSim.Region.Framework.Scenes
                 }
             }
 
+            MainConsole.Instance.Commands.AddCommand("region", false, "reload estate",
+                                          "reload estate",
+                                          "Reload the estate data", HandleReloadEstate);
+
             //Bind Storage Manager functions to some land manager functions for this scene
             EventManager.OnLandObjectAdded +=
                 new EventManager.LandObjectAdded(m_storageManager.DataStore.StoreLandObject);
@@ -5121,5 +5125,15 @@ namespace OpenSim.Region.Framework.Scenes
                         sun);
             }
         }
+
+        private void HandleReloadEstate(string module, string[] cmd)
+        {
+            if (MainConsole.Instance.ConsoleScene == null ||
+                (MainConsole.Instance.ConsoleScene is Scene &&
+                (Scene)MainConsole.Instance.ConsoleScene == this))
+            {
+                ReloadEstateData();
+            }
+        }
     }
 }
-- 
cgit v1.1


From 484584b83ce96825c49ccf7c9c129a3961e5c223 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Tue, 4 May 2010 09:44:30 -0700
Subject: Fixed: migration #2 for SQLite. Problem was that ATTACH cannot be
 done inside a transaction.

---
 OpenSim/Data/SQLite/Resources/002_XInventoryStore.sql | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Data/SQLite/Resources/002_XInventoryStore.sql b/OpenSim/Data/SQLite/Resources/002_XInventoryStore.sql
index 545d233..d38e2b7 100644
--- a/OpenSim/Data/SQLite/Resources/002_XInventoryStore.sql
+++ b/OpenSim/Data/SQLite/Resources/002_XInventoryStore.sql
@@ -1,9 +1,8 @@
-BEGIN TRANSACTION;
+ATTACH 'inventoryStore.db' AS old;
 
-ATTACH 'inventoryStore.db' AS old;
+BEGIN TRANSACTION;
 
 INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) SELECT `name` AS folderName, `type` AS type, `version` AS version, `UUID` AS folderID, `agentID` AS agentID, `parentID` AS parentFolderID from old.inventoryfolders;
-
 INSERT INTO inventoryitems (assetID, assetType, inventoryName, inventoryDescription, inventoryNextPermissions, inventoryCurrentPermissions, invType, creatorID, inventoryBasePermissions, inventoryEveryOnePermissions, salePrice, saleType, creationDate, groupID, groupOwned, flags, inventoryID, parentFolderID, avatarID, inventoryGroupPermissions) SELECT `assetID`, `assetType` AS assetType, `inventoryName` AS inventoryName, `inventoryDescription` AS inventoryDescription, `inventoryNextPermissions` AS inventoryNextPermissions, `inventoryCurrentPermissions` AS inventoryCurrentPermissions, `invType` AS invType, `creatorsID` AS creatorID, `inventoryBasePermissions` AS inventoryBasePermissions, `inventoryEveryOnePermissions` AS inventoryEveryOnePermissions, `salePrice` AS salePrice, `saleType` AS saleType, `creationDate` AS creationDate, `groupID` AS groupID, `groupOwned` AS groupOwned, `flags` AS flags, `UUID` AS inventoryID, `parentFolderID` AS parentFolderID, `avatarID` AS avatarID, `inventoryGroupPermissions` AS inventoryGroupPermissions FROM old.inventoryitems;
 
 COMMIT;
-- 
cgit v1.1


From d997fc7b765d425bd34adf5bc839b80fd9fad37c Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Tue, 4 May 2010 20:57:31 +0200
Subject: Add events to the estate interface to let interested modules know of
 changes to estate settings

---
 .../World/Estate/EstateManagementModule.cs         | 36 ++++++++++++++++++++++
 .../Region/Framework/Interfaces/IEstateModule.cs   |  5 +++
 2 files changed, 41 insertions(+)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
index 77068b0..92e9eed 100644
--- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
@@ -48,6 +48,9 @@ namespace OpenSim.Region.CoreModules.World.Estate
 
         private EstateTerrainXferHandler TerrainUploader;
 
+        public event ChangeDelegate OnRegionInfoChange;
+        public event ChangeDelegate OnEstateInfoChange;
+
         #region Packet Data Responders
 
         private void sendDetailedEstateData(IClientAPI remote_client, UUID invoice)
@@ -137,6 +140,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                 m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide = false;
 
             m_scene.RegionInfo.RegionSettings.Save();
+            TriggerRegionInfoChange();
 
             sendRegionInfoPacketToAll();
         }
@@ -162,6 +166,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                     break;
             }
             m_scene.RegionInfo.RegionSettings.Save();
+            TriggerRegionInfoChange();
             sendRegionInfoPacketToAll();
         }
 
@@ -187,6 +192,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                     break;
             }
             m_scene.RegionInfo.RegionSettings.Save();
+            TriggerRegionInfoChange();
             sendRegionInfoPacketToAll();
         }
 
@@ -219,6 +225,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
 
             sendRegionInfoPacketToAll();
             m_scene.RegionInfo.RegionSettings.Save();
+            TriggerRegionInfoChange();
         }
 
         private void handleEstateRestartSimRequest(IClientAPI remoteClient, int timeInSeconds)
@@ -230,6 +237,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
         {
             m_scene.RegionInfo.RegionSettings.Covenant = estateCovenantID;
             m_scene.RegionInfo.RegionSettings.Save();
+            TriggerRegionInfoChange();
         }
 
         private void handleEstateAccessDeltaRequest(IClientAPI remote_client, UUID invoice, int estateAccessType, UUID user)
@@ -245,6 +253,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                 {
                     m_scene.RegionInfo.EstateSettings.AddEstateUser(user);
                     m_scene.RegionInfo.EstateSettings.Save();
+                    TriggerEstateInfoChange();
                     remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, m_scene.RegionInfo.EstateSettings.EstateAccess, m_scene.RegionInfo.EstateSettings.EstateID);
                 }
                 else
@@ -259,6 +268,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                 {
                     m_scene.RegionInfo.EstateSettings.RemoveEstateUser(user);
                     m_scene.RegionInfo.EstateSettings.Save();
+                    TriggerEstateInfoChange();
 
                     remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, m_scene.RegionInfo.EstateSettings.EstateAccess, m_scene.RegionInfo.EstateSettings.EstateID);
                 }
@@ -273,6 +283,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                 {
                     m_scene.RegionInfo.EstateSettings.AddEstateGroup(user);
                     m_scene.RegionInfo.EstateSettings.Save();
+                    TriggerEstateInfoChange();
                     remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, m_scene.RegionInfo.EstateSettings.EstateGroups, m_scene.RegionInfo.EstateSettings.EstateID);
                 }
                 else
@@ -286,6 +297,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                 {
                     m_scene.RegionInfo.EstateSettings.RemoveEstateGroup(user);
                     m_scene.RegionInfo.EstateSettings.Save();
+                    TriggerEstateInfoChange();
 
                     remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, m_scene.RegionInfo.EstateSettings.EstateGroups, m_scene.RegionInfo.EstateSettings.EstateID);
                 }
@@ -323,6 +335,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
 
                         m_scene.RegionInfo.EstateSettings.AddBan(item);
                         m_scene.RegionInfo.EstateSettings.Save();
+                        TriggerEstateInfoChange();
 
                         ScenePresence s = m_scene.GetScenePresence(user);
                         if (s != null)
@@ -370,6 +383,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                     {
                         m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID);
                         m_scene.RegionInfo.EstateSettings.Save();
+                        TriggerEstateInfoChange();
                     }
                     else
                     {
@@ -389,6 +403,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                 {
                     m_scene.RegionInfo.EstateSettings.AddEstateManager(user);
                     m_scene.RegionInfo.EstateSettings.Save();
+                    TriggerEstateInfoChange();
                     remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID);
                 }
                 else
@@ -402,6 +417,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                 {
                     m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user);
                     m_scene.RegionInfo.EstateSettings.Save();
+                    TriggerEstateInfoChange();
 
                     remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID);
                 }
@@ -449,6 +465,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
 
 
             m_scene.RegionInfo.RegionSettings.Save();
+            TriggerRegionInfoChange();
 
             m_scene.SetSceneCoreDebug(scripted, collisionEvents, physics);
         }
@@ -860,6 +877,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                 m_scene.RegionInfo.EstateSettings.DenyMinors = false;
 
             m_scene.RegionInfo.EstateSettings.Save();
+            TriggerEstateInfoChange();
 
             m_scene.TriggerEstateSunUpdate();
 
@@ -927,6 +945,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                             break;
                     }
                     m_scene.RegionInfo.RegionSettings.Save();
+                    TriggerRegionInfoChange();
                     sendRegionInfoPacketToAll();
 
                 }
@@ -972,6 +991,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
                             break;
                     }
                     m_scene.RegionInfo.RegionSettings.Save();
+                    TriggerRegionInfoChange();
                     sendRegionHandshakeToAll();
                 }
             }
@@ -1141,5 +1161,21 @@ namespace OpenSim.Region.CoreModules.World.Estate
 
             return false;
         }
+
+        protected void TriggerRegionInfoChange()
+        {
+            ChangeDelegate change = OnRegionInfoChange;
+
+            if (change != null)
+                change();
+        }
+
+        protected void TriggerEstateInfoChange()
+        {
+            ChangeDelegate change = OnEstateInfoChange;
+
+            if (change != null)
+                change();
+        }
     }
 }
diff --git a/OpenSim/Region/Framework/Interfaces/IEstateModule.cs b/OpenSim/Region/Framework/Interfaces/IEstateModule.cs
index 890fa31..b2135d2 100644
--- a/OpenSim/Region/Framework/Interfaces/IEstateModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEstateModule.cs
@@ -29,8 +29,13 @@ using OpenMetaverse;
 
 namespace OpenSim.Region.Framework.Interfaces
 {
+    public delegate void ChangeDelegate();
+
     public interface IEstateModule : IRegionModule
     {
+        event ChangeDelegate OnRegionInfoChange;
+        event ChangeDelegate OnEstateInfoChange;
+
         uint GetRegionFlags();
         bool IsManager(UUID avatarID);
         
-- 
cgit v1.1