public void PickInfoUpdate(IClientAPI remoteClient, UUID pickID, UUID creatorID, bool topPick, string name, string desc, UUID snapshotID, int sortOrder, bool enabled) { IUserProfileInfo info = ProfileFrontend.GetUserProfile(remoteClient.AgentId); if (info == null) return; ScenePresence p = m_scene.GetScenePresence(remoteClient.AgentId); UUID parceluuid = p.currentParcelUUID; string user = "******"; string OrigionalName = "(unknown)"; Vector3 pos_global = new Vector3(p.AbsolutePosition.X + p.Scene.RegionInfo.RegionLocX * 256, p.AbsolutePosition.Y + p.Scene.RegionInfo.RegionLocY * 256, p.AbsolutePosition.Z); ILandObject targetlandObj = m_scene.LandChannel.GetLandObject(p.AbsolutePosition.X, p.AbsolutePosition.Y); if (targetlandObj != null) { ScenePresence parcelowner = m_scene.GetScenePresence(targetlandObj.LandData.OwnerID); if (parcelowner != null) user = parcelowner.Name; parceluuid = targetlandObj.LandData.InfoUUID; OrigionalName = targetlandObj.LandData.Name; } OSDMap picks = Util.DictionaryToOSD(info.Picks); if (!picks.ContainsKey(pickID.ToString())) { ProfilePickInfo values = new ProfilePickInfo(); values.PickUUID = pickID; values.CreatorUUID = creatorID; values.TopPick = topPick ? 1 : 0; values.ParcelUUID = parceluuid; values.Name = name; values.Description = desc; values.SnapshotUUID = snapshotID; values.User = user; values.OriginalName = OrigionalName; values.SimName = remoteClient.Scene.RegionInfo.RegionName; values.GlobalPos = pos_global; values.SortOrder = sortOrder; values.Enabled = enabled ? 1 : 0; picks.Add(pickID.ToString(), Util.DictionaryToOSD(values.ToKeyValuePairs())); } else { ProfilePickInfo oldpick = new ProfilePickInfo(Util.OSDToDictionary((OSDMap)picks[pickID.ToString()])); //Security check if (oldpick.CreatorUUID != remoteClient.AgentId) return; oldpick.ParcelUUID = parceluuid; oldpick.Name = name; oldpick.SnapshotUUID = snapshotID; oldpick.Description = desc; oldpick.SimName = remoteClient.Scene.RegionInfo.RegionName; oldpick.GlobalPos = pos_global; oldpick.SortOrder = sortOrder; oldpick.Enabled = enabled ? 1 : 0; picks.Add(pickID.ToString(), Util.DictionaryToOSD(oldpick.ToKeyValuePairs())); } info.Picks = Util.OSDToDictionary(picks); ProfileFrontend.UpdateUserProfile(info); }
public void UpdatePick(ProfilePickInfo pick) { Dictionary<string, object> sendData = pick.ToKeyValuePairs(); sendData["METHOD"] = "updatepick"; string reqString = ServerUtils.BuildQueryString(sendData); try { string reply = SynchronousRestFormsRequester.MakeRequest("POST", m_ServerURI + "/auroradata", reqString); if (reply != string.Empty) { Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply); if (replyData != null) { if (replyData.ContainsKey("result") && (replyData["result"].ToString().ToLower() == "null")) { m_log.DebugFormat("[AuroraRemoteProfileConnector]: UpdatePick {0} received null response", pick.PickUUID); } } else { m_log.DebugFormat("[AuroraRemoteProfileConnector]: UpdatePick {0} received null response", pick.PickUUID); } } } catch (Exception e) { m_log.DebugFormat("[AuroraRemoteProfileConnector]: Exception when contacting server: {0}", e.Message); } }