diff --git a/app/index.rb b/app/index.rb index e2387619..ee174099 100644 --- a/app/index.rb +++ b/app/index.rb @@ -14,7 +14,7 @@ get '/?' do not_found if event.nil? events_dataset = Event.where(id: params[:event_id]).paginate(1, 1) elsif params[:activity] == 'global' - events_dataset = Event.select_all(:events).order(:created_at.desc).paginate(@current_page, 100).join_table(:inner, :sites, id: :site_id).where{views > 1500}.or(site_change_id: nil) + events_dataset = Event.global_dataset @current_page else events_dataset = current_site.news_feed(@current_page, 10) end diff --git a/environment.rb b/environment.rb index 0501bd07..78f70caf 100644 --- a/environment.rb +++ b/environment.rb @@ -128,4 +128,4 @@ if ENV['RACK_ENV'] != 'development' Sass::Plugin.options[:style] = :compressed # Sass::Plugin.options[:never_update] = true Sass::Plugin.options[:full_exception] = false -end \ No newline at end of file +end diff --git a/models/event.rb b/models/event.rb index 57a967a5..21350da6 100644 --- a/models/event.rb +++ b/models/event.rb @@ -12,6 +12,24 @@ class Event < Sequel::Model many_to_one :site many_to_one :actioning_site, key: :actioning_site_id, class: :Site + DEFAULT_GLOBAL_LIMIT = 100 + GLOBAL_VIEWS_MINIMUM = 500 + + def self.global_dataset(current_page, limit=DEFAULT_GLOBAL_LIMIT) + select_all(:events). + order(:created_at.desc). + paginate(current_page, 100). + join_table(:inner, :sites, id: :site_id). + exclude( + Sequel.qualify(:sites, :is_deleted) => false, + :is_nsfw => false, + :is_banned => false, + :is_crashing => false + ). + where{views > GLOBAL_VIEWS_MINIMUM}. + or(site_change_id: nil) + end + def created_by?(site) return true if actioning_site_id == site.id false