以编程方式获取 DNN 中的所有朋友
Getting all friends in DNN programmatically
我正在尝试检索特定用户的所有 friends
。从 DNN RelationshipController
我只能找到获取两个用户之间关系的方法。是否可以获取一个用户的所有好友?
'获取两个用户的关系:
DotNetNuke.Entities.Users.Social.RelationshipController.Instance.GetFriendRelationship(Me.UserInfo)
我有这段代码。我得到当前用户,然后得到所有关系 userIds 是朋友(相对于追随者)并且是 'Accepted'。使用该列表,我重新加入用户列表以获取朋友的用户属性和 return 作为新对象。
希望这对您有所帮助。
private const int DNNSOCIAL_RELATIONSHIPTYPE_FRIEND = 1;
private const int DNNSOCIAL_RELATIONSHIPTYPE_FOLLOWER = 2;
public List<UserFriend> GetUserFriends(int portalid, int userid)
{
UserInfo currentUser = UserController.GetUserById(portalid, userid);
var friends = currentUser.Social.UserRelationships
.Where(r => r.RelationshipId == DNNSOCIAL_RELATIONSHIPTYPE_FRIEND
&& r.Status == RelationshipStatus.Accepted);
return (from f in friends
join u in UserController.GetUsers(portalid).Cast<UserInfo>()
on f.RelatedUserId equals u.UserID
select new UserFriend { UserId = u.UserID, DisplayName = u.DisplayName, ProfilePicUrl = u.Profile.PhotoURL }).ToList();
}
...
public class UserFriend
{
public int UserId { get; set; }
public string DisplayName { get; set; }
public string ProfilePicUrl { get; set; }
}
VB.NET版本
Public Function GetUserFriends(portalid As Integer, userid As Integer) As List(Of UserFriend)
Dim currentUser As UserInfo = UserController.GetUserById(portalid, userid)
Dim friends = currentUser.Social.UserRelationships.Where(Function(r) r.RelationshipId = DNNSOCIAL_RELATIONSHIPTYPE_FRIEND AndAlso r.Status = Social.RelationshipStatus.Accepted)
Return (From f In friends
Join u In UserController.GetUsers(portalid).Cast(Of UserInfo)()
On f.RelatedUserId Equals u.UserID
Select New UserFriend With {.UserId = u.UserID, .DisplayName = u.DisplayName, .ProfilePicUrl = u.Profile.PhotoURL}).ToList()
End Function
我正在尝试检索特定用户的所有 friends
。从 DNN RelationshipController
我只能找到获取两个用户之间关系的方法。是否可以获取一个用户的所有好友?
'获取两个用户的关系:
DotNetNuke.Entities.Users.Social.RelationshipController.Instance.GetFriendRelationship(Me.UserInfo)
我有这段代码。我得到当前用户,然后得到所有关系 userIds 是朋友(相对于追随者)并且是 'Accepted'。使用该列表,我重新加入用户列表以获取朋友的用户属性和 return 作为新对象。
希望这对您有所帮助。
private const int DNNSOCIAL_RELATIONSHIPTYPE_FRIEND = 1;
private const int DNNSOCIAL_RELATIONSHIPTYPE_FOLLOWER = 2;
public List<UserFriend> GetUserFriends(int portalid, int userid)
{
UserInfo currentUser = UserController.GetUserById(portalid, userid);
var friends = currentUser.Social.UserRelationships
.Where(r => r.RelationshipId == DNNSOCIAL_RELATIONSHIPTYPE_FRIEND
&& r.Status == RelationshipStatus.Accepted);
return (from f in friends
join u in UserController.GetUsers(portalid).Cast<UserInfo>()
on f.RelatedUserId equals u.UserID
select new UserFriend { UserId = u.UserID, DisplayName = u.DisplayName, ProfilePicUrl = u.Profile.PhotoURL }).ToList();
}
...
public class UserFriend
{
public int UserId { get; set; }
public string DisplayName { get; set; }
public string ProfilePicUrl { get; set; }
}
VB.NET版本
Public Function GetUserFriends(portalid As Integer, userid As Integer) As List(Of UserFriend)
Dim currentUser As UserInfo = UserController.GetUserById(portalid, userid)
Dim friends = currentUser.Social.UserRelationships.Where(Function(r) r.RelationshipId = DNNSOCIAL_RELATIONSHIPTYPE_FRIEND AndAlso r.Status = Social.RelationshipStatus.Accepted)
Return (From f In friends
Join u In UserController.GetUsers(portalid).Cast(Of UserInfo)()
On f.RelatedUserId Equals u.UserID
Select New UserFriend With {.UserId = u.UserID, .DisplayName = u.DisplayName, .ProfilePicUrl = u.Profile.PhotoURL}).ToList()
End Function