summaryrefslogtreecommitdiff
path: root/app/models/messagereply.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/messagereply.rb')
-rw-r--r--app/models/messagereply.rb67
1 files changed, 67 insertions, 0 deletions
diff --git a/app/models/messagereply.rb b/app/models/messagereply.rb
new file mode 100644
index 0000000..390ed12
--- /dev/null
+++ b/app/models/messagereply.rb
@@ -0,0 +1,67 @@
+class Messagereply < ActiveRecord::Base
+
+ include MailerHelper
+ include UsersHelper
+
+ belongs_to :message
+ belongs_to :user_author, class_name: "User", foreign_key: "user_author_id"
+ belongs_to :user_editor, class_name: "User", foreign_key: "user_editor_id"
+
+
+
+ validates_presence_of :text
+ validates_length_of :text, in: 1..8000
+
+ def get_message
+ message
+ end
+
+ def author
+ @author ||= if self.user_author.present?
+ user_author
+ else
+ User.first
+ end
+ end
+
+ def editor
+ # can be nil
+ @editor ||= user_editor
+ end
+
+ def edited?
+ !!user_editor_id
+ end
+
+ def send_new_reply_mail(old_content = "")
+ users = mentions(content) - mentions(old_content)
+
+ # thread + replies
+ posts = message.replies.to_a
+ posts << message if message.author.mail_own_message_reply?
+ # only send "reply" mail when reply is new
+ unless old_content.present?
+ posts.each do |post|
+ # don't send mail to the author of this reply, don't send to banned/disabled users
+ if post.author != author && post.author.normal? && post.author.confirmed? # &&
+ users << post.author if post.author.mail_other_thread_reply?
+ end
+ end
+ end
+ # making sure we don't send multiple mails to the same user
+ users.uniq!
+
+ mails = []
+ users.each do |usr|
+ begin
+ mails << RedstonerMailer.new_thread_reply_mail(usr, self)
+ rescue => e
+ Rails.logger.error "---"
+ Rails.logger.error "WARNING: Failed to create new_thread_reply_mail (view) for reply#: #{@self.id}, user: #{@user.name}, #{@user.email}"
+ Rails.logger.error e.message
+ Rails.logger.error "---"
+ end
+ end
+ background_mailer(mails)
+ end
+end