diff --git a/include/functions2.php b/include/functions2.php index 4e133dde4..0207c1240 100644 --- a/include/functions2.php +++ b/include/functions2.php @@ -203,6 +203,26 @@ return array($prefixes, $hotkeys); } + function check_for_update() { + if (defined("GIT_VERSION_TIMESTAMP")) { + $content = @fetch_file_contents("http://tt-rss.org/version.json"); + + if ($content) { + $content = json_decode($content, true); + + if ($content && isset($content["changeset"])) { + if ((int)GIT_VERSION_TIMESTAMP < (int)$content["changeset"]["timestamp"] && + GIT_VERSION_HEAD != $content["changeset"]["id"]) { + + return $content["changeset"]["id"]; + } + } + } + } + + return false; + } + function make_runtime_info() { $data = array(); @@ -221,6 +241,15 @@ $data['dep_ts'] = calculate_dep_timestamp(); $data['reload_on_ts_change'] = !defined('_NO_RELOAD_ON_TS_CHANGE'); + + if (true || $_SESSION["last_version_check"] + 86400 + rand(-1000, 1000) < time()) { + $update_result = @check_for_update(); + + $data["update_result"] = $update_result; + + $_SESSION["last_version_check"] = time(); + } + if (file_exists(LOCK_DIRECTORY . "/update_daemon.lock")) { $data['daemon_is_running'] = (int) file_is_locked("update_daemon.lock"); diff --git a/include/version.php b/include/version.php index a7ca8a32b..34c11e6e7 100644 --- a/include/version.php +++ b/include/version.php @@ -8,6 +8,10 @@ if (is_dir("$root_dir/.git") && file_exists("$root_dir/.git/refs/heads/master")) { $suffix = substr(trim(file_get_contents("$root_dir/.git/refs/heads/master")), 0, 7); + $timestamp = filemtime("$root_dir/.git/refs/heads/master"); + + define("GIT_VERSION_HEAD", $suffix); + define("GIT_VERSION_TIMESTAMP", $timestamp); return VERSION_STATIC . ".$suffix"; } else { diff --git a/index.php b/index.php index 309ca2e29..322635978 100644 --- a/index.php +++ b/index.php @@ -252,6 +252,10 @@ + + diff --git a/js/tt-rss.js b/js/tt-rss.js index 26749d108..df41a9cc5 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -767,6 +767,16 @@ function parse_runtime_info(data) { return; } + if (k == "update_result") { + var updatesIcon = dijit.byId("updatesIcon").domNode; + + if (v != "") { + Element.show(updatesIcon); + } else { + Element.hide(updatesIcon); + } + } + if (k == "daemon_stamp_ok" && v != 1) { notify_error("Update daemon is not updating feeds.", true); return;