From 67c37e57c556ef7bd3a18cbbde1113867990d7fa Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Wed, 4 Nov 2015 20:14:23 -0800 Subject: [PATCH] show featured sites on site creation if no tag sites --- app/browse.rb | 2 +- models/site.rb | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/browse.rb b/app/browse.rb index b63d27b6..b017f2ff 100644 --- a/app/browse.rb +++ b/app/browse.rb @@ -29,7 +29,7 @@ end def browse_sites_dataset - site_dataset = Site.where(is_deleted: false, is_banned: false, is_crashing: false, site_changed: true) + site_dataset = Site.browse_dataset if current_site site_dataset.or! sites__id: current_site.id diff --git a/models/site.rb b/models/site.rb index 20a24abc..6f15772e 100644 --- a/models/site.rb +++ b/models/site.rb @@ -1141,13 +1141,31 @@ class Site < Sequel::Model end =end + def self.browse_dataset + dataset.where is_deleted: false, is_banned: false, is_crashing: false, site_changed: true + end + def suggestions(limit=SUGGESTIONS_LIMIT, offset=0) suggestions_dataset = Site.exclude(id: id).exclude(is_banned: true).exclude(is_nsfw: true).order(:views.desc, :updated_at.desc) suggestions = suggestions_dataset.where(tags: tags).limit(limit, offset).all return suggestions if suggestions.length == limit - suggestions += suggestions_dataset.where("views >= #{SUGGESTIONS_VIEWS_MIN}").limit(limit-suggestions.length).order(Sequel.lit('RANDOM()')).all + # Old. + #suggestions += suggestions_dataset.where("views >= #{SUGGESTIONS_VIEWS_MIN}").limit(limit-suggestions.length).order(Sequel.lit('RANDOM()')).all + + # New: + + site_dataset = self.class.browse_dataset.association_left_join :follows + site_dataset.select_all! :sites + site_dataset.select_append! Sequel.lit("count(follows.site_id) AS follow_count") + site_dataset.group! :sites__id + site_dataset.order! :follow_count.desc, :updated_at.desc + site_dataset.where! "views >= #{SUGGESTIONS_VIEWS_MIN}" + site_dataset.limit! limit-suggestions.length + #site_dataset.order! Sequel.lit('RANDOM()') + + suggestions += site_dataset.all end def screenshot_path(path, resolution)