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); }
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)))); }
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()); }
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())); }
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())); }
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); }
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); }