1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
- class Sessions::Backend::Base
- attr_writer :user, :time_now
- def initialize(user, asset_lookup, client, client_id, ttl = 10)
- @user = user
- @client = client
- @client_id = client_id
- @ttl = ttl
- @asset_lookup = asset_lookup
- @last_change = nil
- end
- def to_run?
- return true if !@time_now
- return true if Time.zone.now.to_i > (@time_now + @ttl)
- false
- end
- def asset_push(record, assets)
- if !@time_now
- @time_now = Time.zone.now.to_i
- end
- class_name = record.class.to_s
- @asset_lookup[class_name] ||= {}
- @asset_lookup[class_name][record.id] = {
- updated_at: record.updated_at,
- pushed_at: @time_now,
- }
- record.assets(assets)
- end
- def asset_needed?(record)
- return false if !asset_needed_by_updated_at?(record.class.to_s, record.id, record.updated_at)
- true
- end
- def asset_needed_by_updated_at?(class_name, record_id, updated_at)
- return true if @asset_lookup.blank?
- return true if @asset_lookup[class_name].blank?
- return true if @asset_lookup[class_name][record_id].blank?
- return true if @asset_lookup[class_name][record_id][:updated_at] < updated_at
- return true if @asset_lookup[class_name][record_id][:pushed_at].blank?
- return true if @asset_lookup[class_name][record_id][:pushed_at] < @time_now - 7200
- false
- end
- end
|