]> git.wh0rd.org Git - tt-rss.git/commitdiff
add placeholder update checker using git changesets
authorAndrew Dolgov <noreply@fakecake.org>
Tue, 3 Feb 2015 11:39:15 +0000 (14:39 +0300)
committerAndrew Dolgov <noreply@fakecake.org>
Tue, 3 Feb 2015 11:39:15 +0000 (14:39 +0300)
include/functions2.php
include/version.php
index.php
js/tt-rss.js

index 4e133dde44792bd7f33b5310d4db072c2889edc8..0207c1240a9829074548bda1a528ffd9a1d63b09 100644 (file)
                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();
 
                $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");
index a7ca8a32b43faef7433b2afec41bad43401f29f6..34c11e6e7738a8a0495d68c3b22b1cb773a9593d 100644 (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 {
index 309ca2e29521245ab2274133fed652d67502f22c..322635978df9e532bb9ccb85d507b108d1c1388f 100644 (file)
--- a/index.php
+++ b/index.php
                                        <?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 -->
index 26749d1089f073baf129d165b7cd0c2634a47d1e..df41a9cc54dc70066c113793a9fd730b574e03c2 100644 (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;