limit on comments per day to prevent spam

This commit is contained in:
Kyle Drake 2016-09-30 00:47:23 -05:00
parent 92abcd6a49
commit d220d73b0c
2 changed files with 17 additions and 1 deletions

View file

@ -164,6 +164,8 @@ class Site < Sequel::Model
MAXIMUM_EMAIL_CONFIRMATIONS = 20
MAX_COMMENTS_PER_DAY = 10
many_to_many :tags
one_to_many :profile_comments
@ -503,6 +505,8 @@ class Site < Sequel::Model
set commenting_allowed: true
save_changes validate: false
return true
else
return false if owner.commenting_too_much?
end
if (account_sites_events_dataset.exclude(site_change_id: nil).count >= COMMENTING_ALLOWED_UPDATED_COUNT || (created_at < Date.new(2014, 12, 25).to_time && changed_count >= COMMENTING_ALLOWED_UPDATED_COUNT )) &&
@ -515,6 +519,14 @@ class Site < Sequel::Model
false
end
def commenting_too_much?
recent_comments = Comment.where(actioning_site_id: owner.id).where{created_at > 24.hours.ago}.count
recent_profile_comments = owner.profile_commentings_dataset.where{created_at > 24.hours.ago}.count
return true if (recent_comments + recent_profile_comments) > MAX_COMMENTS_PER_DAY
false
end
def blocking_site_ids
@blocking_site_ids ||= blockings_dataset.select(:site_id).all.collect {|s| s.site_id}
end

View file

@ -83,7 +83,11 @@
<% unless current_site.commenting_allowed? %>
<p class="comment-policy">
To prevent spam, you cannot comment until you have updated your site <strong><%= Site::COMMENTING_ALLOWED_UPDATED_COUNT %> times</strong> (on <%= Site::COMMENTING_ALLOWED_UPDATED_COUNT %> separate days), and your account is one week old. While waiting, now is a great time to <a href="/dashboard">start building your awesome site!</a>
<% if current_site.commenting_too_much? %>
To prevent spam, we have a <%= Site::MAX_COMMENTS_PER_DAY %> comment per day limit. Please try commenting again tomorrow!
<% else %>
To prevent spam, you cannot comment until you have updated your site <strong><%= Site::COMMENTING_ALLOWED_UPDATED_COUNT %> times</strong> (on <%= Site::COMMENTING_ALLOWED_UPDATED_COUNT %> separate days), and your account is one week old. While waiting, now is a great time to <a href="/dashboard">start building your awesome site!</a>
<% end %>
</p>
<% end %>
</div>