solr_plugin.rb 1.01 KB
class SolrPlugin < Noosfero::Plugin; end;

require_dependency 'solr_plugin/search_helper'

class SolrPlugin < Noosfero::Plugin

  include SolrPlugin::SearchHelper

  delegate :params, :current_user, :to => :context

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

end

Dir[File.join(SolrPlugin.root_path, 'lib', 'ext', '*.rb')].each {|file| require_dependency file }