public static TopicInfo GetTopic(int topicid) { ITopic dal = Factory <ITopic> .Create("Topic"); TopicInfo topic = dal.GetById(topicid); if (topic != null) { topic.Forum = Forums.GetForum(topic.ForumId); topic.PollId = GetTopicPollId(topicid); topic.IsArchived = false; } else { //let's check archives IArchiveForum archDal = Factory <IArchiveForum> .Create("ArchiveForums"); topic = archDal.GetTopic(topicid); if (topic != null) { topic.Forum = Forums.GetForum(topic.ForumId); topic.IsArchived = true; } } return(topic); }
public static int AddForumSubscription(int memberid, int forumid) { ForumInfo forum = Forums.GetForum(forumid); ISubscription dal = Factory <ISubscription> .Create("Subscription"); return(dal.Add(new SubscriptionInfo { MemberId = memberid, ForumId = forumid, CategoryId = forum.CatId, TopicId = 0 })); }
public static List <TopicInfo> GetLatestTopics(int topicCount) { string user = HttpContext.Current.User.Identity.Name; bool isadmin = Roles.IsUserInRole(user, "Administrator"); bool ismoderator = Roles.IsUserInRole(user, "Moderator"); ITopic dal = Factory <ITopic> .Create("Topic"); var topics = dal.GetLatestTopics(topicCount, ""); List <int> roleList = new List <int> { 0 }; roleList.AddRange(SnitzCachedLists.UserRoles().Select(role => role.Key)); List <TopicInfo> allowedTopics = new List <TopicInfo>(); foreach (var activeTopic in topics) { activeTopic.Forum = Forums.GetForum(activeTopic.ForumId); if (activeTopic.Status == 2 || activeTopic.Status == 3) { if (!(isadmin || ismoderator || user == activeTopic.AuthorName)) { continue; } } if (activeTopic.Forum.AllowedRoles.Count == 0) { allowedTopics.Add(activeTopic); } else { if (activeTopic.Forum.AllowedRoles.Any(role => roleList.Contains(role) || isadmin)) { allowedTopics.Add(activeTopic); } } } return(allowedTopics); }