+ $updater = new DbUpdater(Db::get(), DB_TYPE, SCHEMA_VERSION);
+
+ if ($updater->isUpdateRequired()) {
+ _debug("schema update required, version " . $updater->getSchemaVersion() . " to " . SCHEMA_VERSION);
+ _debug("WARNING: please backup your database before continuing.");
+ _debug("Type 'yes' to continue.");
+
+ if (read_stdin() != 'yes')
+ exit;
+
+ for ($i = $updater->getSchemaVersion() + 1; $i <= SCHEMA_VERSION; $i++) {
+ _debug("performing update up to version $i...");
+
+ $result = $updater->performUpdateTo($i, false);
+
+ _debug($result ? "OK!" : "FAILED!");
+
+ if (!$result) return;
+
+ }
+ } else {
+ _debug("update not required.");
+ }
+
+ }
+
+ if (isset($options["gen-search-idx"])) {
+ echo "Generating search index (stemming set to English)...\n";
+
+ $result = db_query("SELECT COUNT(id) AS count FROM ttrss_entries WHERE tsvector_combined IS NULL");
+ $count = db_fetch_result($result, 0, "count");
+
+ print "Articles to process: $count.\n";
+
+ $limit = 500;
+ $processed = 0;
+
+ while (true) {
+ $result = db_query("SELECT id, title, content FROM ttrss_entries WHERE tsvector_combined IS NULL ORDER BY id LIMIT $limit");
+
+ while ($line = db_fetch_assoc($result)) {
+ $tsvector_combined = db_escape_string(mb_substr($line['title'] . ' ' . strip_tags(str_replace('<', ' <', $line['content'])),
+ 0, 1000000));
+
+ db_query("UPDATE ttrss_entries SET tsvector_combined = to_tsvector('english', '$tsvector_combined') WHERE id = " . $line["id"]);
+ }
+
+ $processed += db_num_rows($result);
+ print "Processed $processed articles...\n";
+
+ if (db_num_rows($result) != $limit) {
+ echo "All done.\n";
+ break;
+ }
+ }