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

85 lines
2.3 KiB
Ruby
Raw Normal View History

2014-02-03 19:23:00 +00:00
# Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
module Ticket::SearchIndex
=begin
2016-07-06 06:13:44 +00:00
lookup name of ref. objects
ticket = Ticket.find(123)
2016-07-06 06:13:44 +00:00
result = ticket.search_index_attribute_lookup
returns
2016-07-06 06:13:44 +00:00
attributes # object with lookup data
=end
2016-07-06 06:13:44 +00:00
def search_index_attribute_lookup
attributes = super
return if !attributes
2016-07-06 06:13:44 +00:00
# collect article data
# add tags
2016-07-06 06:13:44 +00:00
tags = Tag.tag_list(object: 'Ticket', o_id: id)
if tags && !tags.empty?
attributes[:tag] = tags
end
2015-04-05 23:28:52 +00:00
# list ignored file extentions
attachments_ignore = Setting.get('es_attachment_ignore') || [ '.png', '.jpg', '.jpeg', '.mpeg', '.mpg', '.mov', '.bin', '.exe' ]
# max attachment size
attachment_max_size_in_mb = Setting.get('es_attachment_max_size_in_mb') || 40
2015-04-05 23:28:52 +00:00
# collect article data
2016-07-06 06:13:44 +00:00
articles = Ticket::Article.where(ticket_id: id)
2016-09-09 21:10:27 +00:00
attributes['article'] = []
2016-06-30 20:04:48 +00:00
articles.each { |article|
article_attributes = article.attributes
2015-04-05 23:28:52 +00:00
# remove note needed attributes
2015-10-18 15:20:09 +00:00
ignore = %w(message_id_md5)
2016-06-30 20:04:48 +00:00
ignore.each { |attribute|
2016-07-06 06:13:44 +00:00
article_attributes.delete(attribute)
}
2014-02-02 18:58:59 +00:00
# lookup attributes of ref. objects (normally name and note)
2016-07-06 06:13:44 +00:00
article_attributes = article.search_index_attribute_lookup
2015-04-05 23:28:52 +00:00
# index raw text body
if article_attributes['content_type'] && article_attributes['content_type'] == 'text/html' && article_attributes['body']
article_attributes['body'] = article_attributes['body'].html2text
end
2015-04-27 21:27:51 +00:00
# lookup attachments
2016-06-30 20:04:48 +00:00
article.attachments.each { |attachment|
2016-09-09 21:10:27 +00:00
if !article_attributes['attachment']
article_attributes['attachment'] = []
2015-04-05 23:28:52 +00:00
end
# check file size
next if !attachment.content
next if attachment.content.size / 1024 > attachment_max_size_in_mb * 1024
# check ignored files
next if !attachment.filename
filename_extention = attachment.filename.downcase
filename_extention.gsub!(/^.*(\..+?)$/, '\\1')
2016-07-06 06:13:44 +00:00
next if attachments_ignore.include?(filename_extention.downcase)
data = {
'_name' => attachment.filename,
2016-07-06 06:13:44 +00:00
'_content' => Base64.encode64(attachment.content)
}
2016-09-09 21:10:27 +00:00
article_attributes['attachment'].push data
2014-02-02 18:58:59 +00:00
}
2016-09-09 21:10:27 +00:00
attributes['article'].push article_attributes
}
2016-07-06 06:13:44 +00:00
attributes
end
2016-07-06 06:13:44 +00:00
end