39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/thoth/controller/search.rb', line 39
def index
redirect_referrer if request[:q].nil? || request[:q].empty?
@query = request[:q].strip
redirect_referrer if @query.empty?
count = request[:count] ? request[:count].strip.to_i : 10
start = request[:start] ? request[:start].strip.to_i : 1
count = 5 if count < 5
count = 100 if count > 100
start = 1 if start < 1
start = 990 if start > 990
@title = "Search results for #{@query}"
@data = yahoo_search(
"#{@query} -inurl:/tag -inurl:/archive -inurl:/search",
:adult_ok => 1,
:results => count,
:site => Config.site['url'].gsub(/^https?:\/\/([^\/]+)\/?$/i){$1},
:start => start
)
if @data[:available] > @data[:returned]
if @data[:start] > 1
prev_start = start - count
prev_start = 1 if prev_start < 1
@prev_url = "#{rs()}?q=#{u(@query)}&count=#{count}&start=" <<
prev_start.to_s
end
if @data[:available] > (@data[:start] + @data[:returned])
next_start = start + @data[:returned]
next_start = 1001 - count if next_start > (1001 - count)
@next_url = "#{rs()}?q=#{u(@query)}&count=#{count}&start=" <<
next_start.to_s
end
end
rescue SearchError => e
@error = e.message
@data = {:results => []}
end
|