class Pref_Prefs extends Handler_Protected {
function csrf_ignore($method) {
- $csrf_ignored = array("index");
+ $csrf_ignored = array("index", "updateself");
return array_search($method, $csrf_ignored) !== false;
}
print '</div>'; # inner pane
print '</div>'; # border container
-
print "</form>";
print "</div>"; #pane
+
+
+ if (($_SESSION["access_level"] >= 10 || SINGLE_USER_MODE) && CHECK_FOR_NEW_VERSION) {
+ print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Update Tiny Tiny RSS')."\">";
+
+ if ($_SESSION["pref_last_version_check"] + 86400 + rand(-1000, 1000) < time()) {
+ $_SESSION["version_data"] = @check_for_update($this->link);
+ $_SESSION["pref_last_version_check"] = time();
+ }
+
+ if (is_array($_SESSION["version_data"])) {
+ $version = $_SESSION["version_data"]["version"];
+ print_notice(T_sprintf("New version of Tiny Tiny RSS is available (%s).", "<b>$version</b>"));
+
+ print "<p><button dojoType=\"dijit.form.Button\" onclick=\"return updateSelf()\">".
+ __('Update Tiny Tiny RSS')."</button></p>";
+
+ } else {
+ print_notice(__("You are currently using latest version of Tiny Tiny RSS. Update not required."));
+ }
+
+ print "</div>"; #pane
+ }
+
print "</div>"; #container
}
+
+ function updateSelf() {
+ print "<form style='display : block' name='self_update_form' id='self_update_form'>";
+
+ print "<div class='error'>".__("Do not close this dialog until updating is finished. Backup your tt-rss directory before continuing.")."</div>";
+
+ print "<pre class='selfUpdateList' id='self_update_log'>";
+ print __("Ready to update.")."\n";
+ print "</pre>";
+
+ print "<div class='dlgButtons'>";
+ print "<button id=\"self_update_start_btn\" dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('updateSelfDlg').start()\" >".
+ __("Start update")."</button>";
+ print "<button onclick=\"return dijit.byId('updateSelfDlg').close()\" dojoType=\"dijit.form.Button\">".
+ __("Close this window")."</button>";
+ print "</div>";
+ print "</form>";
+ }
+
+ function performUpdate() {
+ if (($_SESSION["access_level"] >= 10 || SINGLE_USER_MODE) && CHECK_FOR_NEW_VERSION) {
+ include "update_self.php";
+ update_self($this->link, true);
+ }
+ }
+
}
?>
}
}
+function updateSelf() {
+ try {
+ var query = "backend.php?op=pref-prefs&method=updateSelf";
+
+ if (dijit.byId("updateSelfDlg"))
+ dijit.byId("updateSelfDlg").destroyRecursive();
+
+ var dialog = new dijit.Dialog({
+ id: "updateSelfDlg",
+ title: __("Update Tiny Tiny RSS"),
+ style: "width: 600px",
+ closable: false,
+ performUpdate: function() {
+ dijit.byId("self_update_start_btn").attr("disabled", true);
+ notify_progress("Loading, please wait...", true);
+ new Ajax.Request("backend.php", {
+ parameters: "?op=pref-prefs&method=performUpdate",
+ onComplete: function(transport) {
+ try {
+ notify('');
+ $("self_update_log").innerHTML = transport.responseText;
+ dialog.attr("updated", true);
+ } catch (e) {
+ exception_error("updateSelf/inner", e);
+ }
+ } });
+ },
+ close: function() {
+ if (dialog.attr("updated")) {
+ window.location.reload();
+ } else {
+ dialog.hide();
+ }
+ },
+ start: function() {
+ if (prompt(__("Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue.")) == 'yes') {
+ dialog.performUpdate();
+ }
+ },
+ href: query});
+
+ dialog.show();
+ } catch (e) {
+ exception_error("batchSubscribe", e);
+ }
+}
+