#!/usr/bin/perl # # # Script which creates a bunch of mailing lists based on # users roles in scarab modules. # # TURBINE roles: # # +---------+---------------+ # | ROLE_ID | ROLE_NAME | # +---------+---------------+ # | 2 | Partner | # | 3 | Observer | # | 4 | Developer | # | 5 | QA | # | 6 | Project Owner | # | 7 | Root | # +---------+---------------+ # # use DBI; use miscsql; require "login.sub"; use strict; # # working in this directory # my $working_dir = "files"; # # file extension we're using for output files # my $file_ext = ".lst"; # # Grab a list of files to delete first # opendir(DIR, $working_dir) or die "Couldn't open $working_dir for reading: $!"; # # delete existing list files # while (my $file = readdir(DIR)) { if($file =~ "$file_ext\$") { unlink("$working_dir/$file"); } } close(DIR); my $modules = &sqlSelectMany("GROUP_ID, USER_ID, ROLE_ID", "TURBINE_USER_GROUP_ROLE", "GROUP_ID != 0", "order by GROUP_ID"); while (my ($module_id, $user_id, $role) = $modules->fetchrow()) { my ($curr_mod, $mod_name) = &sqlSelect("MODULE_CODE, MODULE_NAME", "SCARAB_MODULE", "MODULE_ID=$module_id"); my ($email, $fname, $lname) = &sqlSelect("EMAIL, FIRST_NAME, LAST_NAME", "TURBINE_USER", "USER_ID=$user_id and CONFIRM_VALUE='CONFIRMED'"); my ($perm, $rid) = &sqlSelect("ROLE_NAME, ROLE_ID", "TURBINE_ROLE", "ROLE_ID=$role"); $curr_mod = no_blanks($curr_mod); $perm = no_blanks($perm); if($email eq "") { open (EMPTY_EMAILS, ">>$working_dir\/empty_email_addr"); print EMPTY_EMAILS "$user_id ($lname, $fname) $email\n"; close(EMPTY_EMAILS); } elsif($curr_mod eq "") { open (INVALID_MODULE, ">>$working_dir\/invalid_module_list"); print INVALID_MODULE "$module_id\n"; close(INVALID_MODULE); } else { open(ALIAS_FILE, ">>$working_dir\/$curr_mod\-$perm$file_ext"); print ALIAS_FILE "$email\n"; close(ALIAS_FILE); } } $modules->finish(); sub no_blanks { my @out = @_; for (@out) { s/^\s+//; s/\s+$//; s/\s/_/; } return wantarray ? @out : $out[0]; }