forked from discourse/discourse
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpromotion.rb
More file actions
46 lines (35 loc) · 1.5 KB
/
Copy pathpromotion.rb
File metadata and controls
46 lines (35 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#
# Check whether a user is ready for a new trust level.
#
class Promotion
def initialize(user)
@user = user
end
# Review a user for a promotion. Delegates work to a review_#{trust_level} method.
# Returns true if the user was promoted, false otherwise.
def review
# nil users are never promoted
return false if @user.blank?
trust_key = TrustLevel.levels[@user.trust_level]
review_method = :"review_#{trust_key.to_s}"
return send(review_method) if respond_to?(review_method)
false
end
def review_newuser
return false if @user.topics_entered < SiteSetting.basic_requires_topics_entered
return false if @user.posts_read_count < SiteSetting.basic_requires_read_posts
return false if (@user.time_read / 60) < SiteSetting.basic_requires_time_spent_mins
@user.change_trust_level!(:basic)
true
end
def review_basic
return false if @user.topics_entered < SiteSetting.regular_requires_topics_entered
return false if @user.posts_read_count < SiteSetting.regular_requires_read_posts
return false if (@user.time_read / 60) < SiteSetting.regular_requires_time_spent_mins
return false if @user.days_visited < SiteSetting.regular_requires_days_visited
return false if @user.likes_received < SiteSetting.regular_requires_likes_received
return false if @user.likes_given < SiteSetting.regular_requires_likes_given
return false if @user.topic_reply_count < SiteSetting.regular_requires_topic_reply_count
@user.change_trust_level!(:regular)
end
end