diff options
| author | Andrew Dolgov <fox@fakecake.org> | 2025-05-04 14:09:32 +0000 |
|---|---|---|
| committer | Andrew Dolgov <fox@fakecake.org> | 2025-05-04 14:09:32 +0000 |
| commit | 8f9f06e7c07bab3459d765224826db1f8b2a728e (patch) | |
| tree | a5f1fc733084345fac89c657878dbbf553e72adf | |
| parent | 4ce5e6e8e174fe9c46818272a6ba7fb455d718fa (diff) | |
| parent | 853864794a356bc47a62cde18443ea2796236fc8 (diff) | |
Merge branch 'feature/scheduled-task-no-update-users' into 'master'
Move DAEMON_UPDATE_LOGIN_LIMIT-related logging to a scheduled task, exclude disabled+readonly users
See merge request tt-rss/tt-rss!127
| -rw-r--r-- | classes/RSSUtils.php | 40 |
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(); |