/// <summary> /// Capability originating call to update the asset of an item in an agent's inventory /// </summary> /// <param name="remoteClient"></param> /// <param name="itemID"></param> /// <param name="data"></param> /// <returns></returns> public virtual string CapsUpdateInventoryItemAsset(IClientAPI remoteClient, UUID itemID, byte[] data) { InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); item = m_scene.InventoryService.GetItem(item); if (item != null) { if ((InventoryType)item.InvType == InventoryType.Notecard) { if (!m_scene.Permissions.CanEditNotecard(itemID, UUID.Zero, remoteClient.AgentId)) { remoteClient.SendAlertMessage("Insufficient permissions to edit notecard"); return(FailedPermissionsNotecardCAPSUpdate(UUID.Zero, itemID)); } AssetBase asset = CreateAsset(item.Name, item.Description, (sbyte)item.AssetType, data, remoteClient.AgentId.ToString()); item.AssetID = asset.FullID; m_scene.AssetService.Store(asset); m_scene.InventoryService.UpdateItem(item); return(SuccessNotecardCAPSUpdate(item.AssetID, itemID)); } else if ((InventoryType)item.InvType == InventoryType.LSL) { if (!m_scene.Permissions.CanEditScript(itemID, UUID.Zero, remoteClient.AgentId)) { return(FailedPermissionsScriptCAPSUpdate(UUID.Zero, itemID)); } IScriptModule ScriptEngine = m_scene.RequestModuleInterface <IScriptModule>(); AssetBase asset = CreateAsset(item.Name, item.Description, (sbyte)item.AssetType, data, remoteClient.AgentId.ToString()); item.AssetID = asset.FullID; m_scene.AssetService.Store(asset); m_scene.InventoryService.UpdateItem(item); if (ScriptEngine != null) { string Errors = ScriptEngine.TestCompileScript(asset.FullID, itemID); if (Errors != "") { return(FailedCompileScriptCAPSUpdate(item.AssetID, itemID, Errors)); } } return(SuccessScriptCAPSUpdate(item.AssetID, itemID)); } return(""); } else { m_log.ErrorFormat( "[AGENT INVENTORY]: Could not find item {0} for caps inventory update", itemID); } return(""); }
/// <summary> /// Capability originating call to update the asset of an item in an agent's inventory /// </summary> /// <param name="remoteClient"></param> /// <param name="itemID"></param> /// <param name="data"></param> /// <returns></returns> public virtual string CapsUpdateInventoryItemAsset(IClientAPI remoteClient, UUID itemID, byte[] data) { InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); item = m_scene.InventoryService.GetItem(item); if (item != null) { if ((InventoryType)item.InvType == InventoryType.Notecard) { if (!m_scene.Permissions.CanEditNotecard(itemID, UUID.Zero, remoteClient.AgentId)) { remoteClient.SendAlertMessage("Insufficient permissions to edit notecard"); return(FailedPermissionsNotecardCAPSUpdate(UUID.Zero, itemID)); } UUID newID; if ((m_scene.AssetService.UpdateContent(item.AssetID, data, out newID)) && (newID != UUID.Zero)) { item.AssetID = newID; } else { remoteClient.SendAlertMessage("Failed to update notecard asset"); } m_scene.InventoryService.UpdateItem(item); return(SuccessNotecardCAPSUpdate(item.AssetID, itemID)); } if ((InventoryType)item.InvType == InventoryType.LSL) { if (!m_scene.Permissions.CanEditScript(itemID, UUID.Zero, remoteClient.AgentId)) { return(FailedPermissionsScriptCAPSUpdate(UUID.Zero, itemID)); } UUID newID; if ((m_scene.AssetService.UpdateContent(item.AssetID, data, out newID)) && (newID != UUID.Zero)) { item.AssetID = newID; } else { remoteClient.SendAlertMessage("Failed to update script asset"); } m_scene.InventoryService.UpdateItem(item); IScriptModule ScriptEngine = m_scene.RequestModuleInterface <IScriptModule>(); if (ScriptEngine != null) { string Errors = ScriptEngine.TestCompileScript(item.AssetID, itemID); if (Errors != "") { return(FailedCompileScriptCAPSUpdate(item.AssetID, itemID, Errors)); } } return(SuccessScriptCAPSUpdate(item.AssetID, itemID)); } return(""); } MainConsole.Instance.ErrorFormat( "[AGENT INVENTORY]: Could not find item {0} for caps inventory update", itemID); return(""); }