also allow purge/delete of LostAndFound folder, or we can not clean it with recent viewers
parent
5b338fb31a
commit
444a6b707b
|
@ -456,7 +456,8 @@ namespace OpenSim.Services.InventoryService
|
||||||
//
|
//
|
||||||
foreach (UUID id in folderIDs)
|
foreach (UUID id in folderIDs)
|
||||||
{
|
{
|
||||||
if (onlyIfTrash && !ParentIsTrash(id))
|
//if (onlyIfTrash && !ParentIsTrash(id))
|
||||||
|
if (onlyIfTrash && !ParentIsTrashOrLost(id))
|
||||||
continue;
|
continue;
|
||||||
//m_log.InfoFormat("[XINVENTORY SERVICE]: Delete folder {0}", id);
|
//m_log.InfoFormat("[XINVENTORY SERVICE]: Delete folder {0}", id);
|
||||||
InventoryFolderBase f = new InventoryFolderBase();
|
InventoryFolderBase f = new InventoryFolderBase();
|
||||||
|
@ -478,7 +479,8 @@ namespace OpenSim.Services.InventoryService
|
||||||
if (!m_AllowDelete)
|
if (!m_AllowDelete)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (onlyIfTrash && !ParentIsTrash(folder.ID))
|
//if (onlyIfTrash && !ParentIsTrash(folder.ID))
|
||||||
|
if (onlyIfTrash && !ParentIsTrashOrLost(folder.ID))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
XInventoryFolder[] subFolders = m_Database.GetFolders(
|
XInventoryFolder[] subFolders = m_Database.GetFolders(
|
||||||
|
@ -781,5 +783,33 @@ namespace OpenSim.Services.InventoryService
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool ParentIsTrashOrLost(UUID folderID)
|
||||||
|
{
|
||||||
|
XInventoryFolder[] folder = m_Database.GetFolders(new string[] { "folderID" }, new string[] { folderID.ToString() });
|
||||||
|
if (folder.Length < 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (folder[0].type == (int)FolderType.Trash || folder[0].type == (int)FolderType.LostAndFound)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
UUID parentFolder = folder[0].parentFolderID;
|
||||||
|
|
||||||
|
while (parentFolder != UUID.Zero)
|
||||||
|
{
|
||||||
|
XInventoryFolder[] parent = m_Database.GetFolders(new string[] { "folderID" }, new string[] { parentFolder.ToString() });
|
||||||
|
if (parent.Length < 1)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (parent[0].type == (int)FolderType.Trash || folder[0].type == (int)FolderType.LostAndFound)
|
||||||
|
return true;
|
||||||
|
if (parent[0].type == (int)FolderType.Root)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
parentFolder = parent[0].parentFolderID;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue