mirror of
https://github.com/neocities/neocities.git
synced 2025-07-21 10:06:00 +02:00
SpEcIaL SaUcE
This commit is contained in:
parent
985a2f8b60
commit
55dce7e80e
4 changed files with 40 additions and 1 deletions
|
@ -46,6 +46,9 @@ def browse_sites_dataset
|
|||
end
|
||||
|
||||
case params[:sort_by]
|
||||
when 'special_sauce'
|
||||
site_dataset.exclude! score: nil
|
||||
site_dataset.order! :score.desc
|
||||
when 'followers'
|
||||
site_dataset = site_dataset.association_left_join :follows
|
||||
site_dataset.select_all! :sites
|
||||
|
|
11
migrations/075_special_sauce.rb
Normal file
11
migrations/075_special_sauce.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
# IT'S MADE OUT OF FUCKING PEOPLE
|
||||
|
||||
Sequel.migration do
|
||||
up {
|
||||
DB.add_column :sites, :score, :integer
|
||||
}
|
||||
|
||||
down {
|
||||
DB.drop_column :sites, :score
|
||||
}
|
||||
end
|
|
@ -1076,6 +1076,31 @@ class Site < Sequel::Model
|
|||
end
|
||||
end
|
||||
|
||||
def self.compute_scores
|
||||
select(:id, :username, :created_at, :updated_at, :views).exclude(is_banned: true).exclude(is_crashing: true).exclude(is_nsfw: true).exclude(updated_at: nil).all.each do |s|
|
||||
s.score = s.compute_score
|
||||
s.save_changes validate: false
|
||||
end
|
||||
end
|
||||
|
||||
def compute_score
|
||||
score = 0
|
||||
begin
|
||||
score += (Time.now - created_at) / 1.day
|
||||
rescue => e
|
||||
binding.pry
|
||||
end
|
||||
score -= ((Time.now - updated_at) / 1.day) * 2
|
||||
score += 500 if (updated_at > 1.week.ago)
|
||||
score -= 1000 if
|
||||
follow_count = follows_dataset.count
|
||||
score -= 1000 if follow_count == 0
|
||||
score += follow_count * 100
|
||||
score += profile_comments_dataset.count * 5
|
||||
score += profile_commentings_dataset.count
|
||||
score.to_i
|
||||
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
|
||||
|
@ -1281,5 +1306,4 @@ class Site < Sequel::Model
|
|||
end
|
||||
true
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
<div class="select-Container">
|
||||
<select name="sort_by" id="sort_by" class="input-Select">
|
||||
<option value="followers" <%= params[:sort_by] == 'followers' ? 'selected' : '' %>>Most Followed</option>
|
||||
<option value="special_sauce" <%= params[:sort_by] == 'special_sauce' ? 'selected' : '' %>>Special Sauce (alpha)</option>
|
||||
<option value="last_updated" <%= params[:sort_by] == 'last_updated' ? 'selected' : '' %>>Last Updated</option>
|
||||
<option value="supporters" <%= params[:sort_by] == 'supporters' ? 'selected' : '' %>>Neocities Supporters</option>
|
||||
<option value="featured" <%= params[:sort_by] == 'featured' ? 'selected' : '' %>>Featured</option>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue