X-Git-Url: http://gitweb.michael.orlitzky.com/?p=mailshears.git;a=blobdiff_plain;f=lib%2Fprune%2Fplugins%2Fdavical.rb;fp=lib%2Fprune%2Fplugins%2Fdavical.rb;h=ae21d9f186a859309fc58584e7d8d010c490b926;hp=0000000000000000000000000000000000000000;hb=e3826d8926e11763837a591986d453e9ef5d9dec;hpb=a6ae98f0423603445b621a8eaa17443c8d590b45 diff --git a/lib/prune/plugins/davical.rb b/lib/prune/plugins/davical.rb new file mode 100644 index 0000000..ae21d9f --- /dev/null +++ b/lib/prune/plugins/davical.rb @@ -0,0 +1,60 @@ +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