* Minor: If a user exists but has no inventory in standalone, automatically create new inventory folders

* This mirrors the grid behaviour
0.6.0-stable
Justin Clarke Casey 2008-03-31 18:29:08 +00:00
parent 48fc4ee059
commit 93303072dd
4 changed files with 27 additions and 39 deletions

View File

@ -79,7 +79,7 @@ namespace OpenSim.Framework.Communications
// See IInventoryServices
public List<InventoryFolderBase> GetInventorySkeleton(LLUUID userId)
{
m_log.DebugFormat("[AGENT INVENTORY]: Getting inventory skeleton for {0}", userId);
// m_log.DebugFormat("[AGENT INVENTORY]: Getting inventory skeleton for {0}", userId);
InventoryFolderBase rootFolder = RequestRootFolder(userId);
@ -90,6 +90,7 @@ namespace OpenSim.Framework.Communications
}
List<InventoryFolderBase> userFolders = new List<InventoryFolderBase>();
userFolders.Add(rootFolder);
foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins)

View File

@ -299,7 +299,7 @@ namespace OpenSim.Grid.UserServer
// In theory, the user will only ever be missing a root folder in situations where a grid
// which didn't previously run a grid wide inventory server is being transitioned to one
// which does.
if (null == folders | folders.Count == 0)
if (null == folders || folders.Count == 0)
{
m_log.Warn(
"[LOGIN]: " +

View File

@ -217,47 +217,32 @@ namespace OpenSim.Region.Communications.Local
{
List<InventoryFolderBase> folders = m_Parent.InventoryService.GetInventorySkeleton(userID);
if (folders.Count > 0)
// If we have user auth but no inventory folders for some reason, create a new set of folders.
if (null == folders || 0 == folders.Count)
{
LLUUID rootID = LLUUID.Zero;
ArrayList AgentInventoryArray = new ArrayList();
Hashtable TempHash;
foreach (InventoryFolderBase InvFolder in folders)
{
if (InvFolder.parentID == LLUUID.Zero)
{
rootID = InvFolder.folderID;
}
TempHash = new Hashtable();
TempHash["name"] = InvFolder.name;
TempHash["parent_id"] = InvFolder.parentID.ToString();
TempHash["version"] = (Int32) InvFolder.version;
TempHash["type_default"] = (Int32) InvFolder.type;
TempHash["folder_id"] = InvFolder.folderID.ToString();
AgentInventoryArray.Add(TempHash);
}
return new InventoryData(AgentInventoryArray, rootID);
m_Parent.InventoryService.CreateNewUserInventory(userID);
folders = m_Parent.InventoryService.GetInventorySkeleton(userID);
}
else
LLUUID rootID = LLUUID.Zero;
ArrayList AgentInventoryArray = new ArrayList();
Hashtable TempHash;
foreach (InventoryFolderBase InvFolder in folders)
{
AgentInventory userInventory = new AgentInventory();
userInventory.CreateRootFolder(userID);
ArrayList AgentInventoryArray = new ArrayList();
Hashtable TempHash;
foreach (InventoryFolder InvFolder in userInventory.InventoryFolders.Values)
if (InvFolder.parentID == LLUUID.Zero)
{
TempHash = new Hashtable();
TempHash["name"] = InvFolder.FolderName;
TempHash["parent_id"] = InvFolder.ParentID.ToString();
TempHash["version"] = (Int32) InvFolder.Version;
TempHash["type_default"] = (Int32) InvFolder.DefaultType;
TempHash["folder_id"] = InvFolder.FolderID.ToString();
AgentInventoryArray.Add(TempHash);
rootID = InvFolder.folderID;
}
return new InventoryData(AgentInventoryArray, userInventory.InventoryRoot.FolderID);
TempHash = new Hashtable();
TempHash["name"] = InvFolder.name;
TempHash["parent_id"] = InvFolder.parentID.ToString();
TempHash["version"] = (Int32) InvFolder.version;
TempHash["type_default"] = (Int32) InvFolder.type;
TempHash["folder_id"] = InvFolder.folderID.ToString();
AgentInventoryArray.Add(TempHash);
}
return new InventoryData(AgentInventoryArray, rootID);
}
}
}

View File

@ -1208,6 +1208,8 @@ namespace OpenSim.Region.Environment.Scenes
/// <param name="flags"></param>
public void DuplicateObject(uint originalPrim, LLVector3 offset, uint flags, LLUUID AgentID, LLUUID GroupID)
{
m_log.DebugFormat("[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", originalPrim, offset, AgentID);
List<EntityBase> EntityList = GetEntities();
SceneObjectGroup originPrim = null;