Commit 0a5ba712f9d3c1d52eee5e56b35e9868c967166e

Authored by Thiago Ribeiro
2 parents 12f620db 105ef252

Merge branch 'fix_communities_search' into 'master'

Fix communities search

See merge request !2
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 &#39;community&#39;
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 &#39;search_controller&#39;
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
... ...