require 'pg' require 'common/roundcube_plugin' require 'mv/mv_plugin' class RoundcubeMv include RoundcubePlugin include MvPlugin def mv_user(src, dst) # It's obviously an error if the source user does not exist. It # would also be an error if the destination domain didn't exist; # however, Roundcube doesn't know about domains, so we let that slide. raise NonexistentUserError.new(src.to_s()) if not user_exists(src) # And it's an error if the destination user exists already. raise UserAlreadyExistsError.new(dst.to_s()) if user_exists(dst) sql_queries = ['UPDATE users SET username = $1 WHERE username = $2;'] connection = PGconn.connect(@db_host, @db_port, @db_opts, @db_tty, @db_name, @db_user, @db_pass) sql_queries.each do |sql_query| connection.query(sql_query, [dst.to_s(), src.to_s()]) end connection.close() end end