Пример #1
0
        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();
                    }
                }
            }
        }
Пример #2
0
        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();
                    }

            }
        }