solr_plugin.rb 1006 Bytes
class SolrPlugin < Noosfero::Plugin; end;

require_dependency 'solr_plugin/search_helper'

class SolrPlugin < Noosfero::Plugin

  include SolrPlugin::SearchHelper

  def self.plugin_name
    "Solr"
  end

  def self.plugin_description
    _("Uses Solr as search engine.")
  end

  def stylesheet?
    true
  end

  def find_by_contents(asset, scope, query, paginate_options={}, options={})
    klass = asset_class(asset)
    category = options.delete(:category)
    filter = options.delete(:filter)

    return if empty_query?(query, category) && klass != Product

    solr_options = solr_options(class_asset(klass), category)
    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