diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory')
4 files changed, 113 insertions, 26 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs index ef5ffe1..bd32f3b 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs | |||
@@ -139,6 +139,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
139 | public abstract bool MoveFolder(InventoryFolderBase folder); | 139 | public abstract bool MoveFolder(InventoryFolderBase folder); |
140 | 140 | ||
141 | /// <summary> | 141 | /// <summary> |
142 | /// Delete a list of inventory folders (from trash) | ||
143 | /// </summary> | ||
144 | public abstract bool DeleteFolders(UUID ownerID, List<UUID> folderIDs); | ||
145 | |||
146 | /// <summary> | ||
142 | /// Purge an inventory folder of all its items and subfolders. | 147 | /// Purge an inventory folder of all its items and subfolders. |
143 | /// </summary> | 148 | /// </summary> |
144 | /// <param name="folder"></param> | 149 | /// <param name="folder"></param> |
@@ -181,12 +186,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
181 | /// <returns>true if the item was successfully updated</returns> | 186 | /// <returns>true if the item was successfully updated</returns> |
182 | public abstract bool UpdateItem(InventoryItemBase item); | 187 | public abstract bool UpdateItem(InventoryItemBase item); |
183 | 188 | ||
189 | public abstract bool MoveItems(UUID ownerID, List<InventoryItemBase> items); | ||
190 | |||
184 | /// <summary> | 191 | /// <summary> |
185 | /// Delete an item from the user's inventory | 192 | /// Delete an item from the user's inventory |
186 | /// </summary> | 193 | /// </summary> |
187 | /// <param name="item"></param> | 194 | /// <param name="item"></param> |
188 | /// <returns>true if the item was successfully deleted</returns> | 195 | /// <returns>true if the item was successfully deleted</returns> |
189 | public abstract bool DeleteItem(InventoryItemBase item); | 196 | public abstract bool DeleteItems(UUID ownerID, List<UUID> itemIDs); |
190 | 197 | ||
191 | public abstract InventoryItemBase GetItem(InventoryItemBase item); | 198 | public abstract InventoryItemBase GetItem(InventoryItemBase item); |
192 | 199 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs index dd451ef..1c66254 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs | |||
@@ -290,7 +290,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
290 | 290 | ||
291 | public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID) | 291 | public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID) |
292 | { | 292 | { |
293 | return new List<InventoryItemBase>(); | 293 | if (IsLocalGridUser(userID)) |
294 | return m_GridService.GetFolderItems(userID, folderID); | ||
295 | else | ||
296 | { | ||
297 | UUID sessionID = GetSessionID(userID); | ||
298 | string uri = GetUserInventoryURI(userID) + "/" + userID; | ||
299 | return m_HGService.GetFolderItems(uri, folderID, sessionID); | ||
300 | } | ||
294 | } | 301 | } |
295 | 302 | ||
296 | public override bool AddFolder(InventoryFolderBase folder) | 303 | public override bool AddFolder(InventoryFolderBase folder) |
@@ -323,6 +330,23 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
323 | } | 330 | } |
324 | } | 331 | } |
325 | 332 | ||
333 | public override bool DeleteFolders(UUID ownerID, List<UUID> folderIDs) | ||
334 | { | ||
335 | if (folderIDs == null) | ||
336 | return false; | ||
337 | if (folderIDs.Count == 0) | ||
338 | return false; | ||
339 | |||
340 | if (IsLocalGridUser(ownerID)) | ||
341 | return m_GridService.DeleteFolders(ownerID, folderIDs); | ||
342 | else | ||
343 | { | ||
344 | UUID sessionID = GetSessionID(ownerID); | ||
345 | string uri = GetUserInventoryURI(ownerID) + "/" + ownerID.ToString(); | ||
346 | return m_HGService.DeleteFolders(uri, folderIDs, sessionID); | ||
347 | } | ||
348 | } | ||
349 | |||
326 | public override bool MoveFolder(InventoryFolderBase folder) | 350 | public override bool MoveFolder(InventoryFolderBase folder) |
327 | { | 351 | { |
328 | if (folder == null) | 352 | if (folder == null) |
@@ -386,18 +410,39 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
386 | } | 410 | } |
387 | } | 411 | } |
388 | 412 | ||
389 | public override bool DeleteItem(InventoryItemBase item) | 413 | public override bool MoveItems(UUID ownerID, List<InventoryItemBase> items) |
390 | { | 414 | { |
391 | if (item == null) | 415 | if (items == null) |
392 | return false; | 416 | return false; |
417 | if (items.Count == 0) | ||
418 | return true; | ||
393 | 419 | ||
394 | if (IsLocalGridUser(item.Owner)) | 420 | if (IsLocalGridUser(ownerID)) |
395 | return m_GridService.DeleteItem(item); | 421 | return m_GridService.MoveItems(ownerID, items); |
396 | else | 422 | else |
397 | { | 423 | { |
398 | UUID sessionID = GetSessionID(item.Owner); | 424 | UUID sessionID = GetSessionID(ownerID); |
399 | string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); | 425 | string uri = GetUserInventoryURI(ownerID) + "/" + ownerID.ToString(); |
400 | return m_HGService.DeleteItem(uri, item, sessionID); | 426 | return m_HGService.MoveItems(uri, items, sessionID); |
427 | } | ||
428 | } | ||
429 | |||
430 | public override bool DeleteItems(UUID ownerID, List<UUID> itemIDs) | ||
431 | { | ||
432 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Delete {0} items for user {1}", itemIDs.Count, ownerID); | ||
433 | |||
434 | if (itemIDs == null) | ||
435 | return false; | ||
436 | if (itemIDs.Count == 0) | ||
437 | return true; | ||
438 | |||
439 | if (IsLocalGridUser(ownerID)) | ||
440 | return m_GridService.DeleteItems(ownerID, itemIDs); | ||
441 | else | ||
442 | { | ||
443 | UUID sessionID = GetSessionID(ownerID); | ||
444 | string uri = GetUserInventoryURI(ownerID) + "/" + ownerID.ToString(); | ||
445 | return m_HGService.DeleteItems(uri, itemIDs, sessionID); | ||
401 | } | 446 | } |
402 | } | 447 | } |
403 | 448 | ||
@@ -483,12 +528,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
483 | string userInventoryServerURI = HGNetworkServersInfo.ServerURI(uinfo.UserProfile.UserInventoryURI); | 528 | string userInventoryServerURI = HGNetworkServersInfo.ServerURI(uinfo.UserProfile.UserInventoryURI); |
484 | string uri = m_LocalGridInventoryURI.TrimEnd('/'); | 529 | string uri = m_LocalGridInventoryURI.TrimEnd('/'); |
485 | 530 | ||
486 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: IsLocalGridUser, comparing {0} to {1}.", userInventoryServerURI, uri); | ||
487 | |||
488 | if ((userInventoryServerURI == uri) || (userInventoryServerURI == "")) | 531 | if ((userInventoryServerURI == uri) || (userInventoryServerURI == "")) |
489 | { | 532 | { |
490 | return true; | 533 | return true; |
491 | } | 534 | } |
535 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: user {0} is foreign({1} - {2})", userID, userInventoryServerURI, uri); | ||
492 | return false; | 536 | return false; |
493 | } | 537 | } |
494 | 538 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs index 2fbc5fe..66d11dd 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs | |||
@@ -191,7 +191,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
191 | 191 | ||
192 | public override Dictionary<AssetType, InventoryFolderBase> GetSystemFolders(UUID userID) | 192 | public override Dictionary<AssetType, InventoryFolderBase> GetSystemFolders(UUID userID) |
193 | { | 193 | { |
194 | InventoryFolderBase root = GetRootFolder(userID); | 194 | InventoryFolderBase root = m_InventoryService.GetRootFolder(userID); |
195 | if (root != null) | 195 | if (root != null) |
196 | { | 196 | { |
197 | InventoryCollection content = GetFolderContent(userID, root.ID); | 197 | InventoryCollection content = GetFolderContent(userID, root.ID); |
@@ -202,13 +202,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
202 | { | 202 | { |
203 | if ((folder.Type != (short)AssetType.Folder) && (folder.Type != (short)AssetType.Unknown)) | 203 | if ((folder.Type != (short)AssetType.Folder) && (folder.Type != (short)AssetType.Unknown)) |
204 | { | 204 | { |
205 | m_log.InfoFormat("[INVENTORY CONNECTOR]: folder type {0} ", folder.Type); | 205 | //m_log.InfoFormat("[INVENTORY CONNECTOR]: folder type {0} ", folder.Type); |
206 | folders[(AssetType)folder.Type] = folder; | 206 | folders[(AssetType)folder.Type] = folder; |
207 | } | 207 | } |
208 | } | 208 | } |
209 | // Put the root folder there, as type Folder | 209 | // Put the root folder there, as type Folder |
210 | folders[AssetType.Folder] = root; | 210 | folders[AssetType.Folder] = root; |
211 | m_log.InfoFormat("[INVENTORY CONNECTOR]: root folder is type {0} ", root.Type); | 211 | //m_log.InfoFormat("[INVENTORY CONNECTOR]: root folder is type {0} ", root.Type); |
212 | 212 | ||
213 | return folders; | 213 | return folders; |
214 | } | 214 | } |
@@ -258,6 +258,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
258 | return m_InventoryService.MoveFolder(folder); | 258 | return m_InventoryService.MoveFolder(folder); |
259 | } | 259 | } |
260 | 260 | ||
261 | public override bool DeleteFolders(UUID ownerID, List<UUID> folderIDs) | ||
262 | { | ||
263 | return m_InventoryService.DeleteFolders(ownerID, folderIDs); | ||
264 | } | ||
265 | |||
261 | /// <summary> | 266 | /// <summary> |
262 | /// Purge an inventory folder of all its items and subfolders. | 267 | /// Purge an inventory folder of all its items and subfolders. |
263 | /// </summary> | 268 | /// </summary> |
@@ -289,14 +294,20 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
289 | return m_InventoryService.UpdateItem(item); | 294 | return m_InventoryService.UpdateItem(item); |
290 | } | 295 | } |
291 | 296 | ||
297 | |||
298 | public override bool MoveItems(UUID ownerID, List<InventoryItemBase> items) | ||
299 | { | ||
300 | return m_InventoryService.MoveItems(ownerID, items); | ||
301 | } | ||
302 | |||
292 | /// <summary> | 303 | /// <summary> |
293 | /// Delete an item from the user's inventory | 304 | /// Delete an item from the user's inventory |
294 | /// </summary> | 305 | /// </summary> |
295 | /// <param name="item"></param> | 306 | /// <param name="item"></param> |
296 | /// <returns>true if the item was successfully deleted</returns> | 307 | /// <returns>true if the item was successfully deleted</returns> |
297 | public override bool DeleteItem(InventoryItemBase item) | 308 | public override bool DeleteItems(UUID ownerID, List<UUID> itemIDs) |
298 | { | 309 | { |
299 | return m_InventoryService.DeleteItem(item); | 310 | return m_InventoryService.DeleteItems(ownerID, itemIDs); |
300 | } | 311 | } |
301 | 312 | ||
302 | public override InventoryItemBase GetItem(InventoryItemBase item) | 313 | public override InventoryItemBase GetItem(InventoryItemBase item) |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs index bef716b..0d32c77 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs | |||
@@ -212,7 +212,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
212 | 212 | ||
213 | public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID) | 213 | public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID) |
214 | { | 214 | { |
215 | return new List<InventoryItemBase>(); | 215 | UUID sessionID = GetSessionID(userID); |
216 | return m_RemoteConnector.GetFolderItems(userID.ToString(), folderID, sessionID); | ||
216 | } | 217 | } |
217 | 218 | ||
218 | public override bool AddFolder(InventoryFolderBase folder) | 219 | public override bool AddFolder(InventoryFolderBase folder) |
@@ -242,6 +243,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
242 | return m_RemoteConnector.MoveFolder(folder.Owner.ToString(), folder, sessionID); | 243 | return m_RemoteConnector.MoveFolder(folder.Owner.ToString(), folder, sessionID); |
243 | } | 244 | } |
244 | 245 | ||
246 | public override bool DeleteFolders(UUID ownerID, List<UUID> folderIDs) | ||
247 | { | ||
248 | if (folderIDs == null) | ||
249 | return false; | ||
250 | if (folderIDs.Count == 0) | ||
251 | return false; | ||
252 | |||
253 | UUID sessionID = GetSessionID(ownerID); | ||
254 | return m_RemoteConnector.DeleteFolders(ownerID.ToString(), folderIDs, sessionID); | ||
255 | } | ||
256 | |||
257 | |||
245 | public override bool PurgeFolder(InventoryFolderBase folder) | 258 | public override bool PurgeFolder(InventoryFolderBase folder) |
246 | { | 259 | { |
247 | if (folder == null) | 260 | if (folder == null) |
@@ -272,13 +285,25 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
272 | return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID); | 285 | return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID); |
273 | } | 286 | } |
274 | 287 | ||
275 | public override bool DeleteItem(InventoryItemBase item) | 288 | public override bool MoveItems(UUID ownerID, List<InventoryItemBase> items) |
276 | { | 289 | { |
277 | if (item == null) | 290 | if (items == null) |
278 | return false; | 291 | return false; |
279 | 292 | ||
280 | UUID sessionID = GetSessionID(item.Owner); | 293 | UUID sessionID = GetSessionID(ownerID); |
281 | return m_RemoteConnector.DeleteItem(item.Owner.ToString(), item, sessionID); | 294 | return m_RemoteConnector.MoveItems(ownerID.ToString(), items, sessionID); |
295 | } | ||
296 | |||
297 | |||
298 | public override bool DeleteItems(UUID ownerID, List<UUID> itemIDs) | ||
299 | { | ||
300 | if (itemIDs == null) | ||
301 | return false; | ||
302 | if (itemIDs.Count == 0) | ||
303 | return true; | ||
304 | |||
305 | UUID sessionID = GetSessionID(ownerID); | ||
306 | return m_RemoteConnector.DeleteItems(ownerID.ToString(), itemIDs, sessionID); | ||
282 | } | 307 | } |
283 | 308 | ||
284 | public override InventoryItemBase GetItem(InventoryItemBase item) | 309 | public override InventoryItemBase GetItem(InventoryItemBase item) |
@@ -320,14 +345,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
320 | 345 | ||
321 | private UUID GetSessionID(UUID userID) | 346 | private UUID GetSessionID(UUID userID) |
322 | { | 347 | { |
323 | if (m_Scene == null) | 348 | //if (m_Scene == null) |
324 | { | 349 | //{ |
325 | m_log.Debug("[INVENTORY CONNECTOR]: OOPS! scene is null"); | 350 | // m_log.Debug("[INVENTORY CONNECTOR]: OOPS! scene is null"); |
326 | } | 351 | //} |
327 | 352 | ||
328 | if (m_UserProfileService == null) | 353 | if (m_UserProfileService == null) |
329 | { | 354 | { |
330 | m_log.Debug("[INVENTORY CONNECTOR]: OOPS! UserProfileCacheService is null"); | 355 | //m_log.Debug("[INVENTORY CONNECTOR]: OOPS! UserProfileCacheService is null"); |
331 | return UUID.Zero; | 356 | return UUID.Zero; |
332 | } | 357 | } |
333 | 358 | ||