root/components/bbs/trunk/bbs/rubricks_search.rb

Revision 5762, 2.0 kB (checked in by uta, 2 years ago)

2008/05/22 sync

Line 
1 class Bbs::RubricksSearch
2   def search(query, offset, limit, snippet_size, ru, target_list = ['message_title', 'message_plain'])
3     result = []
4     conditions = RubricksLib.query_to_conditions(query, target_list)
5     query = conditions.shift
6     query = "(#{query})"
7     conditions.unshift(query)
8    
9     bm_list = Bbs::BbsMessage.find(:all, :conditions => conditions, :include => [:rubricks_user, [:bbs_topic => [:bbs_forum => [:bbs_category => :bbs_info ]]]], :offset => offset, :limit => limit, :order => 'bbs_messages.created_on desc')
10     bm_list.each do |bbs_message|
11       administrator = bbs_message.bbs_topic.bbs_forum.bbs_category.bbs_info.bbs_admin?
12       bbs_forum = bbs_message.bbs_topic.bbs_forum
13       if bbs_forum.visible? && bbs_message.bbs_topic.viewer?
14         result << {
15           :url        => {:controller => '/bbs/bbs', :action => 'main', :params => {:display_type => 'message', :id => bbs_message.id}},
16           :permalink  => {:controller => '/bbs/bbs', :main => '_main', :params => {:display_type => 'message', :id => bbs_message.id}},
17           :title      => bbs_message.message_title,
18           :author     => bbs_message.display_poster_name,
19           :date       => bbs_message.created_on,
20           :snippet    => bbs_message.message_plain
21         }
22       end
23     end
24     return result
25   end
26
27   def count(query, ru, target_list = ['message_title', 'message_plain'])
28     conditions = RubricksLib.query_to_conditions(query, target_list)
29     query = conditions.shift
30     query = "(#{query})"
31     conditions.unshift(query)
32    
33     bm_list = Bbs::BbsMessage.find(:all, :conditions => conditions, :include => [:rubricks_user, [:bbs_topic => [:bbs_forum => [:bbs_category => :bbs_info ]]]])
34     result = bm_list.select { |bbs_message| bbs_message.bbs_topic.bbs_forum.visible? && bbs_message.bbs_topic.viewer? }
35     return result.size
36   end
37
38   def target
39     target = {
40       'message_title'        => '[_Common_Title]',
41       'message_plain'        => '[_Common_Message]'
42     }
43   end
44 end
Note: See TracBrowser for help on using the browser.