75 lines
1.4 KiB
Ruby
75 lines
1.4 KiB
Ruby
|
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
|
||
|
module ApplicationModel::HasAttachments
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
included do
|
||
|
after_create :attachments_buffer_check
|
||
|
after_update :attachments_buffer_check
|
||
|
end
|
||
|
|
||
|
=begin
|
||
|
|
||
|
get list of attachments of this object
|
||
|
|
||
|
item = Model.find(123)
|
||
|
list = item.attachments
|
||
|
|
||
|
returns
|
||
|
|
||
|
# array with Store model objects
|
||
|
|
||
|
=end
|
||
|
|
||
|
def attachments
|
||
|
Store.list(object: self.class.to_s, o_id: id)
|
||
|
end
|
||
|
|
||
|
=begin
|
||
|
|
||
|
store attachments for this object
|
||
|
|
||
|
item = Model.find(123)
|
||
|
item.attachments = [ Store-Object1, Store-Object2 ]
|
||
|
|
||
|
=end
|
||
|
|
||
|
def attachments=(attachments)
|
||
|
self.attachments_buffer = attachments
|
||
|
|
||
|
# update if object already exists
|
||
|
return if !(id && id.nonzero?)
|
||
|
|
||
|
attachments_buffer_check
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def attachments_buffer
|
||
|
@attachments_buffer_data
|
||
|
end
|
||
|
|
||
|
def attachments_buffer=(attachments)
|
||
|
@attachments_buffer_data = attachments
|
||
|
end
|
||
|
|
||
|
def attachments_buffer_check
|
||
|
|
||
|
# do nothing if no attachment exists
|
||
|
return 1 if attachments_buffer.nil?
|
||
|
|
||
|
# store attachments
|
||
|
article_store = []
|
||
|
attachments_buffer.each do |attachment|
|
||
|
article_store.push Store.add(
|
||
|
object: self.class.to_s,
|
||
|
o_id: id,
|
||
|
data: attachment.content,
|
||
|
filename: attachment.filename,
|
||
|
preferences: attachment.preferences,
|
||
|
created_by_id: created_by_id,
|
||
|
)
|
||
|
end
|
||
|
attachments_buffer = nil
|
||
|
end
|
||
|
end
|