| 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 |
|---|