public override void FromOSD (OSDMap map)
{
PrincipalID = map ["PrincipalID"].AsUUID ();
AllowPublish = map ["AllowPublish"].AsBoolean ();
MaturePublish = map ["MaturePublish"].AsBoolean ();
//Interests
Interests = new ProfileInterests {
WantToMask = map ["WantToMask"].AsUInteger (),
WantToText = map ["WantToText"].AsString (),
CanDoMask = map ["CanDoMask"].AsUInteger (),
CanDoText = map ["CanDoText"].AsString (),
Languages = map ["Languages"].AsString ()
};
//End interests
try
{
if (map.ContainsKey ("Notes"))
Notes = (OSDMap)OSDParser.DeserializeJson (map ["Notes"].AsString ());
} catch
{
}
AboutText = map ["AboutText"].AsString ();
FirstLifeImage = map ["FirstLifeImage"].AsUUID ();
FirstLifeAboutText = map ["FirstLifeAboutText"].AsString ();
Image = map ["Image"].AsUUID ();
WebURL = map ["WebURL"].AsString ();
Created = map ["Created"].AsInteger ();
DisplayName = map ["DisplayName"].AsString ();
Partner = map ["Partner"].AsUUID ();
Visible = map ["Visible"].AsBoolean ();
AArchiveName = map ["AArchiveName"].AsString ();
CustomType = map ["CustomType"].AsString ();
IMViaEmail = map ["IMViaEmail"].AsBoolean ();
IsNewUser = map ["IsNewUser"].AsBoolean ();
MembershipGroup = map ["MembershipGroup"].AsString ();
}
}
public IUserProfileInfo GetUserProfile(UUID agentID) { IUserProfileInfo UserProfile = new IUserProfileInfo(); lock (UserProfilesCache) { //Try from the user profile first before getting from the DB if (UserProfilesCache.TryGetValue(agentID, out UserProfile)) return UserProfile; } object remoteValue = DoRemote(agentID); if (remoteValue != null || m_doRemoteOnly) { UserProfile = (IUserProfileInfo)remoteValue; //Add to the cache lock (UserProfilesCache) UserProfilesCache[agentID] = UserProfile; return UserProfile; } QueryFilter filter = new QueryFilter(); filter.andFilters["ID"] = agentID; filter.andFilters["`Key`"] = "LLProfile"; List<string> query = null; //Grab it from the almost generic interface query = GD.Query(new[] { "Value" }, m_userProfileTable, filter, null, null, null); if (query == null || query.Count == 0) return null; //Pull out the OSDmap OSDMap profile = (OSDMap) OSDParser.DeserializeLLSDXml(query[0]); UserProfile = new IUserProfileInfo(); UserProfile.FromOSD(profile); //Add to the cache lock(UserProfilesCache) UserProfilesCache[agentID] = UserProfile; return UserProfile; }