app/models/mail_manager/subscription.rb in mail_manager-3.0.0 vs app/models/mail_manager/subscription.rb in mail_manager-3.2.0
- old
+ new
@@ -81,20 +81,23 @@
def active?
status.eql?('active')
end
+ def pending?
+ status.eql?('pending')
+ end
+
# unsubscribes a contact from all lists by looking them up through a messages GUID
# FIXME: when we add more lists and the ability to have multiple subscriptions, this should
# remove only the list that is tied in the GUID and they should be linked to their options
def self.unsubscribe_by_message_guid(guid)
message = Message.find_by_guid(guid)
contact = message.contact
if message
begin
- unsubscribed_subscriptions = self.unsubscribe_by_email_address(message.contact.email_address)
- Mailer.deliver_unsubscribed(message,unsubscribed_subscriptions) unless unsubscribed_subscriptions.empty?
+ unsubscribed_subscriptions = self.unsubscribe_by_email_address(message.contact.email_address, message)
return unsubscribed_subscriptions
rescue => e
Rails.logger.warn "Error Unsubscribing email: #{message.contact.email_address}\n#{e.message}\n #{e.backtrace.join("\n ")}"
raise "An error occured."
end
@@ -110,16 +113,19 @@
subscription.change_status(:failed_address)
end
end
end
- def self.unsubscribe_by_email_address(email_address)
+ def self.unsubscribe_by_email_address(email_address,message=nil)
subscriptions = []
Contact.find_all_by_email_address(email_address).each do |contact|
subscriptions += contact.active_subscriptions.each do |subscription|
subscription.change_status(:unsubscribed)
end
end
+ Mailer.delay.unsubscribed(subscriptions,email_address,
+ subscriptions.first.contact, message) if \
+ subscriptions.present?
subscriptions
end
end
end