diff options
author | Diva Canto | 2013-05-07 18:01:48 -0700 |
---|---|---|
committer | Diva Canto | 2013-05-07 18:01:48 -0700 |
commit | e92c05ebbdc44084326c3dcfa0a2ca0958e4b5e6 (patch) | |
tree | 00f06fd1fabe55c5d579f4c33964f5ecbce13e46 /OpenSim/Region/CoreModules | |
parent | BulletSim: normalize quaternian rotations when building compound linksets. (diff) | |
download | opensim-SC-e92c05ebbdc44084326c3dcfa0a2ca0958e4b5e6.zip opensim-SC-e92c05ebbdc44084326c3dcfa0a2ca0958e4b5e6.tar.gz opensim-SC-e92c05ebbdc44084326c3dcfa0a2ca0958e4b5e6.tar.bz2 opensim-SC-e92c05ebbdc44084326c3dcfa0a2ca0958e4b5e6.tar.xz |
Added AvatarPickerSearch capability handler.
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs | 72 |
2 files changed, 39 insertions, 35 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs index 8ce20e9..fac93e6 100644 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs | |||
@@ -70,7 +70,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement | |||
70 | 70 | ||
71 | #endregion ISharedRegionModule | 71 | #endregion ISharedRegionModule |
72 | 72 | ||
73 | protected override void AddAdditionalUsers(UUID avatarID, string query, List<UserData> users) | 73 | protected override void AddAdditionalUsers(string query, List<UserData> users) |
74 | { | 74 | { |
75 | if (query.Contains("@")) // First.Last@foo.com, maybe? | 75 | if (query.Contains("@")) // First.Last@foo.com, maybe? |
76 | { | 76 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs index 7b823ba..6847e57 100644 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs | |||
@@ -46,17 +46,8 @@ using Mono.Addins; | |||
46 | 46 | ||
47 | namespace OpenSim.Region.CoreModules.Framework.UserManagement | 47 | namespace OpenSim.Region.CoreModules.Framework.UserManagement |
48 | { | 48 | { |
49 | public class UserData | ||
50 | { | ||
51 | public UUID Id { get; set; } | ||
52 | public string FirstName { get; set; } | ||
53 | public string LastName { get; set; } | ||
54 | public string HomeURL { get; set; } | ||
55 | public Dictionary<string, object> ServerURLs { get; set; } | ||
56 | } | ||
57 | |||
58 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "UserManagementModule")] | 49 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "UserManagementModule")] |
59 | public class UserManagementModule : ISharedRegionModule, IUserManagement | 50 | public class UserManagementModule : ISharedRegionModule, IUserManagement, IPeople |
60 | { | 51 | { |
61 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 52 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
62 | 53 | ||
@@ -101,6 +92,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement | |||
101 | m_Scenes.Add(scene); | 92 | m_Scenes.Add(scene); |
102 | 93 | ||
103 | scene.RegisterModuleInterface<IUserManagement>(this); | 94 | scene.RegisterModuleInterface<IUserManagement>(this); |
95 | scene.RegisterModuleInterface<IPeople>(this); | ||
104 | scene.EventManager.OnNewClient += new EventManager.OnNewClientDelegate(EventManager_OnNewClient); | 96 | scene.EventManager.OnNewClient += new EventManager.OnNewClientDelegate(EventManager_OnNewClient); |
105 | scene.EventManager.OnPrimsLoaded += new EventManager.PrimsLoaded(EventManager_OnPrimsLoaded); | 97 | scene.EventManager.OnPrimsLoaded += new EventManager.PrimsLoaded(EventManager_OnPrimsLoaded); |
106 | } | 98 | } |
@@ -181,29 +173,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement | |||
181 | 173 | ||
182 | m_log.DebugFormat("[USER MANAGEMENT MODULE]: HandleAvatarPickerRequest for {0}", query); | 174 | m_log.DebugFormat("[USER MANAGEMENT MODULE]: HandleAvatarPickerRequest for {0}", query); |
183 | 175 | ||
184 | // searhc the user accounts service | 176 | List<UserData> users = GetUserData(query, 500, 1); |
185 | List<UserAccount> accs = m_Scenes[0].UserAccountService.GetUserAccounts(m_Scenes[0].RegionInfo.ScopeID, query); | ||
186 | |||
187 | List<UserData> users = new List<UserData>(); | ||
188 | if (accs != null) | ||
189 | { | ||
190 | foreach (UserAccount acc in accs) | ||
191 | { | ||
192 | UserData ud = new UserData(); | ||
193 | ud.FirstName = acc.FirstName; | ||
194 | ud.LastName = acc.LastName; | ||
195 | ud.Id = acc.PrincipalID; | ||
196 | users.Add(ud); | ||
197 | } | ||
198 | } | ||
199 | |||
200 | // search the local cache | ||
201 | foreach (UserData data in m_UserCache.Values) | ||
202 | if (users.Find(delegate(UserData d) { return d.Id == data.Id; }) == null && | ||
203 | (data.FirstName.ToLower().StartsWith(query.ToLower()) || data.LastName.ToLower().StartsWith(query.ToLower()))) | ||
204 | users.Add(data); | ||
205 | |||
206 | AddAdditionalUsers(avatarID, query, users); | ||
207 | 177 | ||
208 | AvatarPickerReplyPacket replyPacket = (AvatarPickerReplyPacket)PacketPool.Instance.GetPacket(PacketType.AvatarPickerReply); | 178 | AvatarPickerReplyPacket replyPacket = (AvatarPickerReplyPacket)PacketPool.Instance.GetPacket(PacketType.AvatarPickerReply); |
209 | // TODO: don't create new blocks if recycling an old packet | 179 | // TODO: don't create new blocks if recycling an old packet |
@@ -249,12 +219,46 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement | |||
249 | client.SendAvatarPickerReply(agent_data, data_args); | 219 | client.SendAvatarPickerReply(agent_data, data_args); |
250 | } | 220 | } |
251 | 221 | ||
252 | protected virtual void AddAdditionalUsers(UUID avatarID, string query, List<UserData> users) | 222 | protected virtual void AddAdditionalUsers(string query, List<UserData> users) |
253 | { | 223 | { |
254 | } | 224 | } |
255 | 225 | ||
256 | #endregion Event Handlers | 226 | #endregion Event Handlers |
257 | 227 | ||
228 | #region IPeople | ||
229 | |||
230 | public List<UserData> GetUserData(string query, int page_size, int page_number) | ||
231 | { | ||
232 | // search the user accounts service | ||
233 | List<UserAccount> accs = m_Scenes[0].UserAccountService.GetUserAccounts(m_Scenes[0].RegionInfo.ScopeID, query); | ||
234 | |||
235 | List<UserData> users = new List<UserData>(); | ||
236 | if (accs != null) | ||
237 | { | ||
238 | foreach (UserAccount acc in accs) | ||
239 | { | ||
240 | UserData ud = new UserData(); | ||
241 | ud.FirstName = acc.FirstName; | ||
242 | ud.LastName = acc.LastName; | ||
243 | ud.Id = acc.PrincipalID; | ||
244 | users.Add(ud); | ||
245 | } | ||
246 | } | ||
247 | |||
248 | // search the local cache | ||
249 | foreach (UserData data in m_UserCache.Values) | ||
250 | if (users.Find(delegate(UserData d) { return d.Id == data.Id; }) == null && | ||
251 | (data.FirstName.ToLower().StartsWith(query.ToLower()) || data.LastName.ToLower().StartsWith(query.ToLower()))) | ||
252 | users.Add(data); | ||
253 | |||
254 | AddAdditionalUsers(query, users); | ||
255 | |||
256 | return users; | ||
257 | |||
258 | } | ||
259 | |||
260 | #endregion IPeople | ||
261 | |||
258 | private void CacheCreators(SceneObjectGroup sog) | 262 | private void CacheCreators(SceneObjectGroup sog) |
259 | { | 263 | { |
260 | //m_log.DebugFormat("[USER MANAGEMENT MODULE]: processing {0} {1}; {2}", sog.RootPart.Name, sog.RootPart.CreatorData, sog.RootPart.CreatorIdentification); | 264 | //m_log.DebugFormat("[USER MANAGEMENT MODULE]: processing {0} {1}; {2}", sog.RootPart.Name, sog.RootPart.CreatorData, sog.RootPart.CreatorIdentification); |