diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs | 188 |
1 files changed, 113 insertions, 75 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs index 1f7db64..57025bf 100644 --- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs | |||
@@ -161,7 +161,8 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
161 | return; | 161 | return; |
162 | } | 162 | } |
163 | 163 | ||
164 | m_allowUserProfileWebURLs = profileConfig.GetBoolean("AllowUserProfileWebURLs", m_allowUserProfileWebURLs); | 164 | m_allowUserProfileWebURLs = profileConfig.GetBoolean("AllowUserProfileWebURLs", m_allowUserProfileWebURLs); |
165 | |||
165 | m_log.Debug("[PROFILES]: Full Profiles Enabled"); | 166 | m_log.Debug("[PROFILES]: Full Profiles Enabled"); |
166 | ReplaceableInterface = null; | 167 | ReplaceableInterface = null; |
167 | Enabled = true; | 168 | Enabled = true; |
@@ -318,37 +319,46 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
318 | return; | 319 | return; |
319 | 320 | ||
320 | IClientAPI remoteClient = (IClientAPI)sender; | 321 | IClientAPI remoteClient = (IClientAPI)sender; |
322 | Dictionary<UUID, string> classifieds = new Dictionary<UUID, string>(); | ||
321 | 323 | ||
322 | UUID targetID; | 324 | UUID targetID; |
323 | UUID.TryParse(args[0], out targetID); | 325 | if(!UUID.TryParse(args[0], out targetID) || targetID == UUID.Zero) |
324 | 326 | return; | |
325 | 327 | ||
326 | ScenePresence p = FindPresence(targetID); | 328 | ScenePresence p = FindPresence(targetID); |
327 | if (p != null && p.isNPC) | 329 | if (p != null && p.isNPC) |
328 | { | 330 | { |
329 | remoteClient.SendAvatarClassifiedReply(new UUID(args[0]), new Dictionary<UUID, string>()); | 331 | remoteClient.SendAvatarClassifiedReply(targetID, classifieds); |
330 | return; | 332 | return; |
331 | } | 333 | } |
332 | 334 | ||
333 | string serverURI = string.Empty; | 335 | string serverURI = string.Empty; |
334 | GetUserProfileServerURI(targetID, out serverURI); | 336 | GetUserProfileServerURI(targetID, out serverURI); |
335 | UUID creatorId = UUID.Zero; | 337 | if(string.IsNullOrWhiteSpace(serverURI)) |
336 | Dictionary<UUID, string> classifieds = new Dictionary<UUID, string>(); | 338 | { |
339 | remoteClient.SendAvatarClassifiedReply(targetID, classifieds); | ||
340 | return; | ||
341 | } | ||
337 | 342 | ||
338 | OSDMap parameters= new OSDMap(); | 343 | OSDMap parameters= new OSDMap(); |
339 | UUID.TryParse(args[0], out creatorId); | 344 | |
340 | parameters.Add("creatorId", OSD.FromUUID(creatorId)); | 345 | parameters.Add("creatorId", OSD.FromUUID(targetID)); |
341 | OSD Params = (OSD)parameters; | 346 | OSD Params = (OSD)parameters; |
342 | if(!rpc.JsonRpcRequest(ref Params, "avatarclassifiedsrequest", serverURI, UUID.Random().ToString())) | 347 | if(!rpc.JsonRpcRequest(ref Params, "avatarclassifiedsrequest", serverURI, UUID.Random().ToString())) |
343 | { | 348 | { |
344 | remoteClient.SendAvatarClassifiedReply(new UUID(args[0]), classifieds); | 349 | remoteClient.SendAvatarClassifiedReply(targetID, classifieds); |
345 | return; | 350 | return; |
346 | } | 351 | } |
347 | 352 | ||
348 | parameters = (OSDMap)Params; | 353 | parameters = (OSDMap)Params; |
349 | 354 | ||
350 | OSDArray list = (OSDArray)parameters["result"]; | 355 | if(!parameters.ContainsKey("result") || parameters["result"] == null) |
356 | { | ||
357 | remoteClient.SendAvatarClassifiedReply(targetID, classifieds); | ||
358 | return; | ||
359 | } | ||
351 | 360 | ||
361 | OSDArray list = (OSDArray)parameters["result"]; | ||
352 | 362 | ||
353 | foreach(OSD map in list) | 363 | foreach(OSD map in list) |
354 | { | 364 | { |
@@ -362,7 +372,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
362 | { | 372 | { |
363 | if (!m_classifiedCache.ContainsKey(cid)) | 373 | if (!m_classifiedCache.ContainsKey(cid)) |
364 | { | 374 | { |
365 | m_classifiedCache.Add(cid,creatorId); | 375 | m_classifiedCache.Add(cid,targetID); |
366 | m_classifiedInterest.Add(cid, 0); | 376 | m_classifiedInterest.Add(cid, 0); |
367 | } | 377 | } |
368 | 378 | ||
@@ -370,7 +380,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
370 | } | 380 | } |
371 | } | 381 | } |
372 | 382 | ||
373 | remoteClient.SendAvatarClassifiedReply(new UUID(args[0]), classifieds); | 383 | remoteClient.SendAvatarClassifiedReply(targetID, classifieds); |
374 | } | 384 | } |
375 | 385 | ||
376 | public void ClassifiedInfoRequest(UUID queryClassifiedID, IClientAPI remoteClient) | 386 | public void ClassifiedInfoRequest(UUID queryClassifiedID, IClientAPI remoteClient) |
@@ -397,6 +407,10 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
397 | 407 | ||
398 | string serverURI = string.Empty; | 408 | string serverURI = string.Empty; |
399 | GetUserProfileServerURI(target, out serverURI); | 409 | GetUserProfileServerURI(target, out serverURI); |
410 | if(string.IsNullOrWhiteSpace(serverURI)) | ||
411 | { | ||
412 | return; | ||
413 | } | ||
400 | 414 | ||
401 | object Ad = (object)ad; | 415 | object Ad = (object)ad; |
402 | if(!rpc.JsonRpcRequest(ref Ad, "classifieds_info_query", serverURI, UUID.Random().ToString())) | 416 | if(!rpc.JsonRpcRequest(ref Ad, "classifieds_info_query", serverURI, UUID.Random().ToString())) |
@@ -467,6 +481,10 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
467 | 481 | ||
468 | string serverURI = string.Empty; | 482 | string serverURI = string.Empty; |
469 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); | 483 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); |
484 | if(string.IsNullOrWhiteSpace(serverURI)) | ||
485 | { | ||
486 | return; | ||
487 | } | ||
470 | 488 | ||
471 | OSDMap parameters = new OSDMap {{"creatorId", OSD.FromUUID(creatorId)}}; | 489 | OSDMap parameters = new OSDMap {{"creatorId", OSD.FromUUID(creatorId)}}; |
472 | OSD Params = (OSD)parameters; | 490 | OSD Params = (OSD)parameters; |
@@ -533,10 +551,14 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
533 | { | 551 | { |
534 | string serverURI = string.Empty; | 552 | string serverURI = string.Empty; |
535 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); | 553 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); |
554 | if(string.IsNullOrWhiteSpace(serverURI)) | ||
555 | return; | ||
536 | 556 | ||
537 | UUID classifiedId; | 557 | UUID classifiedId; |
558 | if(!UUID.TryParse(queryClassifiedID.ToString(), out classifiedId)) | ||
559 | return; | ||
560 | |||
538 | OSDMap parameters= new OSDMap(); | 561 | OSDMap parameters= new OSDMap(); |
539 | UUID.TryParse(queryClassifiedID.ToString(), out classifiedId); | ||
540 | parameters.Add("classifiedId", OSD.FromUUID(classifiedId)); | 562 | parameters.Add("classifiedId", OSD.FromUUID(classifiedId)); |
541 | OSD Params = (OSD)parameters; | 563 | OSD Params = (OSD)parameters; |
542 | if(!rpc.JsonRpcRequest(ref Params, "classified_delete", serverURI, UUID.Random().ToString())) | 564 | if(!rpc.JsonRpcRequest(ref Params, "classified_delete", serverURI, UUID.Random().ToString())) |
@@ -571,33 +593,41 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
571 | IClientAPI remoteClient = (IClientAPI)sender; | 593 | IClientAPI remoteClient = (IClientAPI)sender; |
572 | 594 | ||
573 | UUID targetId; | 595 | UUID targetId; |
574 | UUID.TryParse(args[0], out targetId); | 596 | if(!UUID.TryParse(args[0], out targetId)) |
597 | return; | ||
575 | 598 | ||
576 | // Can't handle NPC yet... | 599 | Dictionary<UUID, string> picks = new Dictionary<UUID, string>(); |
577 | ScenePresence p = FindPresence(targetId); | ||
578 | 600 | ||
601 | ScenePresence p = FindPresence(targetId); | ||
579 | if (p != null && p.isNPC) | 602 | if (p != null && p.isNPC) |
580 | { | 603 | { |
581 | remoteClient.SendAvatarPicksReply(new UUID(args[0]), new Dictionary<UUID, string>()); | 604 | remoteClient.SendAvatarPicksReply(targetId, picks); |
582 | return; | 605 | return; |
583 | } | 606 | } |
584 | 607 | ||
585 | string serverURI = string.Empty; | 608 | string serverURI = string.Empty; |
586 | GetUserProfileServerURI(targetId, out serverURI); | 609 | GetUserProfileServerURI(targetId, out serverURI); |
587 | 610 | if(string.IsNullOrWhiteSpace(serverURI)) | |
588 | Dictionary<UUID, string> picks = new Dictionary<UUID, string>(); | 611 | { |
612 | remoteClient.SendAvatarPicksReply(targetId, picks); | ||
613 | return; | ||
614 | } | ||
589 | 615 | ||
590 | OSDMap parameters= new OSDMap(); | 616 | OSDMap parameters= new OSDMap(); |
591 | parameters.Add("creatorId", OSD.FromUUID(targetId)); | 617 | parameters.Add("creatorId", OSD.FromUUID(targetId)); |
592 | OSD Params = (OSD)parameters; | 618 | OSD Params = (OSD)parameters; |
593 | if(!rpc.JsonRpcRequest(ref Params, "avatarpicksrequest", serverURI, UUID.Random().ToString())) | 619 | if(!rpc.JsonRpcRequest(ref Params, "avatarpicksrequest", serverURI, UUID.Random().ToString())) |
594 | { | 620 | { |
595 | remoteClient.SendAvatarPicksReply(new UUID(args[0]), picks); | 621 | remoteClient.SendAvatarPicksReply(targetId, picks); |
596 | return; | 622 | return; |
597 | } | 623 | } |
598 | 624 | ||
599 | parameters = (OSDMap)Params; | 625 | parameters = (OSDMap)Params; |
600 | 626 | if(!parameters.ContainsKey("result") || parameters["result"] == null) | |
627 | { | ||
628 | remoteClient.SendAvatarPicksReply(targetId, picks); | ||
629 | return; | ||
630 | } | ||
601 | OSDArray list = (OSDArray)parameters["result"]; | 631 | OSDArray list = (OSDArray)parameters["result"]; |
602 | 632 | ||
603 | foreach(OSD map in list) | 633 | foreach(OSD map in list) |
@@ -605,12 +635,9 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
605 | OSDMap m = (OSDMap)map; | 635 | OSDMap m = (OSDMap)map; |
606 | UUID cid = m["pickuuid"].AsUUID(); | 636 | UUID cid = m["pickuuid"].AsUUID(); |
607 | string name = m["name"].AsString(); | 637 | string name = m["name"].AsString(); |
608 | |||
609 | m_log.DebugFormat("[PROFILES]: PicksRequest {0}", name); | ||
610 | |||
611 | picks[cid] = name; | 638 | picks[cid] = name; |
612 | } | 639 | } |
613 | remoteClient.SendAvatarPicksReply(new UUID(args[0]), picks); | 640 | remoteClient.SendAvatarPicksReply(targetId, picks); |
614 | } | 641 | } |
615 | 642 | ||
616 | /// <summary> | 643 | /// <summary> |
@@ -630,20 +657,27 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
630 | if (!(sender is IClientAPI)) | 657 | if (!(sender is IClientAPI)) |
631 | return; | 658 | return; |
632 | 659 | ||
660 | UserProfilePick pick = new UserProfilePick (); | ||
633 | UUID targetID; | 661 | UUID targetID; |
634 | UUID.TryParse (args [0], out targetID); | 662 | if(!UUID.TryParse(args [0], out targetID)) |
663 | return; | ||
664 | |||
665 | pick.CreatorId = targetID; | ||
666 | |||
667 | if(!UUID.TryParse (args [1], out pick.PickId)) | ||
668 | return; | ||
669 | |||
635 | string serverURI = string.Empty; | 670 | string serverURI = string.Empty; |
636 | GetUserProfileServerURI (targetID, out serverURI); | 671 | GetUserProfileServerURI (targetID, out serverURI); |
672 | if(string.IsNullOrWhiteSpace(serverURI)) | ||
673 | { | ||
674 | return; | ||
675 | } | ||
637 | 676 | ||
638 | string theirGatekeeperURI; | 677 | string theirGatekeeperURI; |
639 | GetUserGatekeeperURI (targetID, out theirGatekeeperURI); | 678 | GetUserGatekeeperURI(targetID, out theirGatekeeperURI); |
640 | 679 | ||
641 | IClientAPI remoteClient = (IClientAPI)sender; | 680 | IClientAPI remoteClient = (IClientAPI)sender; |
642 | |||
643 | UserProfilePick pick = new UserProfilePick (); | ||
644 | UUID.TryParse (args [0], out pick.CreatorId); | ||
645 | UUID.TryParse (args [1], out pick.PickId); | ||
646 | |||
647 | 681 | ||
648 | object Pick = (object)pick; | 682 | object Pick = (object)pick; |
649 | if (!rpc.JsonRpcRequest (ref Pick, "pickinforequest", serverURI, UUID.Random ().ToString ())) { | 683 | if (!rpc.JsonRpcRequest (ref Pick, "pickinforequest", serverURI, UUID.Random ().ToString ())) { |
@@ -654,13 +688,9 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
654 | pick = (UserProfilePick)Pick; | 688 | pick = (UserProfilePick)Pick; |
655 | 689 | ||
656 | Vector3 globalPos = new Vector3(Vector3.Zero); | 690 | Vector3 globalPos = new Vector3(Vector3.Zero); |
691 | Vector3.TryParse(pick.GlobalPos, out globalPos); | ||
657 | 692 | ||
658 | // Smoke and mirrors | 693 | if (!string.IsNullOrWhiteSpace(MyGatekeeper) && pick.Gatekeeper != MyGatekeeper) |
659 | if (pick.Gatekeeper == MyGatekeeper) | ||
660 | { | ||
661 | Vector3.TryParse(pick.GlobalPos,out globalPos); | ||
662 | } | ||
663 | else | ||
664 | { | 694 | { |
665 | // Setup the illusion | 695 | // Setup the illusion |
666 | string region = string.Format("{0} {1}",pick.Gatekeeper,pick.SimName); | 696 | string region = string.Format("{0} {1}",pick.Gatekeeper,pick.SimName); |
@@ -668,21 +698,19 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
668 | 698 | ||
669 | if(target == null) | 699 | if(target == null) |
670 | { | 700 | { |
671 | // This is a dead or unreachable region | 701 | // This is a unreachable region |
672 | } | 702 | } |
673 | else | 703 | else |
674 | { | 704 | { |
675 | // Work our slight of hand | 705 | // we have a proxy on map |
676 | int x = target.RegionLocX; | 706 | // this is a fail on large regions |
677 | int y = target.RegionLocY; | 707 | uint gtmp = (uint)globalPos.X >> 8; |
678 | 708 | globalPos.X -= (gtmp << 8); | |
679 | dynamic synthX = globalPos.X - (globalPos.X/Constants.RegionSize) * Constants.RegionSize; | 709 | globalPos.X += target.RegionLocX; |
680 | synthX += x; | 710 | |
681 | globalPos.X = synthX; | 711 | gtmp = (uint)globalPos.Y >> 8; |
682 | 712 | globalPos.Y -= (gtmp << 8); | |
683 | dynamic synthY = globalPos.Y - (globalPos.Y/Constants.RegionSize) * Constants.RegionSize; | 713 | globalPos.Y += target.RegionLocY; |
684 | synthY += y; | ||
685 | globalPos.Y = synthY; | ||
686 | } | 714 | } |
687 | } | 715 | } |
688 | 716 | ||
@@ -732,6 +760,11 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
732 | UserProfilePick pick = new UserProfilePick(); | 760 | UserProfilePick pick = new UserProfilePick(); |
733 | string serverURI = string.Empty; | 761 | string serverURI = string.Empty; |
734 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); | 762 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); |
763 | if(string.IsNullOrWhiteSpace(serverURI)) | ||
764 | { | ||
765 | return; | ||
766 | } | ||
767 | |||
735 | ScenePresence p = FindPresence(remoteClient.AgentId); | 768 | ScenePresence p = FindPresence(remoteClient.AgentId); |
736 | 769 | ||
737 | Vector3 avaPos = p.AbsolutePosition; | 770 | Vector3 avaPos = p.AbsolutePosition; |
@@ -797,6 +830,10 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
797 | { | 830 | { |
798 | string serverURI = string.Empty; | 831 | string serverURI = string.Empty; |
799 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); | 832 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); |
833 | if(string.IsNullOrWhiteSpace(serverURI)) | ||
834 | { | ||
835 | return; | ||
836 | } | ||
800 | 837 | ||
801 | OSDMap parameters= new OSDMap(); | 838 | OSDMap parameters= new OSDMap(); |
802 | parameters.Add("pickId", OSD.FromUUID(queryPickID)); | 839 | parameters.Add("pickId", OSD.FromUUID(queryPickID)); |
@@ -830,11 +867,19 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
830 | if (!(sender is IClientAPI)) | 867 | if (!(sender is IClientAPI)) |
831 | return; | 868 | return; |
832 | 869 | ||
870 | if(!UUID.TryParse(args[0], out note.TargetId)) | ||
871 | return; | ||
872 | |||
833 | IClientAPI remoteClient = (IClientAPI)sender; | 873 | IClientAPI remoteClient = (IClientAPI)sender; |
874 | note.UserId = remoteClient.AgentId; | ||
875 | |||
834 | string serverURI = string.Empty; | 876 | string serverURI = string.Empty; |
835 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); | 877 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); |
836 | note.UserId = remoteClient.AgentId; | 878 | if(string.IsNullOrWhiteSpace(serverURI)) |
837 | UUID.TryParse(args[0], out note.TargetId); | 879 | { |
880 | remoteClient.SendAvatarNotesReply(note.TargetId, note.Notes); | ||
881 | return; | ||
882 | } | ||
838 | 883 | ||
839 | object Note = (object)note; | 884 | object Note = (object)note; |
840 | if(!rpc.JsonRpcRequest(ref Note, "avatarnotesrequest", serverURI, UUID.Random().ToString())) | 885 | if(!rpc.JsonRpcRequest(ref Note, "avatarnotesrequest", serverURI, UUID.Random().ToString())) |
@@ -842,8 +887,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
842 | remoteClient.SendAvatarNotesReply(note.TargetId, note.Notes); | 887 | remoteClient.SendAvatarNotesReply(note.TargetId, note.Notes); |
843 | return; | 888 | return; |
844 | } | 889 | } |
845 | note = (UserProfileNotes) Note; | 890 | note = (UserProfileNotes) Note; |
846 | |||
847 | remoteClient.SendAvatarNotesReply(note.TargetId, note.Notes); | 891 | remoteClient.SendAvatarNotesReply(note.TargetId, note.Notes); |
848 | } | 892 | } |
849 | 893 | ||
@@ -877,6 +921,8 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
877 | 921 | ||
878 | string serverURI = string.Empty; | 922 | string serverURI = string.Empty; |
879 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); | 923 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); |
924 | if(string.IsNullOrWhiteSpace(serverURI)) | ||
925 | return; | ||
880 | 926 | ||
881 | object Note = note; | 927 | object Note = note; |
882 | if(!rpc.JsonRpcRequest(ref Note, "avatar_notes_update", serverURI, UUID.Random().ToString())) | 928 | if(!rpc.JsonRpcRequest(ref Note, "avatar_notes_update", serverURI, UUID.Random().ToString())) |
@@ -912,6 +958,8 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
912 | 958 | ||
913 | string serverURI = string.Empty; | 959 | string serverURI = string.Empty; |
914 | bool foreign = GetUserProfileServerURI(remoteClient.AgentId, out serverURI); | 960 | bool foreign = GetUserProfileServerURI(remoteClient.AgentId, out serverURI); |
961 | if(string.IsNullOrWhiteSpace(serverURI)) | ||
962 | return; | ||
915 | 963 | ||
916 | object Pref = pref; | 964 | object Pref = pref; |
917 | if(!rpc.JsonRpcRequest(ref Pref, "user_preferences_update", serverURI, UUID.Random().ToString())) | 965 | if(!rpc.JsonRpcRequest(ref Pref, "user_preferences_update", serverURI, UUID.Random().ToString())) |
@@ -936,7 +984,8 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
936 | 984 | ||
937 | string serverURI = string.Empty; | 985 | string serverURI = string.Empty; |
938 | bool foreign = GetUserProfileServerURI(remoteClient.AgentId, out serverURI); | 986 | bool foreign = GetUserProfileServerURI(remoteClient.AgentId, out serverURI); |
939 | 987 | if(string.IsNullOrWhiteSpace(serverURI)) | |
988 | return; | ||
940 | 989 | ||
941 | object Pref = (object)pref; | 990 | object Pref = (object)pref; |
942 | if(!rpc.JsonRpcRequest(ref Pref, "user_preferences_request", serverURI, UUID.Random().ToString())) | 991 | if(!rpc.JsonRpcRequest(ref Pref, "user_preferences_request", serverURI, UUID.Random().ToString())) |
@@ -987,6 +1036,8 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
987 | 1036 | ||
988 | string serverURI = string.Empty; | 1037 | string serverURI = string.Empty; |
989 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); | 1038 | GetUserProfileServerURI(remoteClient.AgentId, out serverURI); |
1039 | if(string.IsNullOrWhiteSpace(serverURI)) | ||
1040 | return; | ||
990 | 1041 | ||
991 | object Param = prop; | 1042 | object Param = prop; |
992 | if(!rpc.JsonRpcRequest(ref Param, "avatar_interests_update", serverURI, UUID.Random().ToString())) | 1043 | if(!rpc.JsonRpcRequest(ref Param, "avatar_interests_update", serverURI, UUID.Random().ToString())) |
@@ -1006,9 +1057,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
1006 | return; | 1057 | return; |
1007 | } | 1058 | } |
1008 | 1059 | ||
1009 | // Can't handle NPC yet... | ||
1010 | ScenePresence p = FindPresence(avatarID); | 1060 | ScenePresence p = FindPresence(avatarID); |
1011 | |||
1012 | if (p != null && p.isNPC) | 1061 | if (p != null && p.isNPC) |
1013 | { | 1062 | { |
1014 | remoteClient.SendAvatarProperties(avatarID, ((INPC)(p.ControllingClient)).profileAbout, ((INPC)(p.ControllingClient)).Born, | 1063 | remoteClient.SendAvatarProperties(avatarID, ((INPC)(p.ControllingClient)).profileAbout, ((INPC)(p.ControllingClient)).Born, |
@@ -1035,19 +1084,15 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
1035 | } | 1084 | } |
1036 | 1085 | ||
1037 | Byte[] membershipType = new Byte[1]; | 1086 | Byte[] membershipType = new Byte[1]; |
1038 | string born = String.Empty; | 1087 | string born = string.Empty; |
1039 | uint flags = 0x00; | 1088 | uint flags = 0x00; |
1040 | 1089 | ||
1041 | if (null != account) | 1090 | if (null != account) |
1042 | { | 1091 | { |
1043 | if (account.UserTitle == "") | 1092 | if (account.UserTitle == "") |
1044 | { | ||
1045 | membershipType[0] = (Byte)((account.UserFlags & 0xf00) >> 8); | 1093 | membershipType[0] = (Byte)((account.UserFlags & 0xf00) >> 8); |
1046 | } | ||
1047 | else | 1094 | else |
1048 | { | ||
1049 | membershipType = Utils.StringToBytes(account.UserTitle); | 1095 | membershipType = Utils.StringToBytes(account.UserTitle); |
1050 | } | ||
1051 | 1096 | ||
1052 | born = Util.ToDateTime(account.Created).ToString( | 1097 | born = Util.ToDateTime(account.Created).ToString( |
1053 | "M/d/yyyy", CultureInfo.InvariantCulture); | 1098 | "M/d/yyyy", CultureInfo.InvariantCulture); |
@@ -1058,16 +1103,13 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
1058 | if (GetUserAccountData(avatarID, out userInfo) == true) | 1103 | if (GetUserAccountData(avatarID, out userInfo) == true) |
1059 | { | 1104 | { |
1060 | if ((string)userInfo["user_title"] == "") | 1105 | if ((string)userInfo["user_title"] == "") |
1061 | { | ||
1062 | membershipType[0] = (Byte)(((Byte)userInfo["user_flags"] & 0xf00) >> 8); | 1106 | membershipType[0] = (Byte)(((Byte)userInfo["user_flags"] & 0xf00) >> 8); |
1063 | } | ||
1064 | else | 1107 | else |
1065 | { | ||
1066 | membershipType = Utils.StringToBytes((string)userInfo["user_title"]); | 1108 | membershipType = Utils.StringToBytes((string)userInfo["user_title"]); |
1067 | } | ||
1068 | 1109 | ||
1069 | int val_born = (int)userInfo["user_created"]; | 1110 | int val_born = (int)userInfo["user_created"]; |
1070 | born = Util.ToDateTime(val_born).ToString( | 1111 | if(val_born != 0) |
1112 | born = Util.ToDateTime(val_born).ToString( | ||
1071 | "M/d/yyyy", CultureInfo.InvariantCulture); | 1113 | "M/d/yyyy", CultureInfo.InvariantCulture); |
1072 | 1114 | ||
1073 | // picky, picky | 1115 | // picky, picky |
@@ -1077,20 +1119,17 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
1077 | } | 1119 | } |
1078 | 1120 | ||
1079 | UserProfileProperties props = new UserProfileProperties(); | 1121 | UserProfileProperties props = new UserProfileProperties(); |
1080 | string result = string.Empty; | ||
1081 | |||
1082 | props.UserId = avatarID; | 1122 | props.UserId = avatarID; |
1083 | 1123 | ||
1084 | if (!GetProfileData(ref props, foreign, out result)) | 1124 | string result = string.Empty; |
1125 | if(!GetProfileData(ref props, foreign, out result)) | ||
1085 | { | 1126 | { |
1086 | // m_log.DebugFormat("Error getting profile for {0}: {1}", avatarID, result); | 1127 | props.AboutText ="Profile not avaible at this time. User may still be unknown to this grid"; |
1087 | return; | ||
1088 | } | 1128 | } |
1089 | 1129 | ||
1090 | // if on same region force online | 1130 | // if on same region force online |
1091 | if(p != null && !p.IsDeleted) | 1131 | if(p != null && !p.IsDeleted) |
1092 | flags |= 0x10; | 1132 | flags |= 0x10; |
1093 | |||
1094 | 1133 | ||
1095 | if(!m_allowUserProfileWebURLs) | 1134 | if(!m_allowUserProfileWebURLs) |
1096 | props.WebUrl =""; | 1135 | props.WebUrl =""; |
@@ -1166,12 +1205,11 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
1166 | 1205 | ||
1167 | string serverURI = string.Empty; | 1206 | string serverURI = string.Empty; |
1168 | GetUserProfileServerURI(properties.UserId, out serverURI); | 1207 | GetUserProfileServerURI(properties.UserId, out serverURI); |
1169 | |||
1170 | // This is checking a friend on the home grid | 1208 | // This is checking a friend on the home grid |
1171 | // Not HG friend | 1209 | // Not HG friend |
1172 | if (String.IsNullOrEmpty(serverURI)) | 1210 | if (String.IsNullOrEmpty(serverURI)) |
1173 | { | 1211 | { |
1174 | message = "No Presence - foreign friend"; | 1212 | message = "User profile service unknown at this time"; |
1175 | return false; | 1213 | return false; |
1176 | } | 1214 | } |
1177 | 1215 | ||