]>
gitweb.michael.orlitzky.com - mailshears.git/blob - lib/common/davical_plugin.rb
1 require 'common/plugin'
4 # Code that all DAViCal plugins ({DavicalPrune}, {DavicalRm}, and
5 # {DavicalMv}) will share.
9 # We implement the Plugin "interface."
12 # Initialize this DAViCal {Plugin} with values in *cfg*.
14 # @param cfg [Configuration] the configuration for this plugin.
17 @db_host = cfg
.davical_dbhost
18 @db_port = cfg
.davical_dbport
19 @db_opts = cfg
.davical_dbopts
20 @db_tty = cfg
.davical_dbtty
21 @db_name = cfg
.davical_dbname
22 @db_user = cfg
.davical_dbuser
23 @db_pass = cfg
.davical_dbpass
27 # Describe the given DAViCal user who is assumed to exist.
29 # @param user [User] the {User} object whose description we want.
31 # @return [String] a String describing the given *user* in terms
32 # of his DAViCal "Principal ID".
34 def describe_user(user
)
35 principal_id
= self.get_principal_id(user
)
36 return "Principal ID: #{principal_id}"
41 # Produce a list of DAViCal users.
43 # This method remains public for use in testing.
45 # @return [Array<User>] an array of {User} objects, one for each
46 # user found in the DAViCal database.
51 connection
= PGconn
.connect(@db_host, @db_port, @db_opts, @db_tty,
52 @db_name, @db_user, @db_pass)
54 # User #1 is the super-user, and not tied to an email address.
55 sql_query
= 'SELECT username FROM usr WHERE user_no > 1'
57 connection
.query(sql_query
) do |result
|
58 usernames
= result
.field_values('username')
63 return usernames
.map
{ |u
| User
.new(u
) }
70 # Find the "Principal ID" of the given user.
72 # @param user [User] the user whose Principal ID we want.
74 # @return [Fixnum] an integer representing the user's Principal ID
75 # that we obtained from the DAViCal database.
77 def get_principal_id(user
)
80 connection
= PGconn
.connect(@db_host, @db_port, @db_opts, @db_tty,
81 @db_name, @db_user, @db_pass)
83 sql_query
= 'SELECT principal.principal_id '
84 sql_query +
= 'FROM (principal INNER JOIN usr '
85 sql_query +
= ' ON principal.user_no = usr.user_no) '
86 sql_query +
= 'WHERE usr.username = $1;'
88 connection
.query(sql_query
, [user
.to_s()]) do |result
|
89 if result
.num_tuples
> 0
90 principal_id
= result
[0]['principal_id']