Merge Request #2
← To merge requests
From
fix_communities_search
into
master
Commits (2)
Showing
3 changed files
 
Show diff stats
lib/ext/communities_block.rb
| ... | ... | @@ -4,16 +4,9 @@ class CommunitiesBlock | 
| 4 | 4 | |
| 5 | 5 | def profile_list | 
| 6 | 6 | result = get_visible_profiles | 
| 7 | + valid_communities_string = Community.get_valid_communities_string | |
| 7 | 8 | |
| 8 | - list_without_institution = [] | |
| 9 | - | |
| 10 | - result.each do |profile| | |
| 11 | - if profile.class == Community && !profile.institution? | |
| 12 | - list_without_institution << profile | |
| 13 | - end | |
| 14 | - end | |
| 15 | - | |
| 16 | - result = list_without_institution | |
| 9 | + result.each{|community| @scope.delete(community) unless eval(valid_communities_string)} | |
| 17 | 10 | |
| 18 | 11 | result.slice(0..get_limit-1) | 
| 19 | 12 | end | 
| ... | ... | @@ -26,24 +19,23 @@ class CommunitiesBlock | 
| 26 | 19 | |
| 27 | 20 | def get_visible_profiles | 
| 28 | 21 | visible_profiles = profiles.visible.includes( | 
| 29 | - [:image,:domains,:preferred_domain,:environment] | |
| 22 | + [:image,:domains,:preferred_domain,:environment] | |
| 30 | 23 | ) | 
| 31 | 24 | if !prioritize_profiles_with_image | 
| 32 | 25 | return visible_profiles.all( | 
| 33 | - :limit => get_limit, | |
| 34 | - :order => 'profiles.updated_at DESC' | |
| 26 | + :limit => get_limit, | |
| 27 | + :order => 'profiles.updated_at DESC' | |
| 35 | 28 | ).sort_by {rand} | 
| 36 | 29 | elsif profiles.visible.with_image.count >= get_limit | 
| 37 | 30 | return visible_profiles.with_image.all( | 
| 38 | - :limit => get_limit * 5, | |
| 39 | - :order => 'profiles.updated_at DESC' | |
| 31 | + :limit => get_limit * 5, | |
| 32 | + :order => 'profiles.updated_at DESC' | |
| 40 | 33 | ).sort_by {rand} | 
| 41 | 34 | else | 
| 42 | 35 | return visible_profiles.with_image.sort_by {rand} + | 
| 43 | - visible_profiles.without_image.all( | |
| 44 | - :limit => get_limit * 5, :order => 'profiles.updated_at DESC' | |
| 45 | - ).sort_by {rand} | |
| 36 | + visible_profiles.without_image.all( | |
| 37 | + :limit => get_limit * 5, :order => 'profiles.updated_at DESC' | |
| 38 | + ).sort_by {rand} | |
| 46 | 39 | end | 
| 47 | 40 | end | 
| 48 | - | |
| 49 | 41 | end | ... | ... | 
lib/ext/community.rb
| ... | ... | @@ -3,8 +3,20 @@ require_dependency 'community' | 
| 3 | 3 | class Community | 
| 4 | 4 | has_one :institution, :dependent=>:destroy | 
| 5 | 5 | |
| 6 | - | |
| 7 | 6 | def institution? | 
| 8 | 7 | return !institution.nil? | 
| 9 | 8 | end | 
| 9 | + | |
| 10 | + def remove_of_community_search_institution? | |
| 11 | + return institution? | |
| 12 | + end | |
| 13 | + | |
| 14 | + def self.get_valid_communities_string | |
| 15 | + remove_of_communities_methods = Community.instance_methods.select{|m| m =~ /remove_of_community_search/} | |
| 16 | + valid_communities_string = "" | |
| 17 | + remove_of_communities_methods.each do |method| | |
| 18 | + valid_communities_string += "!community.send('#{method}') && " | |
| 19 | + end | |
| 20 | + valid_communities_string[0..-5] | |
| 21 | + end | |
| 10 | 22 | end | ... | ... | 
lib/ext/search_controller.rb
| ... | ... | @@ -3,12 +3,12 @@ require_dependency 'search_controller' | 
| 3 | 3 | class SearchController | 
| 4 | 4 | |
| 5 | 5 | def communities | 
| 6 | - results = filter_communities_list do |community| | |
| 7 | - !community.institution? | |
| 8 | - end | |
| 9 | - results = results.paginate(:per_page => 24, :page => params[:page]) | |
| 10 | - @searches[@asset] = {:results => results} | |
| 11 | - @search = results | |
| 6 | + valid_communities_string = Community.get_valid_communities_string | |
| 7 | + | |
| 8 | + @scope = visible_profiles(Community) | |
| 9 | + @scope.each{|community| @scope.delete(community) unless eval(valid_communities_string)} | |
| 10 | + | |
| 11 | + full_text_search | |
| 12 | 12 | end | 
| 13 | 13 | |
| 14 | 14 | def institutions | ... | ... | 
- 
mentioned in commit 0a5ba712f9d3c1d52eee5e56b35e9868c967166e