private List <SubscriptionObject> GetSubscriptionObjectsByType(Guid productID, Guid moduleID, Guid typeID)
        {
            var storage = StorageFactory.GetStorage();

            List <SubscriptionObject> subscriptionObjects  = new List <SubscriptionObject>();
            ISubscriptionProvider     subscriptionProvider = storage.NotifySource.GetSubscriptionProvider();

            if (typeID.Equals(_photoSubscriptionTypeID))
            {
                List <string> userList = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        ASC.PhotoManager.PhotoConst.NewPhotoUploaded,
                        storage.NotifySource.GetRecipientsProvider().GetRecipient(SecurityContext.CurrentAccount.ID.ToString()))
                    );

                if (userList.Contains(null))
                {
                    subscriptionObjects.Add(new SubscriptionObject()
                    {
                        ID               = new Guid(ASC.PhotoManager.PhotoConst._NewPhotoSubscribeCategory).ToString(),
                        Name             = PhotoManagerResource.NotifyOnUploadsTitle,
                        URL              = string.Empty,
                        SubscriptionType = GetSubscriptionTypes().Find(st => st.ID.Equals(_photoSubscriptionTypeID))
                    });
                }
            }
            else if (typeID.Equals(_commentSubscriptionTypeID))
            {
                List <string> eventsList = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        ASC.PhotoManager.PhotoConst.NewEventComment,
                        storage.NotifySource.GetRecipientsProvider().GetRecipient(SecurityContext.CurrentAccount.ID.ToString()))
                    );
                if (eventsList.Count > 0)
                {
                    var events = storage.GetEvents(0, int.MaxValue);

                    foreach (Event eve in eventsList.ConvertAll <Event>((id) => events.Find((_event) => _event.Id.ToString() == id)))
                    {
                        if (eve == null)
                        {
                            continue;
                        }

                        subscriptionObjects.Add(new SubscriptionObject()
                        {
                            ID               = eve.Id.ToString(),
                            Name             = eve.Name,
                            URL              = VirtualPathUtility.ToAbsolute("~/products/community/modules/photomanager/default.aspx") + "?" + ASC.PhotoManager.PhotoConst.PARAM_EVENT + "=" + eve.Id.ToString(),
                            SubscriptionType = GetSubscriptionTypes().Find(st => st.ID.Equals(_commentSubscriptionTypeID))
                        });
                    }
                }
            }
            return(subscriptionObjects);
        }
Example #2
0
        private ASC.Web.Studio.Controls.Common.MenuItem GetTheCategorySubscription()
        {
            if (!(Page is ListPages || Page is _Default))
            {
                return(null);
            }

            string categoryName;

            if (Page is ListPages)
            {
                categoryName = (Page as ListPages).categoryName;
            }
            else
            {
                categoryName = (Page as _Default).GetCategoryName();
            }
            if (string.IsNullOrEmpty(categoryName))
            {
                return(null);
            }

            StringBuilder         sb = new StringBuilder();
            ISubscriptionProvider subscriptionProvider = WikiNotifySource.Instance.GetSubscriptionProvider();

            List <string> userList = new List <string>();

            if (IAmAsRecipient != null)
            {
                userList = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        ASC.Web.Community.Wiki.Common.Constants.AddPageToCat,
                        IAmAsRecipient)
                    );
            }

            bool subscribed = userList.Exists(s => s.Equals(categoryName, StringComparison.InvariantCultureIgnoreCase));

            sb = new StringBuilder();

            sb.Append("<div id=\"pagetocat_notifies\">");

            sb.Append("<a id=\"notify_pagetocat\" class=\"linkAction" + (SetupInfo.WorkMode == WorkMode.Promo ? " promoAction" : "") + "\" href=\"javascript:void(0);\" />" + (!subscribed ? WikiResource.NotifyOnPageCat : WikiResource.UnNotifyOnPageCat) + "</a>");
            sb.Append("<script type=\"text/javascript\">");
            sb.AppendLine("var NotifyPageToCatUploads = " + subscribed.ToString().ToLower(CultureInfo.CurrentCulture) + ";");
            sb.AppendLine("var NotifyPageToCatId = '" + categoryName + "';");
            sb.AppendLine("document.getElementById('notify_pagetocat').onclick = function()");
            sb.AppendLine("{AjaxPro.onLoading = function(b){if(b){jq('#pagetocat_notifies').block();}else{jq('#pagetocat_notifies').unblock();}};");
            sb.AppendLine("MainWikiAjaxMaster.SubscribeOnPageToCat(NotifyPageToCatUploads, NotifyPageToCatId, callbackNotifyPageToCat);");
            sb.AppendLine("}");
            sb.AppendLine("function callbackNotifyPageToCat(result){NotifyPageToCatUploads = result.value;");
            sb.AppendLine("if(!NotifyPageToCatUploads){jq('#notify_pagetocat').html('" + WikiResource.NotifyOnPageCat + "');} ");
            sb.AppendLine("else {jq('#notify_pagetocat').html('" + WikiResource.UnNotifyOnPageCat + "');} ");
            sb.AppendLine("}");
            sb.Append("</script>");

            sb.Append("</div>");

            return(new HtmlMenuItem(sb.ToString()));
        }
 public static bool IsSubscribed(this ISubscriptionProvider provider, INotifyAction action, IRecipient recipient,
                                 string objectID)
 {
     return(Array.Exists(
                provider.GetSubscriptions(action, recipient),
                id => id == objectID || (string.IsNullOrEmpty(id) && string.IsNullOrEmpty(objectID))
                ));
 }
        public static bool IsSubscribed(this ISubscriptionProvider provider, INotifyAction action, IRecipient recipient,
                                        string objectID)
        {
            var subscriptions = provider.GetSubscriptions(action, recipient);

            return(subscriptions.Any(
                       id =>
                       (string.Compare(id, objectID, StringComparison.OrdinalIgnoreCase) == 0) ||
                       (string.IsNullOrEmpty(id) && string.IsNullOrEmpty(objectID))));
        }
Example #5
0
        public virtual string[] GetSubscriptions(INotifyAction action, IRecipient recipient)
        {
            if (recipient == null)
            {
                throw new ArgumentNullException("recipient");
            }
            if (action == null)
            {
                throw new ArgumentNullException("action");
            }
            var objects = new List <string>();

            string[] direct = _directSubscriptionProvider.GetSubscriptions(action, recipient) ?? new string[0];
            MergeObjects(objects, direct);
            List <IRecipient> parents = WalkUp(recipient);

            foreach (IRecipient parent in parents)
            {
                direct = _directSubscriptionProvider.GetSubscriptions(action, parent) ?? new string[0];
                if (recipient is IDirectRecipient)
                {
                    foreach (string groupsubscr in direct)
                    {
                        if (
                            !objects.Contains(groupsubscr)
                            &&
                            !_directSubscriptionProvider.IsUnsubscribe(recipient as IDirectRecipient, action,
                                                                       groupsubscr))
                        {
                            objects.Add(groupsubscr);
                        }
                    }
                }
                else
                {
                    MergeObjects(objects, direct);
                }
            }
            return(objects.ToArray());
        }
        public virtual string[] GetSubscriptions(Tenant tenant, INotifyAction action, IRecipient recipient, bool checkSubscription = true)
        {
            if (recipient == null)
            {
                throw new ArgumentNullException("recipient");
            }
            if (action == null)
            {
                throw new ArgumentNullException("action");
            }

            var objects = new List <string>();
            var direct  = subscriptionProvider.GetSubscriptions(tenant, action, recipient, checkSubscription) ?? new string[0];

            MergeObjects(objects, direct);
            var parents = WalkUp(tenant, recipient);

            foreach (var parent in parents)
            {
                direct = subscriptionProvider.GetSubscriptions(tenant, action, parent, checkSubscription) ?? new string[0];
                if (recipient is IDirectRecipient)
                {
                    foreach (var groupsubscr in direct)
                    {
                        if (!objects.Contains(groupsubscr) && !subscriptionProvider.IsUnsubscribe(recipient as IDirectRecipient, action, groupsubscr))
                        {
                            objects.Add(groupsubscr);
                        }
                    }
                }
                else
                {
                    MergeObjects(objects, direct);
                }
            }
            return(objects.ToArray());
        }
