From 795361152887087cc781abf8c802f3518441012d Mon Sep 17 00:00:00 2001 From: Braulio Bhavamitra Date: Sun, 21 Jul 2013 17:20:33 -0300 Subject: [PATCH] Fix infinite loop with context variable --- plugins/solr/lib/solr_plugin.rb | 11 ++++++++--- plugins/solr/lib/solr_plugin/search_helper.rb | 12 ++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/plugins/solr/lib/solr_plugin.rb b/plugins/solr/lib/solr_plugin.rb index a83ad30..7141ed7 100644 --- a/plugins/solr/lib/solr_plugin.rb +++ b/plugins/solr/lib/solr_plugin.rb @@ -6,8 +6,6 @@ class SolrPlugin < Noosfero::Plugin include SolrPlugin::SearchHelper - delegate :params, :current_user, :to => :context - def self.plugin_name "Solr" end @@ -28,11 +26,18 @@ class SolrPlugin < Noosfero::Plugin return if empty_query?(query, category) && klass != Product solr_options = solr_options(class_asset(klass), category) - user = context.send(:logged_in?) ? context.send(:user) : nil solr_options.merge!(products_options(user)) if klass == Product && empty_query?(query, category) klass.find_by_contents(query, paginate_options, solr_options.merge(options)) end + def method_missing method, *args, &block + if self.context.respond_to? method + self.context.send method, *args, &block + else + super method, *args, &block + end + end + end Dir[File.join(SolrPlugin.root_path, 'lib', 'ext', '*.rb')].each {|file| require_dependency file } diff --git a/plugins/solr/lib/solr_plugin/search_helper.rb b/plugins/solr/lib/solr_plugin/search_helper.rb index 41e92d0..d72a0b1 100644 --- a/plugins/solr/lib/solr_plugin/search_helper.rb +++ b/plugins/solr/lib/solr_plugin/search_helper.rb @@ -58,7 +58,7 @@ module SolrPlugin::SearchHelper end def results_only? - context.params[:action] == 'index' + params[:action] == 'index' end def empty_query?(query, category) @@ -88,18 +88,18 @@ module SolrPlugin::SearchHelper solr_options = {} if !multiple_search? if !results_only? and asset_class.respond_to? :facets - solr_options.merge! asset_class.facets_find_options(context.params[:facet]) + solr_options.merge! asset_class.facets_find_options(params[:facet]) solr_options[:all_facets] = true end solr_options[:filter_queries] ||= [] solr_options[:filter_queries] += filters(asset) - solr_options[:filter_queries] << "environment_id:#{context.environment.id}" + solr_options[:filter_queries] << "environment_id:#{environment.id}" solr_options[:filter_queries] << asset_class.facet_category_query.call(category) if category solr_options[:boost_functions] ||= [] - context.params[:order_by] = nil if context.params[:order_by] == 'none' - if context.params[:order_by] - order = SortOptions[asset][context.params[:order_by].to_sym] + params[:order_by] = nil if params[:order_by] == 'none' + if params[:order_by] + order = SortOptions[asset][params[:order_by].to_sym] raise "Unknown order by" if order.nil? order[:solr_opts].each do |opt, value| solr_options[opt] = value.is_a?(Proc) ? instance_eval(&value) : value -- libgit2 0.21.2