app_version.rb 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
  2. class AppVersion
  3. =begin
  4. get current app version
  5. version = AppVersion.get
  6. returns
  7. '20150212131700:0' # 'version:if_browser_reload_is_required'
  8. =end
  9. def self.get
  10. Setting.get('app_version')
  11. end
  12. =begin
  13. set new app version and if browser reload is required
  14. AppVersion.set(true) # true == reload is required / false == no reload is required
  15. send also reload type to clients
  16. AppVersion.set(true, 'restart_auto')
  17. =end
  18. def self.set(reload_required = false, type = false)
  19. return false if !Setting.find_by(name: 'app_version')
  20. version = "#{Time.zone.now.strftime('%Y%m%d%H%M%S')}:#{reload_required}"
  21. Setting.set('app_version', version)
  22. # broadcast to clients
  23. Sessions.broadcast(event_data(type), 'public')
  24. end
  25. =begin
  26. get event data
  27. AppVersion.event_data(type)
  28. types:
  29. app_version -> new app version
  30. restart_manual -> app needs restart
  31. restart_auto -> app is restarting
  32. config_changed -> config has changed
  33. returnes
  34. {
  35. event: 'maintenance'
  36. data: {
  37. type: 'app_version',
  38. app_version: app_version,
  39. }
  40. }
  41. =end
  42. def self.event_data(type = 'app_version')
  43. {
  44. event: 'maintenance',
  45. data: {
  46. type: type,
  47. app_version: get,
  48. }
  49. }
  50. end
  51. end