aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/InventoryService
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services/InventoryService')
-rw-r--r--OpenSim/Services/InventoryService/XInventoryService.cs19
1 files changed, 15 insertions, 4 deletions
diff --git a/OpenSim/Services/InventoryService/XInventoryService.cs b/OpenSim/Services/InventoryService/XInventoryService.cs
index 0e7a358..37a6a42 100644
--- a/OpenSim/Services/InventoryService/XInventoryService.cs
+++ b/OpenSim/Services/InventoryService/XInventoryService.cs
@@ -364,6 +364,11 @@ namespace OpenSim.Services.InventoryService
364 // 364 //
365 public virtual bool DeleteFolders(UUID principalID, List<UUID> folderIDs) 365 public virtual bool DeleteFolders(UUID principalID, List<UUID> folderIDs)
366 { 366 {
367 return DeleteFoldersEx(principalID, folderIDs, true);
368 }
369
370 public bool DeleteFoldersEx(UUID principalID, List<UUID> folderIDs, bool onlyIfTrash)
371 {
367 if (!m_AllowDelete) 372 if (!m_AllowDelete)
368 return false; 373 return false;
369 374
@@ -371,11 +376,12 @@ namespace OpenSim.Services.InventoryService
371 // 376 //
372 foreach (UUID id in folderIDs) 377 foreach (UUID id in folderIDs)
373 { 378 {
374 if (!ParentIsTrash(id)) 379 if (onlyIfTrash && !ParentIsTrash(id))
375 continue; 380 continue;
381 //m_log.InfoFormat("[XINVENTORY SERVICE]: Delete folder {0}", id);
376 InventoryFolderBase f = new InventoryFolderBase(); 382 InventoryFolderBase f = new InventoryFolderBase();
377 f.ID = id; 383 f.ID = id;
378 PurgeFolder(f); 384 PurgeFolderEx(f, onlyIfTrash);
379 m_Database.DeleteFolders("folderID", id.ToString()); 385 m_Database.DeleteFolders("folderID", id.ToString());
380 } 386 }
381 387
@@ -384,10 +390,15 @@ namespace OpenSim.Services.InventoryService
384 390
385 public virtual bool PurgeFolder(InventoryFolderBase folder) 391 public virtual bool PurgeFolder(InventoryFolderBase folder)
386 { 392 {
393 return PurgeFolderEx(folder, true);
394 }
395
396 private bool PurgeFolderEx(InventoryFolderBase folder, bool onlyIfTrash)
397 {
387 if (!m_AllowDelete) 398 if (!m_AllowDelete)
388 return false; 399 return false;
389 400
390 if (!ParentIsTrash(folder.ID)) 401 if (onlyIfTrash && !ParentIsTrash(folder.ID))
391 return false; 402 return false;
392 403
393 XInventoryFolder[] subFolders = m_Database.GetFolders( 404 XInventoryFolder[] subFolders = m_Database.GetFolders(
@@ -396,7 +407,7 @@ namespace OpenSim.Services.InventoryService
396 407
397 foreach (XInventoryFolder x in subFolders) 408 foreach (XInventoryFolder x in subFolders)
398 { 409 {
399 PurgeFolder(ConvertToOpenSim(x)); 410 PurgeFolderEx(ConvertToOpenSim(x), onlyIfTrash);
400 m_Database.DeleteFolders("folderID", x.folderID.ToString()); 411 m_Database.DeleteFolders("folderID", x.folderID.ToString());
401 } 412 }
402 413