Example #7
0
        private ASC.Web.Studio.Controls.Common.MenuItem GetThePageSubscription()
        {
            if ((this.Page as WikiBasePage).Action.Equals(ActionOnPage.AddNew) || (this.Page as WikiBasePage).Action.Equals(ActionOnPage.None))
            {
                return(null);
            }

            StringBuilder         sb = new StringBuilder();
            ISubscriptionProvider subscriptionProvider = WikiNotifySource.Instance.GetSubscriptionProvider();

            List <string> userList = new List <string>();

            if (IAmAsRecipient != null)
            {
                userList = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        ASC.Web.Community.Wiki.Common.Constants.EditPage,
                        IAmAsRecipient)
                    );
            }

            string pageName   = (this.Page as WikiBasePage).WikiPage ?? string.Empty;
            bool   subscribed = userList.Exists(s => string.Compare(s, pageName, StringComparison.InvariantCultureIgnoreCase) == 0 || (s == null && string.Empty.Equals(pageName)));

            sb = new StringBuilder();

            sb.Append("<div id=\"editwiki_notifies\">");

            sb.Append("<a id=\"notify_editwiki\" class=\"linkAction" + (SetupInfo.WorkMode == WorkMode.Promo ? " promoAction" : "") + "\" href=\"javascript:void(0);\" />" + (!subscribed ? WikiResource.NotifyOnEditPage : WikiResource.UnNotifyOnEditPage) + "</a>");
            sb.Append("<script type=\"text/javascript\">");
            sb.AppendLine("var NotifyEditWikiUploads = " + subscribed.ToString().ToLower(CultureInfo.CurrentCulture) + ";");
            sb.AppendLine("var NotifyEditWikiId = '" + HttpUtility.HtmlEncode((this.Page as WikiBasePage).WikiPage).EscapeString() + "';");
            sb.AppendLine("document.getElementById('notify_editwiki').onclick = function()");
            sb.AppendLine("{AjaxPro.onLoading = function(b){if(b){jq('#editwiki_notifies').block();}else{jq('#editwiki_notifies').unblock();}};");
            sb.AppendLine("MainWikiAjaxMaster.SubscribeOnEditPage(NotifyEditWikiUploads, NotifyEditWikiId, callbackNotifyEditWiki);");
            sb.AppendLine("}");
            sb.AppendLine("function callbackNotifyEditWiki(result){NotifyEditWikiUploads = result.value;");
            sb.AppendLine("if(!NotifyEditWikiUploads){jq('#notify_editwiki').html('" + WikiResource.NotifyOnEditPage.ReplaceSingleQuote() + "');} ");
            sb.AppendLine("else {jq('#notify_editwiki').html('" + WikiResource.UnNotifyOnEditPage.ReplaceSingleQuote() + "');} ");
            sb.AppendLine("}");
            sb.Append("</script>");

            sb.Append("</div>");

            return(new HtmlMenuItem(sb.ToString()));
        }
Example #8
0
        private ASC.Web.Studio.Controls.Common.MenuItem GetNewPageSubscription()
        {
            if ((this.Page as WikiBasePage).IsFile)
            {
                return(null);
            }

            StringBuilder         sb = new StringBuilder();
            ISubscriptionProvider subscriptionProvider = WikiNotifySource.Instance.GetSubscriptionProvider();

            List <string> userList = new List <string>();

            if (IAmAsRecipient != null)
            {
                userList = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        ASC.Web.Community.Wiki.Common.Constants.NewPage,
                        IAmAsRecipient)
                    );
            }

            bool subscribed = userList.Contains(null);

            sb.Append("<div id=\"newwiki_notifies\">");

            sb.Append("<a id=\"notify_newwiki\" class=\"linkAction" + (SetupInfo.WorkMode == WorkMode.Promo ? " promoAction" : "") + "\" href=\"javascript:void(0);\" />" + (!subscribed ? WikiResource.NotifyOnNewPage : WikiResource.UnNotifyOnNewPage) + "</a>");
            sb.Append("<script type=\"text/javascript\">");
            sb.AppendLine("var NotifyNewWikiUploads = " + subscribed.ToString().ToLower(CultureInfo.CurrentCulture) + ";");
            sb.AppendLine("document.getElementById('notify_newwiki').onclick = function()");
            sb.AppendLine("{AjaxPro.onLoading = function(b){if(b){jq('#newwiki_notifies').block();}else{jq('#newwiki_notifies').unblock();}};");
            sb.AppendLine("MainWikiAjaxMaster.SubscribeOnNewPage(NotifyNewWikiUploads, callbackNotifyNewWiki);");
            sb.AppendLine("}");
            sb.AppendLine("function callbackNotifyNewWiki(result){NotifyNewWikiUploads = result.value;");
            sb.AppendLine("if(!NotifyNewWikiUploads){jq('#notify_newwiki').html('" + WikiResource.NotifyOnNewPage.ReplaceSingleQuote() + "');} ");
            sb.AppendLine("else {jq('#notify_newwiki').html('" + WikiResource.UnNotifyOnNewPage.ReplaceSingleQuote() + "');} ");
            sb.AppendLine("}");
            sb.Append("</script>");

            sb.Append("</div>");

            return(new HtmlMenuItem(sb.ToString()));
        }
