add placeholder update checker using git changesets

This commit is contained in:
Andrew Dolgov 2015-02-03 14:39:15 +03:00
parent 47cdc58c60
commit efcc5d365d
4 changed files with 47 additions and 0 deletions

View File

@ -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");

View File

@ -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 {

View File

@ -252,6 +252,10 @@
<?php } ?>
</div>
</div>
<button id="updatesIcon" dojoType="dijit.form.Button" style="display : none">
<img src="images/new_version.png" title="<?php echo __('Updates are available from Git.') ?>"/>
</button>
</div>
</div> <!-- toolbar -->
</div> <!-- toolbar pane -->

View File

@ -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("<span onclick=\"javascript:explainError(3)\">Update daemon is not updating feeds.</span>", true);
return;