12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
- class Observer::User::RefObjectTouch < ActiveRecord::Observer
- observe 'user'
- def after_create(record)
- ref_object_touch(record)
- end
- def after_update(record)
- ref_object_touch(record)
- end
- def after_destroy(record)
- ref_object_touch(record)
- end
- def ref_object_touch(record)
- # return if we run import mode
- return true if Setting.get('import_mode')
- # touch old organization if changed
- member_ids = []
- organization_id_changed = record.saved_changes['organization_id']
- if organization_id_changed && organization_id_changed[0] != organization_id_changed[1]
- if organization_id_changed[0]
- # featrue used for different propose, do not touch references
- if User.where(organization_id: organization_id_changed[0]).count < 100
- organization = Organization.find(organization_id_changed[0])
- organization.touch
- member_ids = organization.member_ids
- end
- end
- end
- # touch new/current organization
- if record.organization
- # featrue used for different propose, do not touch references
- if User.where(organization_id: record.organization_id).count < 100
- record.organization.touch
- member_ids += record.organization.member_ids
- end
- end
- # touch old/current customer
- member_ids.uniq.each do |user_id|
- next if user_id == record.id
- User.find(user_id).touch
- end
- true
- end
- end
|