Example #9
0
        void GetSubscriptionStateHandler(object sender, SubscribeEventArgs e)
        {
            var recipient = (IDirectRecipient)ForumNotifySource.Instance.GetRecipientsProvider().GetRecipient(e.UserID.ToString());

            if (recipient == null)
            {
                return;
            }

            ISubscriptionProvider subscriptionProvider = ForumNotifySource.Instance.GetSubscriptionProvider();
            List <string>         objectIDs            = new List <string>(subscriptionProvider.GetSubscriptions(e.NotifyAction, recipient));

            if (e.ObjectID == null && objectIDs.Count == 1 && objectIDs[0] == null)
            {
                _view.IsSubscribe = true;
                return;
            }

            _view.IsSubscribe = (objectIDs.Find(id => String.Compare(id, e.ObjectID, true) == 0) != null);
        }
Example #10
0
        async Task ActionBlockCallback([NotNull] SendMessageRequest request)
        {
            try
            {
                // Process unsubscribe requests
                _subscriptionProvider.ApplyPendingSubscriptionCancellations();

                // Process subscribe requests
                _subscriptionProvider.ApplyPendingSubscriptions();

                var result = true;

                foreach (var subscription in _subscriptionProvider.GetSubscriptions())
                {
                    var processResult = await ProcessSubscriptionAsync(subscription, request).ConfigureAwait(false);

                    if (!processResult)
                    {
                        result = false;
                        break;
                    }
                }

                request.OnSendComplete(result);
            }
            catch (OperationCanceledException)
            {
                throw;
            }
            catch (Exception e)
            {
                if (_options.EnableInternalLogging)
                {
                    _logger.LogError(e, "InMemory Event bus: Unexpected error occured while publishing event message (processing subscriptions).");
                }

                request.OnSendComplete(false);
            }
        }
 public string[] GetSubscriptions(INotifyAction action, IRecipient recipient, bool checkSubscription = true)
 {
     return(provider.GetSubscriptions(GetAdminAction(action), recipient, checkSubscription));
 }
        private List <SubscriptionObject> GetSubscriptionObjectsByType(Guid productID, Guid moduleID, Guid typeID)
        {
            List <SubscriptionObject> subscriptionObjects  = new List <SubscriptionObject>();
            ISubscriptionProvider     subscriptionProvider = SubscriptionProvider;

            if (typeID.Equals(_wikiSubscriptionTypeNewPageID))
            {
                List <string> wikiList = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        Constants.NewPage,
                        WikiNotifySource.Instance.GetRecipientsProvider().GetRecipient(SecurityContext.CurrentAccount.ID.ToString()))
                    );

                if (wikiList.Contains(null))
                {
                    subscriptionObjects.Add(new SubscriptionObject()
                    {
                        ID               = new Guid("{56A0EC10-5A1C-45ab-95AA-8F56827A8CCC}").ToString(),
                        Name             = WikiResource.NotifyAction_NewPage,
                        URL              = string.Empty,
                        SubscriptionType = GetSubscriptionTypes().Find(st => st.ID.Equals(_wikiSubscriptionTypeNewPageID))
                    });
                }
            }
            else if (typeID.Equals(_wikiSubscriptionTypeChangePageID))
            {
                List <string> wikiList = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        Constants.EditPage,
                        WikiNotifySource.Instance.GetRecipientsProvider().GetRecipient(SecurityContext.CurrentAccount.ID.ToString()))
                    );

                foreach (string wikiObj in wikiList)
                {
                    subscriptionObjects.Add(new SubscriptionObject()
                    {
                        ID               = wikiObj,
                        Name             = string.IsNullOrEmpty(wikiObj) ? WikiResource.MainWikiCaption : wikiObj,
                        URL              = ActionHelper.GetViewPagePath(WikiNotifySource.Instance.GetDefPageHref(), wikiObj),
                        SubscriptionType = GetSubscriptionTypes().Find(st => st.ID.Equals(_wikiSubscriptionTypeChangePageID)),
                    });
                }
            }
            else if (typeID.Equals(_wikiSubscriptionTypeAddPageToCat))
            {
                List <string> wikiList = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        Constants.AddPageToCat,
                        WikiNotifySource.Instance.GetRecipientsProvider().GetRecipient(SecurityContext.CurrentAccount.ID.ToString()))
                    );



                foreach (string wikiObj in wikiList)
                {
                    subscriptionObjects.Add(new SubscriptionObject()
                    {
                        ID               = wikiObj,
                        Name             = wikiObj.Equals(string.Empty) ? WikiResource.MainWikiCaption : wikiObj,
                        URL              = ActionHelper.GetViewPagePath(WikiNotifySource.Instance.GetDefPageHref(), wikiObj),
                        SubscriptionType = GetSubscriptionTypes().Find(st => st.ID.Equals(_wikiSubscriptionTypeAddPageToCat)),
                    });
                }
            }

            return(subscriptionObjects);
        }
 public string[] GetSubscriptions(INotifyAction action, IRecipient recipient)
 {
     return(provider.GetSubscriptions(GetAdminAction(action), recipient));
 }
        private List <SubscriptionObject> GetSubscriptionObjectsByType(Guid productID, Guid moduleID, Guid typeID)
        {
            var _engine = BasePage.GetEngine();

            List <SubscriptionObject> subscriptionObjects  = new List <SubscriptionObject>();
            ISubscriptionProvider     subscriptionProvider = _engine.NotifySource.GetSubscriptionProvider();

            if (typeID.Equals(_blogSubscriptionTypeID))
            {
                List <string> list = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        ASC.Blogs.Core.Constants.NewPost,
                        _engine.NotifySource.GetRecipientsProvider().GetRecipient(SecurityContext.CurrentAccount.ID.ToString()))
                    );

                if (list.Contains(null))
                {
                    subscriptionObjects.Add(new SubscriptionObject()
                    {
                        ID               = new Guid(Constants._NewBlogSubscribeCategory).ToString(),
                        Name             = ASC.Blogs.Core.Resources.BlogsResource.SubscribeOnNewPostTitle,
                        URL              = string.Empty,
                        SubscriptionType = GetSubscriptionTypes().Find(st => st.ID.Equals(_blogSubscriptionTypeID))
                    });
                }
            }

            else if (typeID.Equals(_blogPersSubscriptionTypeID))
            {
                List <string> list = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        ASC.Blogs.Core.Constants.NewPostByAuthor,
                        _engine.NotifySource.GetRecipientsProvider().GetRecipient(SecurityContext.CurrentAccount.ID.ToString()))
                    );
                if (list.Count > 0)
                {
                    foreach (string id in list)
                    {
                        if (!string.IsNullOrEmpty(id))
                        {
                            subscriptionObjects.Add(new SubscriptionObject()
                            {
                                ID               = id,
                                Name             = DisplayUserSettings.GetFullUserName(new Guid(id)),
                                URL              = VirtualPathUtility.ToAbsolute("~/products/community/modules/blogs/") + "?userid=" + id,
                                SubscriptionType = GetSubscriptionTypes().Find(st => st.ID.Equals(_blogPersSubscriptionTypeID))
                            });
                        }
                    }
                }
            }

            else if (typeID.Equals(_commentSubscriptionTypeID))
            {
                List <string> list = new List <string>(
                    subscriptionProvider.GetSubscriptions(
                        ASC.Blogs.Core.Constants.NewComment,
                        _engine.NotifySource.GetRecipientsProvider().GetRecipient(SecurityContext.CurrentAccount.ID.ToString()))
                    );

                if (list.Count > 0)
                {
                    IList <Post> postList = _engine.SelectPostsInfo(list.ConvertAll(s => new Guid(s)));

                    foreach (Post post in postList)
                    {
                        if (post != null)
                        {
                            subscriptionObjects.Add(new SubscriptionObject()
                            {
                                ID               = post.ID.ToString(),
                                Name             = post.Title,
                                URL              = VirtualPathUtility.ToAbsolute("~/products/community/modules/blogs/viewblog.aspx") + "?blogid=" + post.ID.ToString(),
                                SubscriptionType = GetSubscriptionTypes().Find(st => st.ID.Equals(_commentSubscriptionTypeID))
                            });
                        }
                    }
                }
            }


            return(subscriptionObjects);
        }