From 63855db147e6efeaa6516dc2b95598b03d1b3ad5 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 23 Nov 2010 10:30:36 +0300 Subject: [PATCH] rework version checking --- functions.php | 69 ++++++++-------------------------------- modules/popup-dialog.php | 33 ++++++++++++------- tt-rss.css | 8 +++++ tt-rss.js | 21 ++++++++++++ tt-rss.php | 2 +- 5 files changed, 64 insertions(+), 69 deletions(-) diff --git a/functions.php b/functions.php index 99db938ba..98e4c688b 100644 --- a/functions.php +++ b/functions.php @@ -3199,15 +3199,12 @@ } } - if (CHECK_FOR_NEW_VERSION && $_SESSION["access_level"] >= 10) { - - if ($_SESSION["last_version_check"] + 86400 + rand(-1000, 1000) < time()) { + if ($_SESSION["last_version_check"] + 86400 + rand(-1000, 1000) < time()) { $new_version_details = @check_for_update($link); - $data['new_version_available'] = (int) $new_version_details != ""; + $data['new_version_available'] = (int) ($new_version_details != false); $_SESSION["last_version_check"] = time(); - } } return $data; @@ -3913,62 +3910,22 @@ } function check_for_update($link) { - $releases_feed = "http://tt-rss.org/releases.rss"; - - if (!CHECK_FOR_NEW_VERSION || $_SESSION["access_level"] < 10) { - return; - } - - if (DEFAULT_UPDATE_METHOD == "1") { - $rss = new SimplePie(); - $rss->set_useragent(SELF_USER_AGENT); - $rss->set_feed_url($fetch_url); - $rss->set_output_encoding('UTF-8'); - $rss->init(); - } else { - $rss = fetch_rss($releases_feed); - } - - if ($rss) { - - if (DEFAULT_UPDATE_METHOD == "1") { - $items = $rss->get_items(); - } else { - $items = $rss->items; - - if (!$items || !is_array($items)) $items = $rss->entries; - if (!$items || !is_array($items)) $items = $rss; - } + if (CHECK_FOR_NEW_VERSION && $_SESSION['access_level'] >= 10) { + $version_url = "http://tt-rss.org/version.php?ver=" . VERSION; - if (!is_array($items) || count($items) == 0) { - return; - } + $version_data = @fetch_file_contents($version_url); - $latest_item = $items[0]; + if ($version_data) { + $version_data = json_decode($version_data, true); + if ($version_data && $version_data['version']) { - if (DEFAULT_UPDATE_METHOD == "1") { - $last_title = $latest_item->get_title(); - } else { - $last_title = $latest_item["title"]; - } - - $latest_version = trim(preg_replace("/(Milestone)|(completed)/", "", $last_title)); - - if (DEFAULT_UPDATE_METHOD == "1") { - $release_url = sanitize_rss($link, $latest_item->get_link()); - $content = sanitize_rss($link, $latest_item->get_description()); - } else { - $release_url = sanitize_rss($link, $latest_item["link"]); - $content = sanitize_rss($link, $latest_item["description"]); + if (version_compare(VERSION, $version_data['version']) == -1) { + return $version_data['version']; + } + } } - - if (version_compare(VERSION, $latest_version) == -1) { - return sprintf("New version of Tiny-Tiny RSS (%s) is available:", - $latest_version)."
$content
"; - } else { - return false; - } } + return false; } function markArticlesById($link, $ids, $cmode) { diff --git a/modules/popup-dialog.php b/modules/popup-dialog.php index 0a272d1a3..584f6e51d 100644 --- a/modules/popup-dialog.php +++ b/modules/popup-dialog.php @@ -217,17 +217,6 @@ } - if ($param == 2) { - $msg = check_for_update($link); - - if (!$msg) { - print __("You are running the latest version of Tiny Tiny RSS. The fact that you are seeing this dialog is probably a bug."); - } else { - print $msg; - } - - } - if ($param == 3) { print __("Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner."); @@ -241,7 +230,7 @@ print "
"; - print ""; print "
"; @@ -777,6 +766,26 @@ //return; } + if ($id == "newVersion") { + $version = check_for_update($link); + + $version_link = "http://tt-rss.org"; + + print "
"; + + print T_sprintf("New version of Tiny Tiny RSS is available (%s).
Visit %s for more information.", "$version", $version_link); + + print "
"; + + print "
"; + print ""; + print "
"; + + } + print ""; } ?> diff --git a/tt-rss.css b/tt-rss.css index 539cf93f3..69b1abf9c 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -1096,6 +1096,7 @@ div.topLinks { float : right; color : gray; font-size : 12px; + line-height : 120%; } div.topLinks a { @@ -1646,3 +1647,10 @@ a.bookmarklet { border : 1px solid #ecf4ff; padding : 2px; } + +#newVersionIcon { + margin-left : 5px; + vertical-align : middle; + position : relative; + top : -1px; +} diff --git a/tt-rss.js b/tt-rss.js index 46ea5a4bb..d88554669 100644 --- a/tt-rss.js +++ b/tt-rss.js @@ -1107,3 +1107,24 @@ function scheduleFeedUpdate(id, is_cat) { exception_error("scheduleFeedUpdate", e); } } + +function newVersionDlg() { + try { + var query = "backend.php?op=dlg&id=newVersion"; + + if (dijit.byId("newVersionDlg")) + dijit.byId("newVersionDlg").destroyRecursive(); + + dialog = new dijit.Dialog({ + id: "newVersionDlg", + title: __("New version available!"), + style: "width: 600px", + href: query, + }); + + dialog.show(); + + } catch (e) { + exception_error("newVersionDlg", e); + } +} diff --git a/tt-rss.php b/tt-rss.php index ceeca3581..f51648fef 100644 --- a/tt-rss.php +++ b/tt-rss.php @@ -107,7 +107,7 @@ | -