private UserStatus GetUserPresence(User user) { if (!LyncCollaboration.HasStarted) { LyncCollaboration.Start(); } var sipUri = "sip:" + user.SipUri(); var endpoint = LyncCollaboration.UserEndpoint; if (endpoint == null) { throw new Exception("Lync User Endpoint is null."); } var presenceQuery = endpoint.PresenceServices.EndPresenceQuery(endpoint.PresenceServices.BeginPresenceQuery(new[] { sipUri }, new[] { "state" }, null, null, null)); var presence = LyncCollaboration.ProcessPresenceNotification(presenceQuery, user); if (LyncCollaboration.RemotePresence != null) { var target = new RemotePresentitySubscriptionTarget(sipUri); LyncCollaboration.RemotePresence.StartSubscribingToPresentities(new[] { target }); } Availability availability; return(Enum.TryParse(presence, out availability) ? (UserStatus)availability : UserStatus.Offline); }
private void EventsOnBeforeUpdate(UserBeforeUpdateEventArgs userBeforerUpdateEventArgs) { try { if (userBeforerUpdateEventArgs.Id.HasValue) { if (!userBeforerUpdateEventArgs.IsSystemAccount.GetValueOrDefault(true)) { int userId = userBeforerUpdateEventArgs.Id.Value; if (!_beforeUpdateCache.ContainsKey(userId)) { User user = PublicApi.Users.Get(new UsersGetOptions() { Id = userId }); if (!user.HasErrors()) { _beforeUpdateCache.Add(userId, user); } } } } } catch (Exception ex) { new CSException("Triggers", string.Format("EventsOnBeforeUpdate failed for userid:{0}", userBeforerUpdateEventArgs.Id.GetValueOrDefault(-1)), ex).Log(); } }
public static string ToProfileLinkHtml(this Telligent.Evolution.Extensibility.Api.Entities.Version1.User user) { if (user == null) { return(null); } return(HtmlBuilder.Construct(html => { html.Node("span", new { Class = "user-name" }, () => { if (!String.IsNullOrEmpty(user.ProfileUrl)) { html.Node("a", new { href = PublicApi.Html.EncodeAttribute(user.ProfileUrl), Class = "internal-link view-user-profile" }, () => { html.Text(user.DisplayName); }); } else { html.Text(user.DisplayName); } }); })); }
/// <summary> /// Only want to check that the profile has changed, the user object has a lot of stuff that we would prefer to ignore when it comes to firing event updates /// </summary> /// <param name="userAfterUpdateEventArgs"></param> /// <returns></returns> private bool ProfileChanged(UserAfterUpdateEventArgs newDetails) { User oldDetails = _beforeUpdateCache[newDetails.Id.Value]; lock (_lockObj) { foreach (string field in _fields) { if (field.StartsWith("-")) { string trimedField = field.TrimStart(new[] { '-' }); if (oldDetails.ProfileFields[trimedField].Value != newDetails.ProfileFields[trimedField].Value) { return(true); } } else { bool evaluate = false; //Could use reflection if we wanted to increase the number of comparison fields switch (field) { case "UserName": evaluate = oldDetails.Username != newDetails.Username; break; case "DisplayName": evaluate = oldDetails.DisplayName != newDetails.DisplayName; break; case "PrivateEmail": evaluate = oldDetails.PrivateEmail != newDetails.PrivateEmail; break; case "AccountStatus": evaluate = oldDetails.AccountStatus != newDetails.AccountStatus; break; case "AllowSitePartnersToContact": evaluate = oldDetails.AllowSitePartnersToContact != newDetails.AllowSitePartnersToContact; break; case "AllowSiteToContact": evaluate = oldDetails.AllowSiteToContact != newDetails.AllowSiteToContact; break; } if (evaluate) { return(true); } } } } return(false); }
private void ForumReplyRender(ForumReplyRenderEventArgs e) { User user = PublicApi.Users.AccessingUser; if (Services.Get <IPluginManager>().IsEnabled(this)) { if (!user.IsSystemAccount.GetValueOrDefault(false) && user.Id.HasValue) { Injector.Get <ILastReadPostLogic>().UpdateLastReadPost(e.Application.ApplicationId, user.Id.Value, e.ThreadId.GetValueOrDefault(0), e.ForumId.GetValueOrDefault(0), e.Id.GetValueOrDefault(0), e.ContentId, e.Date.GetValueOrDefault(DateTime.MinValue)); } } }
public UserStatus UserPresence(User user) { var presence = user.Presence(); if (string.IsNullOrEmpty(presence)) { return(GetUserPresence(user)); } Availability availability; return(Enum.TryParse(presence, out availability) ? (UserStatus)availability : UserStatus.Offline); }
public void OnAfterUserCreate(PublicEntity user, SamlTokenData samlTokenData) { SamlAfterUserCreateEventArgs args = null; Execute <SamlAfterUserCreateEventHandler>(AfterAuthenticateEvent, h => { if (args == null) { args = new SamlAfterUserCreateEventArgs(user, samlTokenData); } h(args); }, false); }
private ContextItem BuildUserContextItem(Telligent.Evolution.Extensibility.Api.Entities.Version1.User user) { var item = new ContextItem() { TypeName = "User", ApplicationId = user.ContentId, ApplicationTypeId = TEApi.Users.ContentTypeId, ContainerId = user.ContentId, ContainerTypeId = TEApi.Users.ContentTypeId, ContentId = user.ContentId, ContentTypeId = TEApi.Users.ContentTypeId, Id = user.Id.ToString() }; return(item); }
public void SetPresence(User user, PreferredUserStatus status) { if (!LyncCollaboration.HasStarted) { LyncCollaboration.Start(); } var state = PresenceState.UserAway; switch (status) { case PreferredUserStatus.BeRightBack: state = PresenceState.UserBeRightBack; break; case PreferredUserStatus.Busy: state = PresenceState.UserBusy; break; case PreferredUserStatus.DoNotDisturb: state = PresenceState.UserDoNotDisturb; break; case PreferredUserStatus.Offwork: state = PresenceState.UserOffWork; break; case PreferredUserStatus.Online: state = PresenceState.UserAvailable; break; } user.ClearPresence(); var host = Plugin.LyncPlugin.Configuration.GetString("host"); var appPort = Plugin.LyncPlugin.Configuration.GetInt("appPort"); var sip = "sip:" + user.SipUri(); var endpoint = new UserEndpoint(LyncCollaboration.Platform, new UserEndpointSettings(sip, host, appPort)); endpoint.EndEstablish(endpoint.BeginEstablish(null, null)); endpoint.LocalOwnerPresence.EndSubscribe(endpoint.LocalOwnerPresence.BeginSubscribe(null, null)); endpoint.LocalOwnerPresence.EndPublishPresence(endpoint.LocalOwnerPresence.BeginPublishPresence(new PresenceCategory[] { state }, null, null)); endpoint.EndTerminate(endpoint.BeginTerminate(null, null)); }
public static string ToAvatarProfileLinkHtml(this Telligent.Evolution.Extensibility.Api.Entities.Version1.User user, int size = 50, string resizeMethod = "ZoomAndCrop") { if (user == null) { return(null); } return(HtmlBuilder.Construct(html => { html.Node("div", new { Class = "avatar" }, () => { if (!user.IsSystemAccount.GetValueOrDefault(false) && !String.IsNullOrEmpty(user.ProfileUrl)) { html.Node("a", new { href = PublicApi.Html.EncodeAttribute(user.ProfileUrl), Class = "internal-link view-user-profile" }, () => { html.Text(PublicApi.UI.GetResizedImageHtml(user.AvatarUrl, size, size, new Extensibility.Api.Version1.UiGetResizedImageHtmlOptions { ResizeMethod = resizeMethod, HtmlAttributes = new Dictionary <string, string> { { "border", "0" }, { "alt", user.DisplayName } } })); }); } else { html.Text(PublicApi.UI.GetResizedImageHtml(user.AvatarUrl, size, size, new Extensibility.Api.Version1.UiGetResizedImageHtmlOptions { ResizeMethod = "ZoomAndCrop", HtmlAttributes = new Dictionary <string, string> { { "border", "0" }, { "alt", user.DisplayName } } })); } }); })); }
internal SamlAfterUserCreateEventArgs(PublicEntity user, SamlTokenData samlTokenData) { User = user; SamlTokenData = samlTokenData; }
public string Presence(User user) { return(UserPresence(user).ToString()); }
internal SamlBeforeAuthenticateEventArgs(PublicEntity user, SamlTokenData samlTokenData) { User = user; SamlTokenData = samlTokenData; }