trabajo-afectivo/app/models/ticket/search_index.rb

67 lines
2 KiB
Ruby
Raw Normal View History

# Copyright (C) 2012-2013 Zammad Foundation, http://zammad-foundation.org/
module Ticket::SearchIndex
=begin
2014-01-30 00:06:42 +00:00
build and send data for search index to backend
ticket = Ticket.find(123)
result = ticket.search_index_update_backend
returns
result = true # false
=end
def search_index_update_backend
return if !self.class.search_index_support_config
# default ignored attributes
ignore_attributes = {
:created_at => true,
:updated_at => true,
:created_by_id => true,
:updated_by_id => true,
:active => true,
}
if self.class.search_index_support_config[:ignore_attributes]
self.class.search_index_support_config[:ignore_attributes].each {|key, value|
ignore_attributes[key] = value
}
end
attributes = self.attributes
ignore_attributes.each {|key, value|
next if value != true
attributes.delete( key.to_s )
}
attributes = search_index_attribute_lookup( attributes, self )
# add article data
articles = Ticket::Article.where( :ticket_id => self.id )
attributes['articles_all'] = []
attributes['articles_external'] = []
articles.each {|article|
article_attributes = article.attributes
article_attributes.delete('created_by_id')
article_attributes.delete('updated_by_id')
article_attributes.delete('updated_at')
article_attributes.delete('references')
article_attributes.delete('message_id_md5')
article_attributes.delete('message_id')
article_attributes.delete('in_reply_to')
article_attributes.delete('ticket_id')
article_attributes = search_index_attribute_lookup( article_attributes, article )
attributes['articles_all'].push article_attributes
if !article.internal
attributes['articles_external'].push article_attributes
end
}
return if !attributes
SearchIndexBackend.add(self.class.to_s, attributes)
end
end