perform backend sanity check on startup, update schema version in backend.php

This commit is contained in:
Andrew Dolgov 2005-11-16 08:59:46 +01:00
parent 1089b16bc2
commit 295f9b422a
4 changed files with 78 additions and 7 deletions

View File

@ -1,5 +1,5 @@
<? <?
define(SCHEMA_VERSION, 1); define(SCHEMA_VERSION, 2);
$op = $_GET["op"]; $op = $_GET["op"];
@ -28,6 +28,7 @@
pg_query("set client_encoding = 'utf-8'"); pg_query("set client_encoding = 'utf-8'");
} }
/*
$result = db_query($link, "SELECT schema_version FROM ttrss_version"); $result = db_query($link, "SELECT schema_version FROM ttrss_version");
$schema_version = db_fetch_result($result, 0, "schema_version"); $schema_version = db_fetch_result($result, 0, "schema_version");
@ -37,7 +38,8 @@
(got version $schema_version; expected ".SCHEMA_VERSION.")"; (got version $schema_version; expected ".SCHEMA_VERSION.")";
return; return;
} }
*/
$fetch = $_GET["fetch"]; $fetch = $_GET["fetch"];
/* FIXME this needs reworking */ /* FIXME this needs reworking */
@ -360,6 +362,21 @@
print "Marked active page as read."; print "Marked active page as read.";
} }
if ($subop == "sanityCheck") {
$error_code = 0;
$result = db_query($link, "SELECT schema_version FROM ttrss_version");
$schema_version = db_fetch_result($result, 0, "schema_version");
if ($schema_version != SCHEMA_VERSION) {
$error_code = 5;
}
print "<error code='$error_code'/>";
}
} }
if ($op == "feeds") { if ($op == "feeds") {

View File

@ -416,4 +416,7 @@ function hideOrShowFeeds(doc, hide) {
} }
function fatalError(code) {
window.location = "error.php?c=" + param_escape(code);
}

View File

@ -497,3 +497,9 @@ ul.nomarks {
padding : 10px; padding : 10px;
} }
div.bigErrorMsg {
border : 1px solid #c0c0c0;
background : #fff0f0;
padding : 30px;
margin : 20px;
}

View File

@ -121,6 +121,32 @@ function refetch_callback() {
} }
} }
function backend_sanity_check_callback() {
if (xmlhttp.readyState == 4) {
if (!xmlhttp.responseXML) {
fatalError(3);
return;
}
var reply = xmlhttp.responseXML.firstChild;
if (!reply) {
fatalError(3);
return;
}
var error_code = reply.getAttribute("code");
if (error_code && error_code != 0) {
return fatalError(error_code);
}
init_second_stage();
}
}
function updateFeed(feed_id) { function updateFeed(feed_id) {
var query_str = "backend.php?op=rpc&subop=updateFeed&feed=" + feed_id; var query_str = "backend.php?op=rpc&subop=updateFeed&feed=" + feed_id;
@ -297,7 +323,15 @@ function updateTitle(s) {
function genericSanityCheck() { function genericSanityCheck() {
if (!xmlhttp) { if (!xmlhttp) fatalError(1);
setCookie("ttrss_vf_test", "TEST");
if (getCookie("ttrss_vf_test") != "TEST") {
fatalError(2);
}
/* if (!xmlhttp) {
document.getElementById("headlines").innerHTML = document.getElementById("headlines").innerHTML =
"<b>Fatal error:</b> This program requires XmlHttpRequest " + "<b>Fatal error:</b> This program requires XmlHttpRequest " +
"to function properly. Your browser doesn't seem to support it."; "to function properly. Your browser doesn't seem to support it.";
@ -312,7 +346,7 @@ function genericSanityCheck() {
"to function properly. Your browser doesn't seem to support them."; "to function properly. Your browser doesn't seem to support them.";
return false; return false;
} } */
return true; return true;
} }
@ -324,14 +358,19 @@ function init() {
if (!genericSanityCheck()) if (!genericSanityCheck())
return; return;
xmlhttp.open("GET", "backend.php?op=rpc&subop=sanityCheck", true);
xmlhttp.onreadystatechange=backend_sanity_check_callback;
xmlhttp.send(null);
}
function init_second_stage() {
setCookie("ttrss_vf_actfeed", ""); setCookie("ttrss_vf_actfeed", "");
updateFeedList(false, false); updateFeedList(false, false);
document.onkeydown = hotkey_handler; document.onkeydown = hotkey_handler;
setTimeout("timeout()", 1800*1000);
scheduleFeedUpdate(true);
var content = document.getElementById("content"); var content = document.getElementById("content");
if (getCookie("ttrss_vf_vmode")) { if (getCookie("ttrss_vf_vmode")) {
@ -348,6 +387,10 @@ function init() {
// viewfeed(getCookie("ttrss_vf_actfeed"), 0, ''); // viewfeed(getCookie("ttrss_vf_actfeed"), 0, '');
// } // }
setTimeout("timeout()", 2*1000);
// scheduleFeedUpdate(true);
} }
function quickMenuGo() { function quickMenuGo() {
@ -493,3 +536,5 @@ function toggleDispRead() {
} }
} }