public object RenderGroupItemSubscriptions(Guid itemId, Guid subItemId, Guid subscriptionTypeId)
        {
            try
            {
                SubscriptionType type = null;

                var productSubscriptionManager = WebItemManager.Instance[itemId].Context.SubscriptionManager as IProductSubscriptionManager;

                ISubscriptionManager subscriptionManager = productSubscriptionManager;

                if (productSubscriptionManager.GroupByType == GroupByType.Modules)
                {
                    subscriptionManager = WebItemManager.Instance[subItemId].Context.SubscriptionManager;
                }

                var subscriptionTypes = subscriptionManager.GetSubscriptionTypes();
                if (subscriptionTypes != null && subscriptionTypes.Count != 0)
                {
                    type = (from s in subscriptionTypes
                            where s.ID.Equals(subscriptionTypeId)
                            select s).Single <SubscriptionType>();
                }

                var result = new { Status = 1, ItemId = itemId, SubItemId = subItemId, TypeId = subscriptionTypeId, Objects = new List <object>() };

                if (type.Single || type.CanSubscribe)
                {
                    return(result);
                }

                if (type.IsEmptySubscriptionType != null && type.IsEmptySubscriptionType(itemId, subItemId, subscriptionTypeId))
                {
                    return(result);
                }

                if (type.GetSubscriptionObjects == null)
                {
                    return(result);
                }

                var typeObjects = type.GetSubscriptionObjects(itemId, subItemId, subscriptionTypeId);
                if (typeObjects == null || typeObjects.Count == 0)
                {
                    return(result);
                }

                typeObjects.Sort((s1, s2) => String.Compare(s1.Name, s2.Name, true));

                foreach (var subscription in typeObjects)
                {
                    result.Objects.Add(new { Id = subscription.ID, Name = HttpUtility.HtmlEncode(subscription.Name), Url = String.IsNullOrEmpty(subscription.URL) ? "" : subscription.URL });
                }

                return(result);
            }
            catch (Exception e)
            {
                return(new { Status = 0, Message = e.Message.HtmlEncode() });
            }
        }