module Mailboxer::Models::Messageable
Public Instance Methods
Gets the mailbox of the messageable
# File lib/mailboxer/models/messageable.rb, line 48 def mailbox @mailbox = Mailbox.new(self) if @mailbox.nil? @mailbox.type = :all @mailbox end
Mark the object as deleted for messageable.
Object can be:
-
A Receipt
-
A Notification
-
A Message
-
A Conversation
-
An array with any of them
# File lib/mailboxer/models/messageable.rb, line 158 def mark_as_deleted(obj) case obj when Receipt return obj.mark_as_deleted if obj.receiver == self when Message#, Notification obj.mark_as_deleted(self) when Conversation obj.mark_as_deleted(self) when Array obj.map{ |sub_obj| mark_as_deleted(sub_obj) } else return nil end end
Mark the object as read for messageable.
Object can be:
-
A Receipt
-
A Message
-
A Notification
-
A Conversation
-
An array with any of them
# File lib/mailboxer/models/messageable.rb, line 116 def mark_as_read(obj) case obj when Receipt obj.mark_as_read if obj.receiver == self when Message#, Notification obj.mark_as_read(self) when Conversation obj.mark_as_read(self) when Array obj.map{ |sub_obj| mark_as_read(sub_obj) } end end
Mark the object as unread for messageable.
Object can be:
-
A Receipt
-
A Message
-
A Notification
-
A Conversation
-
An array with any of them
# File lib/mailboxer/models/messageable.rb, line 137 def mark_as_unread(obj) case obj when Receipt obj.mark_as_unread if obj.receiver == self when Message#, Notification obj.mark_as_unread(self) when Conversation obj.mark_as_unread(self) when Array obj.map{ |sub_obj| mark_as_unread(sub_obj) } end end
Basic reply method. USE NOT RECOMENDED. Use reply_to_sender
, reply_to_all
and reply_to_conversation
instead.
# File lib/mailboxer/models/messageable.rb, line 76 def reply(conversation, recipients, reply_body, subject=nil, sanitize_text=true, attachment=nil) subject = subject || "RE: #{conversation.subject}" response = messages.new({:body => reply_body, :subject => subject, :attachment => attachment}) response.conversation = conversation response.recipients = recipients.is_a?(Array) ? recipients : [recipients] response.recipients = response.recipients.uniq response.recipients.delete(self) response.deliver true, sanitize_text end
Replies to all the recipients of the message in the conversation
# File lib/mailboxer/models/messageable.rb, line 92 def reply_to_all(receipt, reply_body, subject=nil, sanitize_text=true, attachment=nil) reply(receipt.conversation, receipt.message.recipients, reply_body, subject, sanitize_text, attachment) end
Replies to all the recipients of the last message in the conversation and untrash any trashed message by messageable if should_untrash is set to true (this is so by default)
# File lib/mailboxer/models/messageable.rb, line 98 def reply_to_conversation(conversation, reply_body, subject=nil, should_untrash=true, sanitize_text=true, attachment=nil) #move conversation to inbox if it is currently in the trash and should_untrash parameter is true. if should_untrash && mailbox.is_trashed?(conversation) mailbox.receipts_for(conversation).untrash mailbox.receipts_for(conversation).mark_as_not_deleted end reply(conversation, conversation.last_message.recipients, reply_body, subject, sanitize_text, attachment) end
Replies to the sender of the message in the conversation
# File lib/mailboxer/models/messageable.rb, line 87 def reply_to_sender(receipt, reply_body, subject=nil, sanitize_text=true, attachment=nil) reply(receipt.conversation, receipt.message.sender, reply_body, subject, sanitize_text, attachment) end
# File lib/mailboxer/models/messageable.rb, line 215 def search_messages(query) @search = Receipt.search do fulltext query with :receiver_id, self.id end @search.results.map { |r| r.conversation }.uniq end
Sends a messages, starting a new conversation, with the messageable as originator
# File lib/mailboxer/models/messageable.rb, line 61 def send_message(recipients, msg_body, subject=nil, sanitize_text=true, attachment=nil, message_timestamp = Time.now) convo = Conversation.new({:subject => subject}) convo.created_at = message_timestamp convo.updated_at = message_timestamp message = messages.new({:body => msg_body, :subject => subject, :attachment => attachment}) message.created_at = message_timestamp message.updated_at = message_timestamp message.conversation = convo message.recipients = recipients.is_a?(Array) ? recipients : [recipients] message.recipients = message.recipients.uniq message.deliver false, sanitize_text end
Mark the object as trashed for messageable.
Object can be:
-
A Receipt
-
A Message
-
A Notification
-
A Conversation
-
An array with any of them
# File lib/mailboxer/models/messageable.rb, line 181 def trash(obj) case obj when Receipt obj.move_to_trash if obj.receiver == self when Message#, Notification obj.move_to_trash(self) when Conversation obj.move_to_trash(self) when Array obj.map{ |sub_obj| trash(sub_obj) } end end
Mark the object as not trashed for messageable.
Object can be:
-
A Receipt
-
A Message
-
A Notification
-
A Conversation
-
An array with any of them
# File lib/mailboxer/models/messageable.rb, line 202 def untrash(obj) case obj when Receipt obj.untrash if obj.receiver == self when Message#, Notification obj.untrash(self) when Conversation obj.untrash(self) when Array obj.map{ |sub_obj| untrash(sub_obj) } end end