mirror of
https://github.com/opensim/opensim.git
synced 2026-07-31 13:55:35 +08:00
Merge branch 'master' into careminster-presence-refactor
This commit is contained in:
@@ -34,6 +34,7 @@ using System.Xml;
|
||||
using log4net;
|
||||
using OpenMetaverse;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Region.Framework.Interfaces;
|
||||
using OpenSim.Region.Framework.Scenes;
|
||||
|
||||
namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
@@ -46,6 +47,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
public class SceneObjectSerializer
|
||||
{
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
private static IUserManagement m_UserManagement;
|
||||
|
||||
/// <summary>
|
||||
/// Deserialize a scene object from the original xml format
|
||||
@@ -270,6 +273,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
#region SOPXmlProcessors initialization
|
||||
m_SOPXmlProcessors.Add("AllowedDrop", ProcessAllowedDrop);
|
||||
m_SOPXmlProcessors.Add("CreatorID", ProcessCreatorID);
|
||||
m_SOPXmlProcessors.Add("CreatorData", ProcessCreatorData);
|
||||
m_SOPXmlProcessors.Add("FolderID", ProcessFolderID);
|
||||
m_SOPXmlProcessors.Add("InventorySerial", ProcessInventorySerial);
|
||||
m_SOPXmlProcessors.Add("TaskInventory", ProcessTaskInventory);
|
||||
@@ -327,6 +331,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
m_TaskInventoryXmlProcessors.Add("BasePermissions", ProcessTIBasePermissions);
|
||||
m_TaskInventoryXmlProcessors.Add("CreationDate", ProcessTICreationDate);
|
||||
m_TaskInventoryXmlProcessors.Add("CreatorID", ProcessTICreatorID);
|
||||
m_TaskInventoryXmlProcessors.Add("CreatorData", ProcessTICreatorData);
|
||||
m_TaskInventoryXmlProcessors.Add("Description", ProcessTIDescription);
|
||||
m_TaskInventoryXmlProcessors.Add("EveryonePermissions", ProcessTIEveryonePermissions);
|
||||
m_TaskInventoryXmlProcessors.Add("Flags", ProcessTIFlags);
|
||||
@@ -412,6 +417,11 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
obj.CreatorID = ReadUUID(reader, "CreatorID");
|
||||
}
|
||||
|
||||
private static void ProcessCreatorData(SceneObjectPart obj, XmlTextReader reader)
|
||||
{
|
||||
obj.CreatorData = reader.ReadElementContentAsString("CreatorData", String.Empty);
|
||||
}
|
||||
|
||||
private static void ProcessFolderID(SceneObjectPart obj, XmlTextReader reader)
|
||||
{
|
||||
obj.FolderID = ReadUUID(reader, "FolderID");
|
||||
@@ -698,6 +708,11 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
item.CreatorID = ReadUUID(reader, "CreatorID");
|
||||
}
|
||||
|
||||
private static void ProcessTICreatorData(TaskInventoryItem item, XmlTextReader reader)
|
||||
{
|
||||
item.CreatorData = reader.ReadElementContentAsString("CreatorData", String.Empty);
|
||||
}
|
||||
|
||||
private static void ProcessTIDescription(TaskInventoryItem item, XmlTextReader reader)
|
||||
{
|
||||
item.Description = reader.ReadElementContentAsString("Description", String.Empty);
|
||||
@@ -1077,11 +1092,23 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
writer.WriteAttributeString("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
|
||||
|
||||
writer.WriteElementString("AllowedDrop", sop.AllowedDrop.ToString().ToLower());
|
||||
|
||||
WriteUUID(writer, "CreatorID", sop.CreatorID, options);
|
||||
|
||||
if (sop.CreatorData != null && sop.CreatorData != string.Empty)
|
||||
writer.WriteElementString("CreatorData", sop.CreatorData);
|
||||
else if (options.ContainsKey("profile"))
|
||||
{
|
||||
if (m_UserManagement == null)
|
||||
m_UserManagement = sop.ParentGroup.Scene.RequestModuleInterface<IUserManagement>();
|
||||
string name = m_UserManagement.GetUserName(sop.CreatorID);
|
||||
writer.WriteElementString("CreatorData", (string)options["profile"] + "/" + sop.CreatorID + ";" + name);
|
||||
}
|
||||
|
||||
WriteUUID(writer, "FolderID", sop.FolderID, options);
|
||||
writer.WriteElementString("InventorySerial", sop.InventorySerial.ToString());
|
||||
|
||||
WriteTaskInventory(writer, sop.TaskInventory, options);
|
||||
WriteTaskInventory(writer, sop.TaskInventory, options, sop.ParentGroup.Scene);
|
||||
|
||||
WriteUUID(writer, "UUID", sop.UUID, options);
|
||||
writer.WriteElementString("LocalId", sop.LocalId.ToString());
|
||||
@@ -1205,7 +1232,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
writer.WriteElementString(name, flagsStr);
|
||||
}
|
||||
|
||||
static void WriteTaskInventory(XmlTextWriter writer, TaskInventoryDictionary tinv, Dictionary<string, object> options)
|
||||
static void WriteTaskInventory(XmlTextWriter writer, TaskInventoryDictionary tinv, Dictionary<string, object> options, Scene scene)
|
||||
{
|
||||
if (tinv.Count > 0) // otherwise skip this
|
||||
{
|
||||
@@ -1218,7 +1245,20 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
WriteUUID(writer, "AssetID", item.AssetID, options);
|
||||
writer.WriteElementString("BasePermissions", item.BasePermissions.ToString());
|
||||
writer.WriteElementString("CreationDate", item.CreationDate.ToString());
|
||||
|
||||
|
||||
WriteUUID(writer, "CreatorID", item.CreatorID, options);
|
||||
|
||||
if (item.CreatorData != null && item.CreatorData != string.Empty)
|
||||
writer.WriteElementString("CreatorData", item.CreatorData);
|
||||
else if (options.ContainsKey("profile"))
|
||||
{
|
||||
if (m_UserManagement == null)
|
||||
m_UserManagement = scene.RequestModuleInterface<IUserManagement>();
|
||||
string name = m_UserManagement.GetUserName(item.CreatorID);
|
||||
writer.WriteElementString("CreatorData", (string)options["profile"] + "/" + item.CreatorID + ";" + name);
|
||||
}
|
||||
|
||||
writer.WriteElementString("Description", item.Description);
|
||||
writer.WriteElementString("EveryonePermissions", item.EveryonePermissions.ToString());
|
||||
writer.WriteElementString("Flags", item.Flags.ToString());
|
||||
|
||||
Reference in New Issue
Block a user