Show last online status of group members from the PresenceService in group profiles
Signed-off-by: Oren Hurvitz <orenh@kitely.com>0.8.2-post-fixes
parent
14b4d8bad7
commit
368ea78d14
|
@ -307,6 +307,21 @@ namespace OpenSim.Groups
|
||||||
m.Contribution = Int32.Parse(d.Data["Contribution"]);
|
m.Contribution = Int32.Parse(d.Data["Contribution"]);
|
||||||
m.ListInProfile = d.Data["ListInProfile"] == "1" ? true : false;
|
m.ListInProfile = d.Data["ListInProfile"] == "1" ? true : false;
|
||||||
|
|
||||||
|
GridUserData gud = m_GridUserService.Get(d.PrincipalID);
|
||||||
|
if (gud != null)
|
||||||
|
{
|
||||||
|
if (bool.Parse(gud.Data["Online"]))
|
||||||
|
{
|
||||||
|
m.OnlineStatus = @"Online";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int unixtime = int.Parse(gud.Data["Login"]);
|
||||||
|
// The viewer is very picky about how these strings are formed. Eg. it will crash on malformed dates!
|
||||||
|
m.OnlineStatus = (unixtime == 0) ? @"unknown" : Util.ToDateTime(unixtime).ToString("MM/dd/yyyy");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Is this person an owner of the group?
|
// Is this person an owner of the group?
|
||||||
m.IsOwner = (rolemembershipsList.Find(r => r.RoleID == ownerRoleID) != null) ? true : false;
|
m.IsOwner = (rolemembershipsList.Find(r => r.RoleID == ownerRoleID) != null) ? true : false;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://opensimulator.org/
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
|
@ -35,50 +35,67 @@ using OpenSim.Services.Base;
|
||||||
|
|
||||||
namespace OpenSim.Groups
|
namespace OpenSim.Groups
|
||||||
{
|
{
|
||||||
public class GroupsServiceBase : ServiceBase
|
public class GroupsServiceBase : ServiceBase
|
||||||
{
|
{
|
||||||
protected IGroupsData m_Database = null;
|
protected IGroupsData m_Database = null;
|
||||||
|
protected IGridUserData m_GridUserService = null;
|
||||||
|
|
||||||
public GroupsServiceBase(IConfigSource config, string cName)
|
public GroupsServiceBase(IConfigSource config, string cName)
|
||||||
: base(config)
|
: base(config)
|
||||||
{
|
{
|
||||||
string dllName = String.Empty;
|
string dllName = String.Empty;
|
||||||
string connString = String.Empty;
|
string connString = String.Empty;
|
||||||
string realm = "os_groups";
|
string realm = "os_groups";
|
||||||
string configName = (cName == string.Empty) ? "Groups" : cName;
|
string usersRealm = "GridUser";
|
||||||
|
string configName = (cName == string.Empty) ? "Groups" : cName;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Try reading the [DatabaseService] section, if it exists
|
// Try reading the [DatabaseService] section, if it exists
|
||||||
//
|
//
|
||||||
IConfig dbConfig = config.Configs["DatabaseService"];
|
IConfig dbConfig = config.Configs["DatabaseService"];
|
||||||
if (dbConfig != null)
|
if (dbConfig != null)
|
||||||
{
|
{
|
||||||
if (dllName == String.Empty)
|
if (dllName == String.Empty)
|
||||||
dllName = dbConfig.GetString("StorageProvider", String.Empty);
|
dllName = dbConfig.GetString("StorageProvider", String.Empty);
|
||||||
if (connString == String.Empty)
|
if (connString == String.Empty)
|
||||||
connString = dbConfig.GetString("ConnectionString", String.Empty);
|
connString = dbConfig.GetString("ConnectionString", String.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// [Groups] section overrides [DatabaseService], if it exists
|
// [Groups] section overrides [DatabaseService], if it exists
|
||||||
//
|
//
|
||||||
IConfig groupsConfig = config.Configs[configName];
|
IConfig groupsConfig = config.Configs[configName];
|
||||||
if (groupsConfig != null)
|
if (groupsConfig != null)
|
||||||
{
|
{
|
||||||
dllName = groupsConfig.GetString("StorageProvider", dllName);
|
dllName = groupsConfig.GetString("StorageProvider", dllName);
|
||||||
connString = groupsConfig.GetString("ConnectionString", connString);
|
connString = groupsConfig.GetString("ConnectionString", connString);
|
||||||
realm = groupsConfig.GetString("Realm", realm);
|
realm = groupsConfig.GetString("Realm", realm);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// We tried, but this doesn't exist. We can't proceed.
|
// We tried, but this doesn't exist. We can't proceed.
|
||||||
//
|
//
|
||||||
if (dllName.Equals(String.Empty))
|
if (dllName.Equals(String.Empty))
|
||||||
throw new Exception("No StorageProvider configured");
|
throw new Exception("No StorageProvider configured");
|
||||||
|
|
||||||
m_Database = LoadPlugin<IGroupsData>(dllName, new Object[] { connString, realm });
|
m_Database = LoadPlugin<IGroupsData>(dllName, new Object[] { connString, realm });
|
||||||
if (m_Database == null)
|
if (m_Database == null)
|
||||||
throw new Exception("Could not find a storage interface in the given module " + dllName);
|
throw new Exception("Could not find a storage interface in the given module " + dllName);
|
||||||
}
|
|
||||||
}
|
//
|
||||||
}
|
// [GridUserService] section overrides [DatabaseService], if it exists
|
||||||
|
//
|
||||||
|
IConfig usersConfig = config.Configs["GridUserService"];
|
||||||
|
if (usersConfig != null)
|
||||||
|
{
|
||||||
|
dllName = usersConfig.GetString("StorageProvider", dllName);
|
||||||
|
connString = usersConfig.GetString("ConnectionString", connString);
|
||||||
|
usersRealm = usersConfig.GetString("Realm", usersRealm);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_GridUserService = LoadPlugin<IGridUserData>(dllName, new Object[] { connString, usersRealm });
|
||||||
|
if (m_GridUserService == null)
|
||||||
|
throw new Exception("Could not find a storage inferface for the given users module " + dllName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -60,12 +60,12 @@ namespace OpenSim.Services.UserAccountService
|
||||||
//
|
//
|
||||||
// [GridUsetService] section overrides [DatabaseService], if it exists
|
// [GridUsetService] section overrides [DatabaseService], if it exists
|
||||||
//
|
//
|
||||||
IConfig presenceConfig = config.Configs["GridUserService"];
|
IConfig usersConfig = config.Configs["GridUserService"];
|
||||||
if (presenceConfig != null)
|
if (usersConfig != null)
|
||||||
{
|
{
|
||||||
dllName = presenceConfig.GetString("StorageProvider", dllName);
|
dllName = usersConfig.GetString("StorageProvider", dllName);
|
||||||
connString = presenceConfig.GetString("ConnectionString", connString);
|
connString = usersConfig.GetString("ConnectionString", connString);
|
||||||
realm = presenceConfig.GetString("Realm", realm);
|
realm = usersConfig.GetString("Realm", realm);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue