Change friends to handle offers as it was originally designed. This may

need to be changed in SQLite & MSSQL as well
slimupdates
Melanie 2010-03-01 00:02:14 +00:00
parent 18727235a0
commit bfcc57c071
4 changed files with 5 additions and 21 deletions

View File

@ -59,7 +59,7 @@ namespace OpenSim.Data.MySQL
{
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = String.Format("select a.*,b.Flags as TheirFlags from {0} as a left join {0} as b on a.PrincipalID = b.Friend and a.Friend = b.PrincipalID where a.PrincipalID = ?PrincipalID and b.Flags is not null", m_Realm);
cmd.CommandText = String.Format("select a.*,case when b.Flags is null then -1 else b.Flags end as TheirFlags from {0} as a left join {0} as b on a.PrincipalID = b.Friend and a.Friend = b.PrincipalID where a.PrincipalID = ?PrincipalID", m_Realm);
cmd.Parameters.AddWithValue("?PrincipalID", principalID.ToString());
return DoQuery(cmd);

View File

@ -194,10 +194,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
get { return null; }
}
public void OfferFriendship(UUID fromUserId, IClientAPI toUserClient, string offerMessage)
{
}
public uint GetFriendPerms(UUID principalID, UUID friendID)
{
if (!m_Friends.ContainsKey(principalID))
@ -453,8 +449,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
// This user wants to be friends with the other user.
// Let's add both relations to the DB, but one of them is inactive (-1)
FriendsService.StoreFriend(principalID, friendID.ToString(), 1);
FriendsService.StoreFriend(friendID, principalID.ToString(), -1);
FriendsService.StoreFriend(principalID, friendID.ToString(), 0);
// Now let's ask the other user to be friends with this user
ForwardFriendshipOffer(principalID, friendID, im);
@ -486,6 +481,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
private void OnApproveFriendRequest(IClientAPI client, UUID agentID, UUID friendID, List<UUID> callingCardFolders)
{
FriendsService.StoreFriend(agentID, friendID.ToString(), 1);
FriendsService.StoreFriend(friendID, agentID.ToString(), 1);
// update the local cache
m_Friends[agentID].Friends = FriendsService.GetFriends(agentID);

View File

@ -33,19 +33,6 @@ namespace OpenSim.Region.Framework.Interfaces
{
public interface IFriendsModule
{
/// <summary>
/// Offer a friendship to a user from the server end rather than by direct initiation from a client.
/// </summary>
/// <param name="fromUserId">
/// A user with this id must existing in the user data store, but need not be logged on.
/// </param>
/// <param name="toUserClient">
/// An actually logged in client to which the offer is being made.
/// FIXME: This is somewhat too tightly coupled - it should arguably be possible to offer friendships even if the
/// receiving user is not currently online.
/// </param>
/// <param name="offerMessage"></param>
void OfferFriendship(UUID fromUserId, IClientAPI toUserClient, string offerMessage);
uint GetFriendPerms(UUID PrincipalID, UUID FriendID);
void SendFriendsOnlineIfNeeded(IClientAPI client);
}

View File

@ -230,7 +230,6 @@ namespace OpenSim.Services.LLLoginService
SessionID = aCircuit.SessionID;
SecureSessionID = aCircuit.SecureSessionID;
Message = message;
// While we don't have friends...
BuddList = ConvertFriendListItem(friendsList);
StartLocation = where;
@ -612,6 +611,8 @@ namespace OpenSim.Services.LLLoginService
LLLoginResponse.BuddyList buddylistreturn = new LLLoginResponse.BuddyList();
foreach (FriendInfo finfo in friendsList)
{
if (finfo.TheirFlags == -1)
continue;
LLLoginResponse.BuddyList.BuddyInfo buddyitem = new LLLoginResponse.BuddyList.BuddyInfo(finfo.Friend);
buddyitem.BuddyID = finfo.Friend;
buddyitem.BuddyRightsHave = (int)finfo.TheirFlags;