28 lines
981 B
Ruby
28 lines
981 B
Ruby
# frozen_string_literal: true
|
|
|
|
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
|
|
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
|
|
module QueryEmailSettings
|
|
Settings = %w[notify_payments notify_campaigns notify_events notify_payouts notify_recurring_donations].freeze
|
|
|
|
def self.fetch(np_id, user_id)
|
|
es = Psql.execute(%(
|
|
SELECT *
|
|
FROM email_settings
|
|
WHERE nonprofit_id=#{Qexpr.quote(np_id.to_i)}
|
|
AND user_id=#{Qexpr.quote(user_id.to_i)}
|
|
)).first
|
|
|
|
# If the user's event_settings table does not exist, return a hash with all settings true
|
|
if es.nil?
|
|
es = Psql.execute(%(
|
|
SELECT column_name
|
|
FROM information_schema.columns
|
|
WHERE table_name='email_settings'
|
|
)).map { |h| h['column_name'] }
|
|
.reject { |name| %w[id nonprofit_id user_id].include?(name) }
|
|
.each_with_object({}) { |name, h| h[name] = true; }
|
|
end
|
|
es
|
|
end
|
|
end
|