/// <summary> /// Add a new post /// </summary> /// <param name="postContent"> </param> /// <param name="topic"> </param> /// <param name="user"></param> /// <param name="permissions"> </param> /// <returns>True if post added</returns> public Post AddNewPost(string postContent, Topic topic, MembershipUser user, out PermissionSet permissions) { // Get the permissions for the category that this topic is in permissions = _roleService.GetPermissions(topic.Category, UsersRole(user)); // Check this users role has permission to create a post if (permissions[AppConstants.PermissionDenyAccess].IsTicked || permissions[AppConstants.PermissionReadOnly].IsTicked) { // Throw exception so Ajax caller picks it up throw new ApplicationException(_localizationService.GetResourceString("Errors.NoPermission")); } // Has permission so create the post var newPost = new Post { PostContent = postContent, User = user, Topic = topic, IpAddress = StringUtils.GetUsersIpAddress() }; newPost = SanitizePost(newPost); var category = topic.Category; if (category.ModeratePosts == true) { newPost.Pending = true; } var e = new PostMadeEventArgs { Post = newPost, Api = _api }; EventManager.Instance.FireBeforePostMade(this, e); if (!e.Cancel) { // create the post Add(newPost); // Update the users points score and post count for posting _membershipUserPointsService.Add(new MembershipUserPoints { Points = _settingsService.GetSettings().PointsAddedPerPost, User = user }); // add the last post to the topic topic.LastPost = newPost; EventManager.Instance.FireAfterPostMade(this, new PostMadeEventArgs { Post = newPost, Api = _api }); return(newPost); } return(newPost); }
private void eventsService_AfterPostMade(object sender, PostMadeEventArgs args) { args.Post.PostContent = TestString; }
private void eventsService_BeforePostMadeCancel(object sender, PostMadeEventArgs args) { args.Cancel = true; }
private void eventsService_BeforePostMadeAllow(object sender, PostMadeEventArgs args) { args.Cancel = false; }
/// <summary> /// Add a new post /// </summary> /// <param name="postContent"> </param> /// <param name="topic"> </param> /// <param name="user"></param> /// <param name="permissions"> </param> /// <returns>True if post added</returns> public Post AddNewPost(string postContent, Topic topic, MembershipUser user, out PermissionSet permissions) { // Get the permissions for the category that this topic is in permissions = _roleService.GetPermissions(topic.Category, UsersRole(user)); // Check this users role has permission to create a post if (permissions[SiteConstants.Instance.PermissionDenyAccess].IsTicked || permissions[SiteConstants.Instance.PermissionReadOnly].IsTicked) { // Throw exception so Ajax caller picks it up throw new ApplicationException(_localizationService.GetResourceString("Errors.NoPermission")); } // Has permission so create the post var newPost = new Post { PostContent = postContent, User = user, Topic = topic, IpAddress = StringUtils.GetUsersIpAddress(), DateCreated = DateTime.UtcNow, DateEdited = DateTime.UtcNow }; // Sort the search field out var category = topic.Category; if (category.ModeratePosts == true) { newPost.Pending = true; } var e = new PostMadeEventArgs { Post = newPost }; EventManager.Instance.FireBeforePostMade(this, e); if (!e.Cancel) { // create the post Add(newPost); // Update the users points score and post count for posting _membershipUserPointsService.Add(new MembershipUserPoints { Points = _settingsService.GetSettings().PointsAddedPerPost, User = user, PointsFor = PointsFor.Post, PointsForId = newPost.Id }); // add the last post to the topic topic.LastPost = newPost; EventManager.Instance.FireAfterPostMade(this, new PostMadeEventArgs { Post = newPost }); return newPost; } return newPost; }