This repository has been archived on 2024-08-27. You can view files and clone it, but cannot push or open issues or pull requests.
redstoner.com/app/models/threadreply.rb

68 lines
1.7 KiB
Ruby

class Threadreply < ActiveRecord::Base
include MailerHelper
include UsersHelper
belongs_to :forumthread
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 :content
validates_length_of :content, in: 2..20000
def thread
forumthread
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 = thread.replies.to_a
posts << thread if thread.author.mail_own_thread_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? && thread.can_read?(post.author)
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