From 386c3e41f0e92737f0478cf789438e8fb3c3c1e3 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Wed, 17 Sep 2008 23:08:46 +0000 Subject: Add various XML elements to the data snapshot. Changes by Fly-Man and myself. Fix a crash in DataSnapshot when no master avatar and no estate owner is set (e.g. "Mainland"). --- OpenSim/Region/DataSnapshot/EstateSnapshot.cs | 64 ++++++++++++++++++++------- 1 file changed, 47 insertions(+), 17 deletions(-) (limited to 'OpenSim/Region/DataSnapshot/EstateSnapshot.cs') diff --git a/OpenSim/Region/DataSnapshot/EstateSnapshot.cs b/OpenSim/Region/DataSnapshot/EstateSnapshot.cs index f25aad4..dea5cb1 100644 --- a/OpenSim/Region/DataSnapshot/EstateSnapshot.cs +++ b/OpenSim/Region/DataSnapshot/EstateSnapshot.cs @@ -58,30 +58,60 @@ namespace OpenSim.Region.DataSnapshot.Providers if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero) ownerid = m_scene.RegionInfo.EstateSettings.EstateOwner; - // Can't fail because if it weren't in cache, we wouldn't be here - // UserProfileData userProfile = m_scene.CommsManager.UserService.GetUserProfile(ownerid); //TODO: Change to query userserver about the master avatar UUID ? - String firstname = userProfile.FirstName; - String lastname = userProfile.SurName; + String firstname; + String lastname; + + if (userProfile != null) + { + firstname = userProfile.FirstName; + lastname = userProfile.SurName; + + //TODO: Fix the marshalling system to have less copypasta gruntwork + XmlNode user = factory.CreateNode(XmlNodeType.Element, "user", ""); + XmlAttribute type = (XmlAttribute)factory.CreateNode(XmlNodeType.Attribute, "type", ""); + type.Value = "owner"; + user.Attributes.Append(type); + + //TODO: Create more TODOs + XmlNode username = factory.CreateNode(XmlNodeType.Element, "name", ""); + username.InnerText = firstname + " " + lastname; + user.AppendChild(username); + + XmlNode useruuid = factory.CreateNode(XmlNodeType.Element, "uuid", ""); + useruuid.InnerText = ownerid.ToString(); + user.AppendChild(useruuid); + + estatedata.AppendChild(user); + } + + XmlNode estatename = factory.CreateNode(XmlNodeType.Element, "name", ""); + estatename.InnerText = m_scene.RegionInfo.EstateSettings.EstateName.ToString(); + estatedata.AppendChild(estatename); + + XmlNode estateid = factory.CreateNode(XmlNodeType.Element, "id", ""); + estateid.InnerText = m_scene.RegionInfo.EstateSettings.EstateID.ToString(); + estatedata.AppendChild(estateid); + + XmlNode parentid = factory.CreateNode(XmlNodeType.Element, "parentid", ""); + parentid.InnerText = m_scene.RegionInfo.EstateSettings.ParentEstateID.ToString(); + estatedata.AppendChild(parentid); + + XmlNode flags = factory.CreateNode(XmlNodeType.Element, "flags", ""); + + XmlAttribute teleport = (XmlAttribute)factory.CreateNode(XmlNodeType.Attribute, "teleport", ""); + teleport.Value = m_scene.RegionInfo.EstateSettings.AllowDirectTeleport.ToString(); + flags.Attributes.Append(teleport); - //TODO: Fix the marshalling system to have less copypasta gruntwork - XmlNode user = factory.CreateNode(XmlNodeType.Element, "user", ""); - XmlAttribute type = (XmlAttribute)factory.CreateNode(XmlNodeType.Attribute, "type", ""); - type.Value = "owner"; - user.Attributes.Append(type); + XmlAttribute publicaccess = (XmlAttribute)factory.CreateNode(XmlNodeType.Attribute, "public", ""); + publicaccess.Value = m_scene.RegionInfo.EstateSettings.PublicAccess.ToString(); + flags.Attributes.Append(publicaccess); - //TODO: Create more TODOs - XmlNode username = factory.CreateNode(XmlNodeType.Element, "name", ""); - username.InnerText = firstname + " " + lastname; - user.AppendChild(username); - XmlNode useruuid = factory.CreateNode(XmlNodeType.Element, "uuid", ""); - useruuid.InnerText = ownerid.ToString(); - user.AppendChild(useruuid); + estatedata.AppendChild(flags); - estatedata.AppendChild(user); this.Stale = false; return estatedata; -- cgit v1.1