]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/user.rb
Force coordinates into bounds when using the query tool
[rails.git] / app / models / user.rb
index 12afbb24b5327d722c67c91c354431169a93163f..ac293a0bdbeeeb38e5a9e3650d768311c03b5542 100644 (file)
@@ -1,5 +1,5 @@
 class User < ActiveRecord::Base
-  require 'xml/libxml'
+  require "xml/libxml"
 
   has_many :traces, -> { where(:visible => true) }
   has_many :diary_entries, -> { order(:created_at => :desc) }
@@ -13,7 +13,7 @@ class User < ActiveRecord::Base
   has_many :preferences, :class_name => "UserPreference"
   has_many :changesets, -> { order(:created_at => :desc) }
   has_many :changeset_comments, :foreign_key =>  :author_id
-  has_and_belongs_to_many :changeset_subscriptions, :class_name => 'Changeset', :join_table => 'changesets_subscribers', :foreign_key => 'subscriber_id'
+  has_and_belongs_to_many :changeset_subscriptions, :class_name => "Changeset", :join_table => "changesets_subscribers", :foreign_key => "subscriber_id"
   has_many :note_comments, :foreign_key => :author_id
   has_many :notes, :through => :note_comments
 
@@ -39,7 +39,6 @@ class User < ActiveRecord::Base
   validates_confirmation_of :pass_crypt # , :message => ' must match the confirmation password'
   validates_uniqueness_of :display_name, :allow_nil => true, :case_sensitive => false, :if => proc { |u| u.display_name_changed? }
   validates_uniqueness_of :email, :case_sensitive => false, :if => proc { |u| u.email_changed? }
-  validates_uniqueness_of :openid_url, :allow_nil => true
   validates_length_of :pass_crypt, :within => 8..255
   validates_length_of :display_name, :within => 3..255, :allow_nil => true
   validates_email_format_of :email, :if => proc { |u| u.email_changed? }
@@ -65,9 +64,7 @@ class User < ActiveRecord::Base
       if user.nil?
         users = where("LOWER(email) = LOWER(?) OR LOWER(display_name) = LOWER(?)", options[:username], options[:username])
 
-        if users.count == 1
-          user = users.first
-        end
+        user = users.first if users.count == 1
       end
 
       if user && PasswordHash.check(user.pass_crypt, user.pass_salt, options[:password])
@@ -102,14 +99,14 @@ class User < ActiveRecord::Base
   end
 
   def to_xml_node
-    el1 = XML::Node.new 'user'
-    el1['display_name'] = display_name.to_s
-    el1['account_created'] = creation_time.xmlschema
+    el1 = XML::Node.new "user"
+    el1["display_name"] = display_name.to_s
+    el1["account_created"] = creation_time.xmlschema
     if home_lat && home_lon
-      home = XML::Node.new 'home'
-      home['lat'] = home_lat.to_s
-      home['lon'] = home_lon.to_s
-      home['zoom'] = home_zoom.to_s
+      home = XML::Node.new "home"
+      home["lat"] = home_lat.to_s
+      home["lon"] = home_lon.to_s
+      home["zoom"] = home_zoom.to_s
       el1 << home
     end
     el1
@@ -138,7 +135,6 @@ class User < ActiveRecord::Base
   def nearby(radius = NEARBY_RADIUS, num = NEARBY_USERS)
     if home_lon && home_lat
       gc = OSM::GreatCircle.new(home_lat, home_lon)
-      bounds = gc.bounds(radius)
       sql_for_distance = gc.sql_for_distance("home_lat", "home_lon")
       nearby = User.where("id != ? AND status IN (\'active\', \'confirmed\') AND data_public = ? AND #{sql_for_distance} <= ?", id, true, radius).order(sql_for_distance).limit(num)
     else
@@ -170,13 +166,13 @@ class User < ActiveRecord::Base
   ##
   # returns true if the user has the moderator role, false otherwise
   def moderator?
-    has_role? 'moderator'
+    has_role? "moderator"
   end
 
   ##
   # returns true if the user has the administrator role, false otherwise
   def administrator?
-    has_role? 'administrator'
+    has_role? "administrator"
   end
 
   ##
@@ -202,7 +198,8 @@ class User < ActiveRecord::Base
     self.image = nil
     self.email_valid = false
     self.new_email = nil
-    self.openid_url = nil
+    self.auth_provider = nil
+    self.auth_uid = nil
     self.status = "deleted"
     save
   end
@@ -212,8 +209,8 @@ class User < ActiveRecord::Base
   def spam_score
     changeset_score = changesets.size * 50
     trace_score = traces.size * 50
-    diary_entry_score = diary_entries.inject(0) { |s, e| s += e.body.spam_score }
-    diary_comment_score = diary_comments.inject(0) { |s, c| s += c.body.spam_score }
+    diary_entry_score = diary_entries.inject(0) { |a, e| a + e.body.spam_score }
+    diary_comment_score = diary_comments.inject(0) { |a, e| a + e.body.spam_score }
 
     score = description.spam_score / 4.0
     score += diary_entries.where("created_at > ?", 1.day.ago).count * 10