require 'pg' require 'common/davical_plugin' require 'prune/prune_plugin' require 'rm/plugins/davical' class DavicalPrune < DavicalRm # # DAViCal only supports Postgres, so even if we ever are # database-agnostic, this plugin can't be. # include DavicalPlugin include PrunePlugin def get_leftover_domains(db_domains) # AgenDAV doesn't have a concept of domains. return [] end def get_leftover_accounts(db_accounts) # Get a list of all users who have logged in to DAViCal. davical_accounts = self.get_davical_usernames() return davical_accounts - db_accounts end protected; def get_davical_usernames() usernames = [] begin connection = PGconn.connect(@db_host, @db_port, @db_opts, @db_tty, @db_name, @db_user, @db_pass) # User #1 is the super-user, and not tied to an email address. sql_query = 'SELECT username FROM usr WHERE user_no > 1;' connection.query(sql_query) do |result| usernames = result.field_values('username') end connection.close() rescue PGError => e # Pretend like we're database-agnostic in case we ever are. raise DatabaseError.new(e) end return usernames end end