def self.authenticate(options)
if options[:username] and options[:password]
- environment = Rails.configuration.environment
- adapter = Rails.configuration.database_configuration[environment]["adapter"]
- if adapter == "postgresql"
- user = find(:first, :conditions => ["email ILIKE ? OR display_name ILIKE ?", options[:username], options[:username]])
- else
- user = find(:first, :conditions => ["email = ? OR display_name = ?", options[:username], options[:username]])
- end
+ user = find(:first, :conditions => ["email = ? OR display_name = ?", options[:username], options[:username]])
user = nil if user and user.pass_crypt != OSM::encrypt_password(options[:password], user.pass_salt)
elsif options[:token]
token = UserToken.find(:first, :include => :user, :conditions => ["user_tokens.token = ?", options[:token]])
return el1
end
+ def languages
+ attribute_present?(:languages) ? read_attribute(:languages).split(",") : []
+ end
+
+ def languages=(languages)
+ write_attribute(:languages, languages.join(","))
+ end
+
+ def preferred_language
+ languages.find { |l| Language.find(:first, :conditions => { :code => l }) }
+ end
+
+ def preferred_language_from(array)
+ (languages & array.collect { |i| i.to_s }).first
+ end
+
def nearby(radius = 50, num = 10)
if self.home_lon and self.home_lat
gc = OSM::GreatCircle.new(self.home_lat, self.home_lon)
def delete
self.active = false
self.display_name = "user_#{self.id}"
- self.description = nil
+ self.description = ""
self.home_lat = nil
self.home_lon = nil
self.image = nil