void TopicSolved(object sender, ActionEventArgs e) { var ts = new TopicService(ApplicationContext.Current.DatabaseContext); var cs = new CommentService(ApplicationContext.Current.DatabaseContext, ts); Action a = (Action)sender; if (a.Alias == "TopicSolved") { var c = cs.GetById(e.ItemId); if (c != null) { var t = ts.GetById(c.TopicId); //if performer and author of the topic is the same... go ahead.. if ((e.PerformerId == t.MemberId || ModeratorRoles.Split(',').Any(x => Roles.IsUserInRole(x))) && t.Answer == 0) { //receiver of points is the comment author. e.ReceiverId = c.MemberId; //remove any previous votes by the author on this comment to ensure the solution is saved instead of just the vote a.ClearVotes(e.PerformerId, e.ItemId); //this uses a non-standard coloumn in the forum schema, so this is added manually.. t.Answer = c.Id; ts.Save(t); } } } }
public int ApproveMember(int id) { if (Members.IsAdmin() == false) throw new Exception("You cannot approve this member"); var memberService = UmbracoContext.Application.Services.MemberService; var member = memberService.GetById(id); if (member == null) throw new Exception("Member not found"); var minimumKarma = 71; if (member.GetValue<int>("reputationCurrent") < minimumKarma) { member.SetValue("reputationCurrent", minimumKarma); member.SetValue("reputationTotal", minimumKarma); memberService.Save(member); } var rolesForUser = Roles.GetRolesForUser(member.Username); if(rolesForUser.Contains("potentialspam")) memberService.DissociateRole(member.Id, "potentialspam"); if(rolesForUser.Contains("newaccount")) memberService.DissociateRole(member.Id, "newaccount"); var topicService = new TopicService(ApplicationContext.Current.DatabaseContext); var commentService = new CommentService(ApplicationContext.Current.DatabaseContext, topicService); var comments = commentService.GetAllCommentsForMember(member.Id); foreach (var comment in comments) { if (comment.IsSpam) { comment.IsSpam = false; commentService.Save(comment); var topic = topicService.GetById(comment.TopicId); var topicUrl = topic.GetUrl(); var commentUrl = string.Format("{0}#comment-{1}", topicUrl, comment.Id); var memberName = member.Name; commentService.SendNotifications(comment, memberName, commentUrl); } } var topics = topicService.GetLatestTopicsForMember(member.Id, false, 100); foreach (var topic in topics) { if (topic.IsSpam) { topic.IsSpam = false; topicService.Save(topic); topicService.SendNotifications(topic, member.Name, topic.GetUrl()); } } var newForumTopicNotification = new NotificationsCore.Notifications.AccountApproved(); newForumTopicNotification.SendNotification(member.Email); SendSlackNotification(BuildBlockedNotifactionPost(Members.GetCurrentMember().Name, member.Id, false)); return minimumKarma; }
public int ApproveMember(int id) { if (Members.IsAdmin() == false) throw new Exception("You cannot approve this member"); var memberService = UmbracoContext.Application.Services.MemberService; var member = memberService.GetById(id); if (member == null) throw new Exception("Member not found"); var minimumKarma = 71; if (member.GetValue<int>("reputationCurrent") < minimumKarma) { member.SetValue("reputationCurrent", minimumKarma); member.SetValue("reputationTotal", minimumKarma); memberService.Save(member); } var rolesForUser = Roles.GetRolesForUser(member.Username); if(rolesForUser.Contains("potentialspam")) memberService.DissociateRole(member.Id, "potentialspam"); if(rolesForUser.Contains("newaccount")) memberService.DissociateRole(member.Id, "newaccount"); var topicService = new TopicService(ApplicationContext.Current.DatabaseContext); var commentService = new CommentService(ApplicationContext.Current.DatabaseContext, topicService); var comments = commentService.GetAllCommentsForMember(member.Id); foreach (var comment in comments) { if (comment.IsSpam) { comment.IsSpam = false; commentService.Save(comment); } } var topics = topicService.GetLatestTopicsForMember(member.Id, false, 100); foreach (var topic in topics) { if (topic.IsSpam) { topic.IsSpam = false; topicService.Save(topic); } } return minimumKarma; }
void CommentVote(object sender, ActionEventArgs e) { Action a = (Action)sender; var ts = new TopicService(ApplicationContext.Current.DatabaseContext); var cs = new CommentService(ApplicationContext.Current.DatabaseContext, ts); if (a.Alias == "LikeComment" || a.Alias == "DisLikeComment") { var c = cs.GetById(e.ItemId); if (c != null) { e.ReceiverId = c.MemberId; } } else if (a.Alias == "TopicSolved") { var c = cs.GetById(e.ItemId); var t = ts.GetById(c.TopicId); e.Cancel = t.Answer > 0; } }
private static bool NewAndPostsALot(IMember member) { var ts = new TopicService(ApplicationContext.Current.DatabaseContext); var topics = ts.GetAuthorLatestTopics(member.Id); var topicsInHourAfterSignup = new List<ReadOnlyTopic>(); var topicsInFirstDayAfterSignup = new List<ReadOnlyTopic>(); foreach (var topic in topics) { if((topic.Created - member.CreateDate).Hours <= 1) topicsInHourAfterSignup.Add(topic); if ((topic.Created - member.CreateDate).Days <= 1) topicsInFirstDayAfterSignup.Add(topic); } if (topicsInHourAfterSignup.Count >= 3) return true; if (topicsInFirstDayAfterSignup.Count >= 5) return true; var cs = new CommentService(ApplicationContext.Current.DatabaseContext, ts); var comments = cs.GetAllCommentsForMember(member.Id); var commentsInHourAfterSignup = new List<Comment>(); var commentsInFirstDayAfterSignup = new List<Comment>(); foreach (var comment in comments) { if ((comment.Created - member.CreateDate).Hours <= 1) commentsInHourAfterSignup.Add(comment); if ((comment.Created - member.CreateDate).Days <= 1) commentsInFirstDayAfterSignup.Add(comment); } if (commentsInHourAfterSignup.Count >= 3) return true; if (commentsInFirstDayAfterSignup.Count >= 5) return true; return false; }
protected ForumControllerBase() { TopicService = new TopicService(DatabaseContext); CommentService = new CommentService(DatabaseContext, TopicService); ForumService = new ForumService(DatabaseContext); }
public void Flag(Flag flag) { var post = string.Format("A {0} has been flagged as spam for a moderator to check\n", flag.TypeOfPost); var member = Members.GetById(flag.MemberId); post = post + string.Format("Flagged by member {0} https://our.umbraco.org/member/{1}\n", member.Name, member.Id); var topicId = flag.Id; var posterId = 0; var ts = new TopicService(ApplicationContext.Current.DatabaseContext); if (flag.TypeOfPost == "comment") { var cs = new CommentService(ApplicationContext.Current.DatabaseContext, ts); var comment = cs.GetById(flag.Id); topicId = comment.TopicId; posterId = comment.MemberId; } var topic = ts.GetById(topicId); if (flag.TypeOfPost == "thread") { posterId = topic.MemberId; } post = post + string.Format("Topic title: *{0}*\nLink to author: http://our.umbraco.org/member/{1}\n Link to {2}: http://our.umbraco.org{3}{4}\n\n", topic.Title, posterId, flag.TypeOfPost, topic.GetUrl(), flag.TypeOfPost == "comment" ? "#comment-" + flag.Id : string.Empty); SendSlackNotification(post); }
public void DeleteMemberPlus(int id) { if (Members.IsHq() == false) throw new Exception("You cannot delete this member"); var memberService = UmbracoContext.Application.Services.MemberService; var member = memberService.GetById(id); if (member == null) throw new Exception("Member not found"); var topicService = new TopicService(ApplicationContext.Current.DatabaseContext); var commentService = new CommentService(ApplicationContext.Current.DatabaseContext, topicService); var comments = commentService.GetAllCommentsForMember(member.Id); foreach (var comment in comments) { commentService.Delete(comment); } var topics = topicService.GetLatestTopicsForMember(member.Id, false, 100); foreach (var topic in topics) { // Only delete if this member started the topic if(topic.MemberId == member.Id) topicService.Delete(topic); } memberService.Delete(member); }