X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/ef7f3d800cbdd49b692df10d312e5fd880e2e938..2d22ab10f759828e27876f138b419ff4c0913b87:/app/models/user.rb diff --git a/app/models/user.rb b/app/models/user.rb index 12afbb24b..ac293a0bd 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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