17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'app/jobs/scheduled/enqueue_digest_emails.rb', line 17
def target_user_ids
query =
User
.real
.activated
.not_staged
.not_suspended
.joins(:user_option, :user_stat, :user_emails)
.where("user_options.email_digests")
.where(
"COALESCE(user_options.digest_after_minutes, ?) > 0",
SiteSetting.default_email_digest_frequency,
)
.where("user_stats.bounce_score < ?", SiteSetting.bounce_score_threshold)
.where("user_emails.primary")
.where(
"COALESCE(user_stats.digest_attempted_at, '2010-01-01') <= CURRENT_TIMESTAMP - ('1 MINUTE'::INTERVAL * COALESCE(user_options.digest_after_minutes, ?))",
SiteSetting.default_email_digest_frequency,
)
.where(
"COALESCE(last_seen_at, '2010-01-01') <= CURRENT_TIMESTAMP - ('1 MINUTE'::INTERVAL * COALESCE(user_options.digest_after_minutes, ?))",
SiteSetting.default_email_digest_frequency,
)
.where(
"COALESCE(last_seen_at, '2010-01-01') >= CURRENT_TIMESTAMP - ('1 DAY'::INTERVAL * ?)",
SiteSetting.suppress_digest_email_after_days,
)
.order("user_stats.digest_attempted_at ASC NULLS FIRST")
query = query.where("approved OR moderator OR admin") if SiteSetting.must_approve_users?
query = query.limit(GlobalSetting.max_digests_enqueued_per_30_mins_per_site)
query.pluck(:id)
end
|