| Class | User |
| In: |
app/models/user.rb
|
| Parent: | ActiveRecord::Base |
# File app/models/user.rb, line 68
68: def admin_ids(options = {})
69: conditions = { 'users.state''users.state' => 'admin' }.merge(options.delete(:conditions) || {})
70: all({:select => 'users.id', :conditions => conditions}.merge(options)).map(&:id)
71: end
# File app/models/user.rb, line 63
63: def admins(options = {})
64: conditions = { 'users.state''users.state' => 'admin' }.merge(options.delete(:conditions) || {})
65: all({:conditions => conditions}.merge(options))
66: end
# File app/models/user.rb, line 40
40: def authenticate(email, password)
41: return nil if email.blank? || password.blank?
42: u = find_in_state(:first, :active, :conditions => {:email => email}) || find_in_state(:first, :admin, :conditions => {:email => email}) # need to get the salt
43: u && u.authenticated?(password) ? u : nil
44: end
# File app/models/user.rb, line 48
48: def page_find(page = 1)
49: paginate(:page => page, :order => "users.created_at desc")
50: end
# File app/models/user.rb, line 52
52: def responses_rank(user)
53: all(
54: :select => 'users.id, COUNT(responses.id) AS num_responses',
55: :joins => 'INNER JOIN visits ON visits.user_id=users.id LEFT OUTER JOIN responses ON responses.visit_id=visits.id',
56: :group => 'users.id'
57: ).inject({}) do |users, u|
58: users[u.id] = u.num_responses.to_i
59: users
60: end.sort_by { |u| -u.last }.to_a.transpose.first.index(user.id).to_i + 1
61: end
# File app/models/user.rb, line 78
78: def email=(value)
79: write_attribute :email, (value ? value.downcase : nil)
80: end
# File app/models/user.rb, line 118
118: def forgot_password(visit_id)
119: self.reset!
120: Mailing.create(
121: :email => self.email,
122: :visit_id => visit_id,
123: :user_id => self.id,
124: :name => self.email,
125: :message => "RESET PASSWORD #{Time.now}"
126: ).send_reset_password(self.activation_code)
127: end
# File app/models/user.rb, line 107
107: def get_item_responses_count
108: if check_cache
109: ids = item_ids
110: count = ids && !ids.empty? ? Response.count(
111: :joins => "INNER JOIN items_responses ON (items_responses.response_id=responses.id AND items_responses.item_id IN (#{ids.join(',')}))"
112: ) : 0
113: self.update_attribute(:items_responses_count, count)
114: end
115: self.items_responses_count
116: end
# File app/models/user.rb, line 102
102: def get_items_count
103: self.update_attribute(:items_count, Item.count(:conditions => { :visit_id => visit_ids })) if check_cache
104: self.items_count
105: end
# File app/models/user.rb, line 97
97: def get_responses_count
98: self.update_attribute(:responses_count, Response.count(:conditions => { :visit_id => visit_ids })) if check_cache
99: self.responses_count
100: end
# File app/models/user.rb, line 92
92: def get_responses_rank
93: self.update_attribute(:responses_rank, User.responses_rank(self)) if check_cache
94: self.responses_rank
95: end
# File app/models/user.rb, line 74
74: def login=(value)
75: write_attribute :login, (value ? value.downcase : nil)
76: end
# File app/models/user.rb, line 82
82: def register_voter
83: if voter_id_ext.nil? && ext_id = Pairwise.voter({})
84: update_attribute :voter_id_ext, ext_id.first
85: end
86: end
# File app/models/user.rb, line 129
129: def reset_password(password)
130: self.password = self.password_confirmation = password
131: self.salt = self.class.make_token
132: self.save!
133: self.activate!
134: end
# File app/models/user.rb, line 88
88: def send_signup_email
89: UserMailer.deliver_signup_notification(self)
90: end
# File app/models/user.rb, line 148
148: def cache_expired?
149: !self.cached_at || Time.now - self.cached_at > Constants::Params::EXPIRE_USER_DATA_AFTER
150: end
# File app/models/user.rb, line 142
142: def check_cache
143: @ret ||= cache_expired?
144: set_cache if @ret && cache_expired?
145: @ret
146: end
# File app/models/user.rb, line 137
137: def make_activation_code
138: self.deleted_at = nil
139: self.activation_code = self.class.make_token
140: end