summaryrefslogtreecommitdiff
path: root/classes/RSSUtils.php
diff options
context:
space:
mode:
authorwn_ <invalid@email.com>2025-05-04 13:28:09 +0000
committerwn_ <invalid@email.com>2025-05-04 13:28:09 +0000
commit853864794a356bc47a62cde18443ea2796236fc8 (patch)
treea5f1fc733084345fac89c657878dbbf553e72adf /classes/RSSUtils.php
parent4ce5e6e8e174fe9c46818272a6ba7fb455d718fa (diff)
Move logging users excluded from updates to a daily scheduled task, exclude disabled or readonly users.
Diffstat (limited to 'classes/RSSUtils.php')
-rw-r--r--classes/RSSUtils.php40
1 files changed, 24 insertions, 16 deletions
diff --git a/classes/RSSUtils.php b/classes/RSSUtils.php
index a051a7dc2..b0cfc4823 100644
--- a/classes/RSSUtils.php
+++ b/classes/RSSUtils.php
@@ -93,22 +93,7 @@ class RSSUtils {
}
if (!Config::get(Config::SINGLE_USER_MODE) && Config::get(Config::DAEMON_UPDATE_LOGIN_LIMIT) > 0) {
- $login_limit = (int) Config::get(Config::DAEMON_UPDATE_LOGIN_LIMIT);
-
- $login_thresh_qpart = 'AND ' . Db::past_comparison_qpart('last_login', '>=', $login_limit, 'day');
- $not_logged_in_users_query = Db::past_comparison_qpart('last_login', '<', $login_limit, 'day');
-
- $not_logged_in_users = ORM::for_table('ttrss_users')
- ->where_raw($not_logged_in_users_query)
- ->find_many();
-
- if (count($not_logged_in_users) > 0) {
- Debug::log("feeds will not be updated for these users because of DAEMON_UPDATE_LOGIN_LIMIT check ({$login_limit} days):");
- foreach ($not_logged_in_users as $user) {
- Debug::log("=> {$user->login}, last logged in: {$user->last_login}");
- }
- }
-
+ $login_thresh_qpart = 'AND ' . Db::past_comparison_qpart('last_login', '>=', Config::get(Config::DAEMON_UPDATE_LOGIN_LIMIT), 'day');
} else {
$login_thresh_qpart = "";
}
@@ -1758,6 +1743,29 @@ class RSSUtils {
}
);
+ $scheduler->add_scheduled_task('log_daemon_update_login_limit_users', '@daily',
+ function() {
+ $login_limit = Config::get(Config::DAEMON_UPDATE_LOGIN_LIMIT);
+
+ if (!Config::get(Config::SINGLE_USER_MODE) && $login_limit > 0) {
+ $not_logged_in_users = ORM::for_table('ttrss_users')
+ ->select_many('login', 'last_login')
+ ->where_not_in('access_level', [UserHelper::ACCESS_LEVEL_DISABLED, UserHelper::ACCESS_LEVEL_READONLY])
+ ->where_raw("last_login < NOW() - INTERVAL '$login_limit days'")
+ ->find_many();
+
+ if (count($not_logged_in_users) > 0) {
+ Debug::log("Feeds will not be updated for these users because of DAEMON_UPDATE_LOGIN_LIMIT check ({$login_limit} days):");
+ foreach ($not_logged_in_users as $user) {
+ Debug::log("=> {$user->login}, last logged in: {$user->last_login}");
+ }
+ }
+ }
+
+ return 0;
+ }
+ );
+
$scheduler->add_scheduled_task('expire_error_log', '@hourly',
function() {
self::expire_error_log();