diff options
-rw-r--r-- | db-prefs.php | 2 | ||||
-rw-r--r-- | errors.php | 2 | ||||
-rw-r--r-- | functions.js | 9 | ||||
-rw-r--r-- | tt-rss.css | 9 | ||||
-rw-r--r-- | update.php | 189 |
5 files changed, 118 insertions, 93 deletions
diff --git a/db-prefs.php b/db-prefs.php index 07c4548d3..0858c2ce4 100644 --- a/db-prefs.php +++ b/db-prefs.php @@ -7,7 +7,7 @@ $_SESSION["prefs_cache"] = array(); } - function get_pref($link, $pref_name, $user_id = false, $die_on_error = true) { + function get_pref($link, $pref_name, $user_id = false, $die_on_error = false) { $pref_name = db_escape_string($pref_name); diff --git a/errors.php b/errors.php index 967bb4e33..bab8647d0 100644 --- a/errors.php +++ b/errors.php @@ -11,7 +11,7 @@ $ERRORS[4] = _("Frontend sanity check failed."); - $ERRORS[5] = _("Incorrect database schema version. <a href='update.php'>Please update</a>."); + $ERRORS[5] = _("Incorrect database schema version. <a href='update.php'>Please update</a>."); $ERRORS[6] = _("Request not authorized."); diff --git a/functions.js b/functions.js index 194d83157..de88e4e49 100644 --- a/functions.js +++ b/functions.js @@ -1526,16 +1526,17 @@ function storeInitParams(params, is_client) { function fatalError(code, message) { try { - if (code != 6) { - + if (code == 6) { + window.location.href = "login.php?rt=none"; + } else if (code == 5) { + window.location.href = "update.php"; + } else { var fe = document.getElementById("fatal_error"); var fc = document.getElementById("fatal_error_msg"); fc.innerHTML = "Code " + code + ": " + message; fe.style.display = "block"; - } else { - window.location.href = "login.php?rt=none"; } } catch (e) { diff --git a/tt-rss.css b/tt-rss.css index 2a131247f..37c222810 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -1061,6 +1061,15 @@ a.cdmToggleLink:hover { font-weight : normal; } +#fatal_error_msg a { + color : red; +} + +#fatal_error_msg a:hover { + color : red; + text-decoration : underline; +} + #noDaemonWarning { position : absolute; background-color : #ecf4ff; diff --git a/update.php b/update.php index 964626d7f..5b91bde32 100644 --- a/update.php +++ b/update.php @@ -1,139 +1,154 @@ <?php - require_once "sessions.php"; +require_once "sessions.php"; - require_once "sanity_check.php"; - require_once "functions.php"; - require_once "config.php"; - require_once "db.php"; +require_once "sanity_check.php"; +require_once "functions.php"; +require_once "config.php"; +require_once "db.php"; - $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); +$link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); - if (DB_TYPE == "pgsql") { - pg_query($link, "set client_encoding = 'utf-8'"); - pg_set_client_encoding("UNICODE"); - } +if (DB_TYPE == "pgsql") { + pg_query($link, "set client_encoding = 'utf-8'"); + pg_set_client_encoding("UNICODE"); +} - login_sequence($link); +login_sequence($link); - $owner_uid = $_SESSION["uid"]; +$owner_uid = $_SESSION["uid"]; - if ($_SESSION["access_level"] < 10) { - header("Location: login.php"); die; - } +if ($_SESSION["access_level"] < 10) { + header("Location: login.php"); die; +} - define('SCHEMA_VERSION', 13); +define('SCHEMA_VERSION', 13); ?> <html> <head> - <title>Database Updater</title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> - <link rel="stylesheet" type="text/css" href="update.css"> +<title>Database Updater</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<link rel="stylesheet" type="text/css" href="update.css"> </head> <body> +<script type='text/javascript'> +function confirmOP() { + return confirm("Update the database?"); +} +</script> + <h1>Database Updater</h1> <?php - function getline($fp, $delim) { - $result = ""; - while(!feof($fp)) { - $tmp = fgetc($fp); +function getline($fp, $delim) { + $result = ""; + while(!feof($fp)) { + $tmp = fgetc($fp); - if($tmp == $delim) { - return $result; - } - $result .= $tmp; + if($tmp == $delim) { + return $result; } - return $result; + $result .= $tmp; } + return $result; +} - $op = $_REQUEST["op"]; - - $result = db_query($link, "SELECT schema_version FROM ttrss_version"); - $version = db_fetch_result($result, 0, "schema_version"); +$op = $_POST["op"]; - $update_files = glob("schema/versions/".DB_TYPE."/*sql"); - $update_versions = array(); +$result = db_query($link, "SELECT schema_version FROM ttrss_version"); +$version = db_fetch_result($result, 0, "schema_version"); - foreach ($update_files as $f) { - $m = array(); - preg_match_all("/schema\/versions\/".DB_TYPE."\/(\d*)\.sql/", $f, $m, - PREG_PATTERN_ORDER); +$update_files = glob("schema/versions/".DB_TYPE."/*sql"); +$update_versions = array(); - if ($m[1][0]) { - $update_versions[$m[1][0]] = $f; - } +foreach ($update_files as $f) { + $m = array(); + preg_match_all("/schema\/versions\/".DB_TYPE."\/(\d*)\.sql/", $f, $m, + PREG_PATTERN_ORDER); + + if ($m[1][0]) { + $update_versions[$m[1][0]] = $f; } +} - ksort($update_versions, SORT_NUMERIC); +ksort($update_versions, SORT_NUMERIC); - $latest_version = max(array_keys($update_versions)); +$latest_version = max(array_keys($update_versions)); - if ($version == $latest_version) { - print "Database schema is up to date (version $version)."; - return; - } +if ($version == $latest_version) { + print "<p>Tiny Tiny RSS database is up to date (version $version).</p>"; + print "<p><a href='tt-rss.php'>Return to Tiny Tiny RSS</a></p>"; + return; +} - if (!$op) { - print "<p class='warning'><b>Warning:</b> Please backup your database before proceeding.</p>"; +if (!$op) { + print "<p class='warning'><b>Warning:</b> Please backup your database before proceeding.</p>"; - print "<p>Your database schema version is $version. Latest version is ". - "$latest_version.</p>"; + print "<p>Your Tiny Tiny RSS database needs update to the latest + version ($version —> $latest_version).</p>"; - print "<p>Available incremental updates:"; +/* print "<p>Available incremental updates:"; - foreach (array_keys($update_versions) as $v) { - if ($v > $version) { - print " <a href='$update_versions[$v]'>$v</a>"; - } + foreach (array_keys($update_versions) as $v) { + if ($v > $version) { + print " <a href='$update_versions[$v]'>$v</a>"; } + } */ + + print "</p>"; - print "</p>"; - print "<a href='update.php?op=do'>Click here to perform updates.</a>"; + print "<form method='POST'> + <input type='hidden' name='op' value='do'> + <input type='submit' onclick='return confirmOP()' value='Perform updates'> + </form>"; - } else if ($op == "do") { +} else if ($op == "do") { - print "<p>Performing updates (version: $version)...</p>"; + print "<p>Performing updates (from version $version)...</p>"; - $num_updates = 0; + $num_updates = 0; - foreach (array_keys($update_versions) as $v) { - if ($v == $version + 1) { - print "<p>Updating to version $v...</p>"; - $fp = fopen($update_versions[$v], "r"); - if ($fp) { - while (!feof($fp)) { - $query = trim(getline($fp, ";")); - if ($query != "") { - print "<p class='query'><b>QUERY:</b> $query</p>"; - db_query($link, $query); - } + foreach (array_keys($update_versions) as $v) { + if ($v == $version + 1) { + print "<p>Updating to version $v...</p>"; + $fp = fopen($update_versions[$v], "r"); + if ($fp) { + while (!feof($fp)) { + $query = trim(getline($fp, ";")); + if ($query != "") { + print "<p class='query'><b>QUERY:</b> $query</p>"; + db_query($link, $query); } } - fclose($fp); - - print "<p>Checking version... "; + } + fclose($fp); - $result = db_query($link, "SELECT schema_version FROM ttrss_version"); - $version = db_fetch_result($result, 0, "schema_version"); + print "<p>Checking version... "; - if ($version == $v) { - print "OK!"; - } else { - print "<b>ERROR!</b>"; - return; - } + $result = db_query($link, "SELECT schema_version FROM ttrss_version"); + $version = db_fetch_result($result, 0, "schema_version"); - $num_updates++; + if ($version == $v) { + print "OK! ($version)"; + } else { + print "<b>ERROR!</b>"; + return; } - } - print "<p>Finished. Performed $num_updates updates up to schema - version $version.</p>"; + $num_updates++; + } } + + print "<p>Finished. Performed $num_updates updates up to schema + version $version.</p>"; + + print "<p><a href='tt-rss.php'>Return to Tiny Tiny RSS</a></p>"; + +} + ?> |