* 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 // See IInventoryServices
public List<InventoryFolderBase> GetInventorySkeleton(LLUUID userId) 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); InventoryFolderBase rootFolder = RequestRootFolder(userId);
@ -90,6 +90,7 @@ namespace OpenSim.Framework.Communications
} }
List<InventoryFolderBase> userFolders = new List<InventoryFolderBase>(); List<InventoryFolderBase> userFolders = new List<InventoryFolderBase>();
userFolders.Add(rootFolder); userFolders.Add(rootFolder);
foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) 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 // 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 didn't previously run a grid wide inventory server is being transitioned to one
// which does. // which does.
if (null == folders | folders.Count == 0) if (null == folders || folders.Count == 0)
{ {
m_log.Warn( m_log.Warn(
"[LOGIN]: " + "[LOGIN]: " +

View File

@ -217,8 +217,13 @@ namespace OpenSim.Region.Communications.Local
{ {
List<InventoryFolderBase> folders = m_Parent.InventoryService.GetInventorySkeleton(userID); 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)
{ {
m_Parent.InventoryService.CreateNewUserInventory(userID);
folders = m_Parent.InventoryService.GetInventorySkeleton(userID);
}
LLUUID rootID = LLUUID.Zero; LLUUID rootID = LLUUID.Zero;
ArrayList AgentInventoryArray = new ArrayList(); ArrayList AgentInventoryArray = new ArrayList();
Hashtable TempHash; Hashtable TempHash;
@ -236,28 +241,8 @@ namespace OpenSim.Region.Communications.Local
TempHash["folder_id"] = InvFolder.folderID.ToString(); TempHash["folder_id"] = InvFolder.folderID.ToString();
AgentInventoryArray.Add(TempHash); AgentInventoryArray.Add(TempHash);
} }
return new InventoryData(AgentInventoryArray, rootID); return new InventoryData(AgentInventoryArray, rootID);
} }
else
{
AgentInventory userInventory = new AgentInventory();
userInventory.CreateRootFolder(userID);
ArrayList AgentInventoryArray = new ArrayList();
Hashtable TempHash;
foreach (InventoryFolder InvFolder in userInventory.InventoryFolders.Values)
{
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);
}
return new InventoryData(AgentInventoryArray, userInventory.InventoryRoot.FolderID);
}
}
} }
} }

View File

@ -1208,6 +1208,8 @@ namespace OpenSim.Region.Environment.Scenes
/// <param name="flags"></param> /// <param name="flags"></param>
public void DuplicateObject(uint originalPrim, LLVector3 offset, uint flags, LLUUID AgentID, LLUUID GroupID) 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(); List<EntityBase> EntityList = GetEntities();
SceneObjectGroup originPrim = null; SceneObjectGroup originPrim = null;