summaryrefslogtreecommitdiff
path: root/classes/rpc.php
diff options
context:
space:
mode:
Diffstat (limited to 'classes/rpc.php')
-rwxr-xr-xclasses/rpc.php119
1 files changed, 78 insertions, 41 deletions
diff --git a/classes/rpc.php b/classes/rpc.php
index 8945823c6..aaaf4f8d5 100755
--- a/classes/rpc.php
+++ b/classes/rpc.php
@@ -7,6 +7,36 @@ class RPC extends Handler_Protected {
return array_search($method, $csrf_ignored) !== false;
}*/
+ private function _translations_as_array() {
+
+ global $text_domains;
+
+ $rv = [];
+
+ foreach (array_keys($text_domains) as $domain) {
+
+ /** @var gettext_reader $l10n */
+ $l10n = _get_reader($domain);
+
+ for ($i = 0; $i < $l10n->total; $i++) {
+ if (isset($l10n->table_originals[$i * 2 + 2]) && $orig = $l10n->get_original_string($i)) {
+ if(strpos($orig, "\000") !== false) { // Plural forms
+ $key = explode(chr(0), $orig);
+
+ $rv[$key[0]] = _ngettext($key[0], $key[1], 1); // Singular
+ $rv[$key[1]] = _ngettext($key[0], $key[1], 2); // Plural
+ } else {
+ $translation = _dgettext($domain,$orig);
+ $rv[$orig] = $translation;
+ }
+ }
+ }
+ }
+
+ return $rv;
+ }
+
+
function togglepref() {
$key = clean($_REQUEST["key"]);
set_pref($key, !get_pref($key));
@@ -20,7 +50,7 @@ class RPC extends Handler_Protected {
$key = clean($_REQUEST['key']);
$value = $_REQUEST['value'];
- set_pref($key, $value, false, $key != 'USER_STYLESHEET');
+ set_pref($key, $value, $_SESSION["uid"], $key != 'USER_STYLESHEET');
print json_encode(array("param" =>$key, "value" => $value));
}
@@ -66,7 +96,7 @@ class RPC extends Handler_Protected {
function getRuntimeInfo() {
$reply = [
- 'runtime-info' => $this->make_runtime_info()
+ 'runtime-info' => $this->_make_runtime_info()
];
print json_encode($reply);
@@ -91,7 +121,6 @@ class RPC extends Handler_Protected {
else
$label_ids = array_map("intval", clean($_REQUEST["label_ids"] ?? []));
- // @phpstan-ignore-next-line
$counters = is_array($feed_ids) ? Counters::get_conditional($feed_ids, $label_ids) : Counters::get_all();
$reply = [
@@ -141,15 +170,16 @@ class RPC extends Handler_Protected {
$error = Errors::E_SUCCESS;
- if (get_schema_version(true) != SCHEMA_VERSION) {
+ if (get_schema_version() != SCHEMA_VERSION) {
$error = Errors::E_SCHEMA_MISMATCH;
}
if ($error == Errors::E_SUCCESS) {
$reply = [];
- $reply['init-params'] = $this->make_init_params();
- $reply['runtime-info'] = $this->make_runtime_info();
+ $reply['init-params'] = $this->_make_init_params();
+ $reply['runtime-info'] = $this->_make_runtime_info();
+ $reply['translations'] = $this->_translations_as_array();
print json_encode($reply);
} else {
@@ -201,36 +231,42 @@ class RPC extends Handler_Protected {
static function updaterandomfeed_real() {
+ $default_interval = (int) Prefs::get_default(Prefs::DEFAULT_UPDATE_INTERVAL);
+
// Test if the feed need a update (update interval exceded).
if (Config::get(Config::DB_TYPE) == "pgsql") {
$update_limit_qpart = "AND ((
- ttrss_feeds.update_interval = 0
- AND ttrss_feeds.last_updated < NOW() - CAST((ttrss_user_prefs.value || ' minutes') AS INTERVAL)
+ update_interval = 0
+ AND p.value != '-1'
+ AND last_updated < NOW() - CAST((COALESCE(p.value, '$default_interval') || ' minutes') AS INTERVAL)
) OR (
- ttrss_feeds.update_interval > 0
- AND ttrss_feeds.last_updated < NOW() - CAST((ttrss_feeds.update_interval || ' minutes') AS INTERVAL)
+ update_interval > 0
+ AND last_updated < NOW() - CAST((update_interval || ' minutes') AS INTERVAL)
) OR (
- ttrss_feeds.update_interval >= 0
- AND (last_updated = '1970-01-01 00:00:00' OR last_updated IS NULL)
+ update_interval >= 0
+ AND p.value != '-1'
+ AND (last_updated = '1970-01-01 00:00:00' OR last_updated IS NULL)
))";
} else {
$update_limit_qpart = "AND ((
- ttrss_feeds.update_interval = 0
- AND ttrss_feeds.last_updated < DATE_SUB(NOW(), INTERVAL CONVERT(ttrss_user_prefs.value, SIGNED INTEGER) MINUTE)
+ update_interval = 0
+ AND p.value != '-1'
+ AND last_updated < DATE_SUB(NOW(), INTERVAL CONVERT(COALESCE(p.value, '$default_interval'), SIGNED INTEGER) MINUTE)
) OR (
- ttrss_feeds.update_interval > 0
- AND ttrss_feeds.last_updated < DATE_SUB(NOW(), INTERVAL ttrss_feeds.update_interval MINUTE)
+ update_interval > 0
+ AND last_updated < DATE_SUB(NOW(), INTERVAL update_interval MINUTE)
) OR (
- ttrss_feeds.update_interval >= 0
- AND (last_updated = '1970-01-01 00:00:00' OR last_updated IS NULL)
+ update_interval >= 0
+ AND p.value != '-1'
+ AND (last_updated = '1970-01-01 00:00:00' OR last_updated IS NULL)
))";
}
// Test if feed is currently being updated by another process.
if (Config::get(Config::DB_TYPE) == "pgsql") {
- $updstart_thresh_qpart = "AND (ttrss_feeds.last_update_started IS NULL OR ttrss_feeds.last_update_started < NOW() - INTERVAL '5 minutes')";
+ $updstart_thresh_qpart = "AND (last_update_started IS NULL OR last_update_started < NOW() - INTERVAL '5 minutes')";
} else {
- $updstart_thresh_qpart = "AND (ttrss_feeds.last_update_started IS NULL OR ttrss_feeds.last_update_started < DATE_SUB(NOW(), INTERVAL 5 MINUTE))";
+ $updstart_thresh_qpart = "AND (last_update_started IS NULL OR last_update_started < DATE_SUB(NOW(), INTERVAL 5 MINUTE))";
}
$random_qpart = Db::sql_random_function();
@@ -238,24 +274,24 @@ class RPC extends Handler_Protected {
$pdo = Db::pdo();
// we could be invoked from public.php with no active session
- if ($_SESSION["uid"]) {
- $owner_check_qpart = "AND ttrss_feeds.owner_uid = ".$pdo->quote($_SESSION["uid"]);
+ if (!empty($_SESSION["uid"])) {
+ $owner_check_qpart = "AND f.owner_uid = ".$pdo->quote($_SESSION["uid"]);
} else {
$owner_check_qpart = "";
}
- // We search for feed needing update.
- $res = $pdo->query("SELECT ttrss_feeds.feed_url,ttrss_feeds.id
+ $query = "SELECT f.feed_url,f.id
FROM
- ttrss_feeds, ttrss_users, ttrss_user_prefs
+ ttrss_feeds f, ttrss_users u LEFT JOIN ttrss_user_prefs2 p ON
+ (p.owner_uid = u.id AND profile IS NULL AND pref_name = 'DEFAULT_UPDATE_INTERVAL')
WHERE
- ttrss_feeds.owner_uid = ttrss_users.id
- AND ttrss_users.id = ttrss_user_prefs.owner_uid
- AND ttrss_user_prefs.pref_name = 'DEFAULT_UPDATE_INTERVAL'
+ f.owner_uid = u.id
$owner_check_qpart
$update_limit_qpart
$updstart_thresh_qpart
- ORDER BY $random_qpart LIMIT 30");
+ ORDER BY $random_qpart LIMIT 30";
+
+ $res = $pdo->query($query);
$num_updated = 0;
@@ -338,7 +374,7 @@ class RPC extends Handler_Protected {
$context = clean($_REQUEST['context']);
if ($msg) {
- Logger::get()->log_error(E_USER_WARNING,
+ Logger::log_error(E_USER_WARNING,
$msg, 'client-js:' . $file, $line, $context);
echo json_encode(array("message" => "HOST_ERROR_LOGGED"));
@@ -372,13 +408,14 @@ class RPC extends Handler_Protected {
print json_encode($rv);
}
- private function make_init_params() {
+ private function _make_init_params() {
$params = array();
- foreach (array("ON_CATCHUP_SHOW_NEXT_FEED", "HIDE_READ_FEEDS",
- "ENABLE_FEED_CATS", "FEEDS_SORT_BY_UNREAD", "CONFIRM_FEED_CATCHUP",
- "CDM_AUTO_CATCHUP", "FRESH_ARTICLE_MAX_AGE",
- "HIDE_READ_SHOWS_SPECIAL", "COMBINED_DISPLAY_MODE") as $param) {
+ foreach ([Prefs::ON_CATCHUP_SHOW_NEXT_FEED, Prefs::HIDE_READ_FEEDS,
+ Prefs::ENABLE_FEED_CATS, Prefs::FEEDS_SORT_BY_UNREAD,
+ Prefs::CONFIRM_FEED_CATCHUP, Prefs::CDM_AUTO_CATCHUP,
+ Prefs::FRESH_ARTICLE_MAX_AGE, Prefs::HIDE_READ_SHOWS_SPECIAL,
+ Prefs::COMBINED_DISPLAY_MODE, Prefs::DEBUG_HEADLINE_IDS] as $param) {
$params[strtolower($param)] = (int) get_pref($param);
}
@@ -387,14 +424,14 @@ class RPC extends Handler_Protected {
$params["check_for_updates"] = Config::get(Config::CHECK_FOR_UPDATES);
$params["icons_url"] = Config::get(Config::ICONS_URL);
$params["cookie_lifetime"] = Config::get(Config::SESSION_COOKIE_LIFETIME);
- $params["default_view_mode"] = get_pref("_DEFAULT_VIEW_MODE");
- $params["default_view_limit"] = (int) get_pref("_DEFAULT_VIEW_LIMIT");
- $params["default_view_order_by"] = get_pref("_DEFAULT_VIEW_ORDER_BY");
+ $params["default_view_mode"] = get_pref(Prefs::_DEFAULT_VIEW_MODE);
+ $params["default_view_limit"] = (int) get_pref(Prefs::_DEFAULT_VIEW_LIMIT);
+ $params["default_view_order_by"] = get_pref(Prefs::_DEFAULT_VIEW_ORDER_BY);
$params["bw_limit"] = (int) $_SESSION["bw_limit"];
$params["is_default_pw"] = Pref_Prefs::isdefaultpassword();
$params["label_base_index"] = LABEL_BASE_INDEX;
- $theme = get_pref( "USER_CSS_THEME", false, false);
+ $theme = get_pref(Prefs::USER_CSS_THEME);
$params["theme"] = theme_exists($theme) ? $theme : "";
$params["plugins"] = implode(", ", PluginHost::getInstance()->get_plugin_names());
@@ -434,7 +471,7 @@ class RPC extends Handler_Protected {
}
}
- static function make_runtime_info() {
+ static function _make_runtime_info() {
$data = array();
$pdo = Db::pdo();
@@ -449,7 +486,7 @@ class RPC extends Handler_Protected {
$data["max_feed_id"] = (int) $max_feed_id;
$data["num_feeds"] = (int) $num_feeds;
- $data['cdm_expanded'] = get_pref('CDM_EXPANDED');
+ $data['cdm_expanded'] = get_pref(Prefs::CDM_EXPANDED);
$data["labels"] = Labels::get_all($_SESSION["uid"]);
if (Config::get(Config::LOG_DESTINATION) == 'sql' && $_SESSION['access_level'] >= 10) {