Allow a user's email address to be marked invalid, and suppress most
authorTom Hughes <tom@compton.nu>
Wed, 13 Aug 2008 10:45:49 +0000 (10:45 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 13 Aug 2008 10:45:49 +0000 (10:45 +0000)
notification mails for such users.

app/controllers/user_controller.rb
app/models/notifier.rb
db/migrate/013_add_email_valid.rb [new file with mode: 0644]

index f2378f36d33caea9ec49fc34421ed3529637cb3f..35b88b65a97f4580840dd4b9aaa4adae5867a13c 100644 (file)
@@ -92,6 +92,7 @@ class UserController < ApplicationController
         user.pass_crypt = pass
         user.pass_crypt_confirmation = pass
         user.active = true
+        user.email_valid = true
         user.save!
         token.destroy
         Notifier::deliver_reset_password(user, pass)
@@ -151,6 +152,7 @@ class UserController < ApplicationController
       if token and !token.user.active?
         @user = token.user
         @user.active = true
+        @user.email_valid = true
         @user.save!
         token.destroy
         flash[:notice] = 'Confirmed your account, thanks for signing up!'
index 84d097341c8dee7cd61162a5337fddef436386a9..ebf5af64127bd71a3db9f17dd95a384b40363ebf 100644 (file)
@@ -1,4 +1,3 @@
-
 class Notifier < ActionMailer::Base
   def signup_confirm(user, token)
     recipients user.email
@@ -29,7 +28,7 @@ class Notifier < ActionMailer::Base
   end
 
   def gpx_success(trace, possible_points)
-    recipients trace.user.email
+    recipients trace.user.email if trace.user.email_valid
     from "webmaster@openstreetmap.org"
     subject "[OpenStreetMap] GPX Import success"
     headers "Auto-Submitted" => "auto-generated"
@@ -41,7 +40,7 @@ class Notifier < ActionMailer::Base
   end
 
   def gpx_failure(trace, error)
-    recipients trace.user.email
+    recipients trace.user.email if trace.user.email_valid
     from "webmaster@openstreetmap.org"
     subject "[OpenStreetMap] GPX Import failure"
     headers "Auto-Submitted" => "auto-generated"
@@ -52,7 +51,7 @@ class Notifier < ActionMailer::Base
   end
   
   def message_notification(message)
-    recipients message.recipient.email
+    recipients message.recipient.email if message.recipient.email_valid
     from "webmaster@openstreetmap.org"
     subject "[OpenStreetMap] #{message.sender.display_name} sent you a new message"
     headers "Auto-Submitted" => "auto-generated"
@@ -69,7 +68,7 @@ class Notifier < ActionMailer::Base
   end
 
   def diary_comment_notification(comment)
-    recipients comment.diary_entry.user.email
+    recipients comment.diary_entry.user.email if comment.diary_entry.user.email_valid
     from "webmaster@openstreetmap.org"
     subject "[OpenStreetMap] #{comment.user.display_name} commented on your diary entry"
     headers "Auto-Submitted" => "auto-generated"
@@ -100,7 +99,7 @@ class Notifier < ActionMailer::Base
     befriender = User.find_by_id(friend.user_id)
     befriendee = User.find_by_id(friend.friend_user_id)
 
-    recipients befriendee.email
+    recipients befriendee.email if  befriendee.email_valid
     from "webmaster@openstreetmap.org"
     subject "[OpenStreetMap] #{befriender.display_name} added you as a friend"
     headers "Auto-Submitted" => "auto-generated"
diff --git a/db/migrate/013_add_email_valid.rb b/db/migrate/013_add_email_valid.rb
new file mode 100644 (file)
index 0000000..b8af4bf
--- /dev/null
@@ -0,0 +1,10 @@
+class AddEmailValid < ActiveRecord::Migration
+  def self.up
+    add_column "users", "email_valid", :boolean, :default => false, :null => false
+    User.update_all("email_valid = active")
+  end
+
+  def self.down
+    remove_column "users", "email_valid"
+  end
+end