Exemple #1
0
        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();
            }
        }
Exemple #3
0
        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));
                }
            }
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #9
0
        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));
        }
Exemple #10
0
        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;
 }
Exemple #12
0
 public string Presence(User user)
 {
     return(UserPresence(user).ToString());
 }
 internal SamlBeforeAuthenticateEventArgs(PublicEntity user, SamlTokenData samlTokenData)
 {
     User          = user;
     SamlTokenData = samlTokenData;
 }