diff options
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | 74 |
1 files changed, 46 insertions, 28 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 4023c8f..d82d0e3 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | |||
@@ -138,35 +138,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
138 | rootDestinationFolder, foldersCreated, nodesLoaded); | 138 | rootDestinationFolder, foldersCreated, nodesLoaded); |
139 | 139 | ||
140 | if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType) | 140 | if (TarArchiveReader.TarEntryType.TYPE_DIRECTORY != entryType) |
141 | { | 141 | { |
142 | // Escape back characters | 142 | InventoryItemBase item = LoadItem(data, foundFolder); |
143 | filePath = filePath.Replace("/", "/"); | ||
144 | filePath = filePath.Replace("&", "&"); | ||
145 | |||
146 | InventoryItemBase item = UserInventoryItemSerializer.Deserialize(data); | ||
147 | |||
148 | // Don't use the item ID that's in the file | ||
149 | item.ID = UUID.Random(); | ||
150 | |||
151 | UUID ospResolvedId = OspResolver.ResolveOspa(item.CreatorId, m_scene.CommsManager); | ||
152 | if (UUID.Zero != ospResolvedId) | ||
153 | item.CreatorIdAsUuid = ospResolvedId; | ||
154 | else | ||
155 | item.CreatorIdAsUuid = m_userInfo.UserProfile.ID; | ||
156 | |||
157 | item.Owner = m_userInfo.UserProfile.ID; | ||
158 | |||
159 | // Reset folder ID to the one in which we want to load it | ||
160 | item.Folder = foundFolder.ID; | ||
161 | |||
162 | //m_userInfo.AddItem(item); | ||
163 | m_scene.InventoryService.AddItem(item); | ||
164 | successfulItemRestores++; | ||
165 | 143 | ||
166 | // If we're loading an item directly into the given destination folder then we need to record | 144 | if (item != null) |
167 | // it separately from any loaded root folders | 145 | { |
168 | if (rootDestinationFolder == foundFolder) | 146 | successfulItemRestores++; |
169 | nodesLoaded.Add(item); | 147 | |
148 | // If we're loading an item directly into the given destination folder then we need to record | ||
149 | // it separately from any loaded root folders | ||
150 | if (rootDestinationFolder == foundFolder) | ||
151 | nodesLoaded.Add(item); | ||
152 | } | ||
170 | } | 153 | } |
171 | } | 154 | } |
172 | } | 155 | } |
@@ -340,6 +323,41 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
340 | } | 323 | } |
341 | 324 | ||
342 | /// <summary> | 325 | /// <summary> |
326 | /// Load an item from the archive | ||
327 | /// </summary> | ||
328 | /// <param name="filePath">The archive path for the item</param> | ||
329 | /// <param name="data">The raw item data</param> | ||
330 | /// <param name="rootDestinationFolder">The root destination folder for loaded items</param> | ||
331 | /// <param name="nodesLoaded">All the inventory nodes (items and folders) loaded so far</param> | ||
332 | protected InventoryItemBase LoadItem(byte[] data, InventoryFolderBase loadFolder) | ||
333 | { | ||
334 | // Escape back characters | ||
335 | // filePath = filePath.Replace("/", "/"); | ||
336 | // filePath = filePath.Replace("&", "&"); | ||
337 | |||
338 | InventoryItemBase item = UserInventoryItemSerializer.Deserialize(data); | ||
339 | |||
340 | // Don't use the item ID that's in the file | ||
341 | item.ID = UUID.Random(); | ||
342 | |||
343 | UUID ospResolvedId = OspResolver.ResolveOspa(item.CreatorId, m_scene.CommsManager); | ||
344 | if (UUID.Zero != ospResolvedId) | ||
345 | item.CreatorIdAsUuid = ospResolvedId; | ||
346 | else | ||
347 | item.CreatorIdAsUuid = m_userInfo.UserProfile.ID; | ||
348 | |||
349 | item.Owner = m_userInfo.UserProfile.ID; | ||
350 | |||
351 | // Reset folder ID to the one in which we want to load it | ||
352 | item.Folder = loadFolder.ID; | ||
353 | |||
354 | //m_userInfo.AddItem(item); | ||
355 | m_scene.InventoryService.AddItem(item); | ||
356 | |||
357 | return item; | ||
358 | } | ||
359 | |||
360 | /// <summary> | ||
343 | /// Load an asset | 361 | /// Load an asset |
344 | /// </summary> | 362 | /// </summary> |
345 | /// <param name="assetFilename"></param> | 363 | /// <param name="assetFilename"></param> |