mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
Initial release of Discourse
This commit is contained in:
35
lib/promotion.rb
Normal file
35
lib/promotion.rb
Normal file
@@ -0,0 +1,35 @@
|
||||
#
|
||||
# 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.invert[@user.trust_level]
|
||||
|
||||
review_method = :"review_#{trust_key.to_s}"
|
||||
return send(review_method) if respond_to?(review_method)
|
||||
|
||||
false
|
||||
end
|
||||
|
||||
def review_new
|
||||
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.trust_level = TrustLevel.Levels[:basic]
|
||||
@user.save
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
end
|
Reference in New Issue
Block a user