WillPaginate doesn't work with Thinking Sphinx
[gitorious:felixtrillers-mainline.git] / app / controllers / searches_controller.rb
1 # encoding: utf-8
2 #--
3 #   Copyright (C) 2012 Gitorious AS
4 #   Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
5 #   Copyright (C) 2008 Johan Sørensen <johan@johansorensen.com>
6 #   Copyright (C) 2008 Tor Arne Vestbø <tavestbo@trolltech.com>
7 #
8 #   This program is free software: you can redistribute it and/or modify
9 #   it under the terms of the GNU Affero General Public License as published by
10 #   the Free Software Foundation, either version 3 of the License, or
11 #   (at your option) any later version.
12 #
13 #   This program is distributed in the hope that it will be useful,
14 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 #   GNU Affero General Public License for more details.
17 #
18 #   You should have received a copy of the GNU Affero General Public License
19 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 #++
21
22 class SearchesController < ApplicationController
23   PER_PAGE = 30
24   helper :all
25   renders_in_global_context
26
27   def show
28     unless params[:q].blank?
29       @all_results = nil  # The unfiltered search result from TS
30       @results = paginate(page_free_redirect_options) do
31         page = params[:per_page]
32         _results = ThinkingSphinx.search({ :query => params[:q],
33                                              :page => page,
34                                              :per_page => PER_PAGE })
35         @all_results = filter(_results)
36       end
37
38       unfiltered_results_length = @all_results.nil? ? 0 : @all_results.length
39       filtered_results_length = @results.length
40       @total_entries = @all_results.total_entries - (unfiltered_results_length - filtered_results_length)
41     end
42   end
43 end