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