2013-02-20 04:16:50 +08:00
|
|
|
require_dependency 'discourse_hub'
|
|
|
|
require_dependency 'discourse_updates'
|
|
|
|
|
|
|
|
module Jobs
|
2013-08-08 01:25:05 +08:00
|
|
|
class VersionCheck < Jobs::Scheduled
|
2014-02-06 07:14:41 +08:00
|
|
|
every 1.day
|
2013-02-20 04:16:50 +08:00
|
|
|
|
|
|
|
def execute(args)
|
2013-07-31 00:11:51 +08:00
|
|
|
if SiteSetting.version_checks? and (DiscourseUpdates.updated_at.nil? or DiscourseUpdates.updated_at < 1.minute.ago)
|
2013-03-25 23:35:33 +08:00
|
|
|
begin
|
2014-01-01 04:52:16 +08:00
|
|
|
prev_missing_versions_count = DiscourseUpdates.missing_versions_count || 0
|
2013-08-17 05:28:36 +08:00
|
|
|
|
2013-03-25 23:35:33 +08:00
|
|
|
json = DiscourseHub.discourse_version_check
|
2013-11-05 01:51:01 +08:00
|
|
|
DiscourseUpdates.last_installed_version = Discourse::VERSION::STRING
|
2013-03-25 23:35:33 +08:00
|
|
|
DiscourseUpdates.latest_version = json['latestVersion']
|
|
|
|
DiscourseUpdates.critical_updates_available = json['criticalUpdates']
|
|
|
|
DiscourseUpdates.missing_versions_count = json['missingVersionsCount']
|
2013-07-03 23:06:07 +08:00
|
|
|
DiscourseUpdates.updated_at = Time.zone.now
|
2014-01-01 04:52:16 +08:00
|
|
|
DiscourseUpdates.missing_versions = json['versions']
|
2013-08-17 05:28:36 +08:00
|
|
|
|
2014-01-01 04:52:16 +08:00
|
|
|
if SiteSetting.new_version_emails and json['missingVersionsCount'] > 0 and prev_missing_versions_count < json['missingVersionsCount'].to_i
|
2013-08-17 05:28:36 +08:00
|
|
|
message = VersionMailer.send_notice
|
|
|
|
Email::Sender.new(message, :new_version).send
|
|
|
|
end
|
2013-03-25 23:35:33 +08:00
|
|
|
rescue => e
|
2014-08-18 14:42:48 +08:00
|
|
|
raise e unless Rails.env.development? # Fail version check silently in development mode
|
2013-03-25 23:35:33 +08:00
|
|
|
end
|
2013-02-21 23:19:02 +08:00
|
|
|
end
|
2013-02-20 04:16:50 +08:00
|
|
|
true
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
2014-02-06 07:14:41 +08:00
|
|
|
end
|