public override void AfterSave(bool isUpdate) { base.AfterSave(isUpdate); if (!isUpdate) { if (this.OriginalPostId > 0) { new Notification { NotificationType = NotificationTypes.Shared, PostId = this.Id, UserId = this.OriginalPost.InsertUserId }.Save(); } if (this.ReplyToPostId > 0 && this.ReplyToPost.InsertUserId != Provider.User.Id) // eğer kendi paylaşımı dışında bir paylaşıma cevap ise, o paylaşımı yazan kişiye haber ver { new Notification { NotificationType = NotificationTypes.Reply, PostId = this.ReplyToPostId, UserId = this.ReplyToPost.InsertUserId }.Save(); if (Provider.User.Settings.MailAfterPostReply) { string msg = String.Format(@" Merhaba {0},<br/><br/> {1} paylaşımına cevap yazdı:<br/><br/> <i>{2}</i><br/><br/> <a href=""http://{3}"">http://{3}</a>", this.ReplyToPost.InsertUser.FullName, Provider.User.FullName, this.Metin, Provider.Configuration.SiteAddress); Provider.SendMail(this.ReplyToPost.InsertUser.Email, Provider.User.FullName + " paylaşımına cevap yazdı", msg); } } // mention List <string> mentions = new List <string>(); foreach (Match m in Regex.Matches(this.Metin, @"@([\w\d]+)")) { string nick = m.Value.Substring(1); if (mentions.Contains(nick)) { continue; //*** } mentions.Add(nick); User u = Provider.Database.Read <User>("Nick = {0}", nick); if (u != null) { // kendi nickini yazmışsa bildirim gönderme if (u.Id == Provider.User.Id) { continue; } // cevap verilen paylaşımı yazan kişinin nicki ise mention bildirimi gönderme, çünkü zaten reply bildirimi gönderiliyor if (this.ReplyToPost != null && this.ReplyToPost.InsertUserId == u.Id) { continue; } new Notification { NotificationType = NotificationTypes.Mention, PostId = this.Id, UserId = u.Id }.Save(); } } // HashTags foreach (Match m in Regex.Matches(this.Metin, @"#([\w\d]+)")) { HashTag ht = Provider.Database.Read <HashTag>("Name = {0} AND LangId={1}", m.Value.Substring(1), this.LangId); if (ht == null) { ht = new HashTag { Name = m.Value.Substring(1), MentionCount = 1, LangId = this.LangId } } ; else { ht.MentionCount++; } ht.Save(); new PostHashTag { HashTagId = ht.Id, PostId = this.Id }.Save(); } // Blacklist foreach (var badWord in Provider.Database.ReadList <WordBlacklist>()) { if (this.Metin.Contains(badWord.Name)) { new PostBlacklist { PostId = this.Id, WordBlacklistId = badWord.Id }.Save(); } } } }
public override void AfterSave(bool isUpdate) { base.AfterSave(isUpdate); if (!isUpdate) { if (this.OriginalPostId > 0) { new Notification { NotificationType = NotificationTypes.Shared, PostId = this.Id, UserId = this.OriginalPost.InsertUserId }.Save(); } if (this.ReplyToPostId > 0 && this.ReplyToPost.InsertUserId != Provider.User.Id) // eğer kendi paylaşımı dışında bir paylaşıma cevap ise, o paylaşımı yazan kişiye haber ver { new Notification { NotificationType = NotificationTypes.Reply, PostId = this.ReplyToPostId, UserId = this.ReplyToPost.InsertUserId }.Save(); if (Provider.User.Settings.MailAfterPostReply) { string msg = String.Format(@" Merhaba {0},<br/><br/> {1} paylaşımına cevap yazdı:<br/><br/> <i>{2}</i><br/><br/> <a href=""http://{3}"">http://{3}</a>", this.ReplyToPost.InsertUser.FullName, Provider.User.FullName, this.Metin, Provider.Configuration.SiteAddress); Provider.SendMail(this.ReplyToPost.InsertUser.Email, Provider.User.FullName + " paylaşımına cevap yazdı", msg); } } // mention List<string> mentions = new List<string>(); foreach (Match m in Regex.Matches(this.Metin, @"@([\w\d]+)")) { string nick = m.Value.Substring(1); if (mentions.Contains(nick)) continue; //*** mentions.Add(nick); User u = Provider.Database.Read<User>("Nick = {0}", nick); if (u != null) { // kendi nickini yazmışsa bildirim gönderme if (u.Id == Provider.User.Id) continue; // cevap verilen paylaşımı yazan kişinin nicki ise mention bildirimi gönderme, çünkü zaten reply bildirimi gönderiliyor if (this.ReplyToPost != null && this.ReplyToPost.InsertUserId == u.Id) continue; new Notification { NotificationType = NotificationTypes.Mention, PostId = this.Id, UserId = u.Id }.Save(); } } // HashTags foreach (Match m in Regex.Matches(this.Metin, @"#([\w\d]+)")) { HashTag ht = Provider.Database.Read<HashTag>("Name = {0} AND LangId={1}", m.Value.Substring(1), this.LangId); if (ht == null) ht = new HashTag { Name = m.Value.Substring(1), MentionCount = 1, LangId = this.LangId }; else ht.MentionCount++; ht.Save(); new PostHashTag { HashTagId = ht.Id, PostId = this.Id }.Save(); } // Blacklist foreach (var badWord in Provider.Database.ReadList<WordBlacklist>()) if (this.Metin.Contains(badWord.Name)) { new PostBlacklist { PostId = this.Id, WordBlacklistId = badWord.Id }.Save(); } } }