]> andersk Git - moira.git/blob - gen/confluence.gen
83eac3029ba7265c54bead268c6b57e9b8dd557c
[moira.git] / gen / confluence.gen
1 #!/moira/bin/perl -Tw
2
3 # $Id$
4
5 # The following exit codes are defined and MUST BE CONSISTENT with the
6 # error codes the library uses:
7 $MR_DBMS_ERR = 47836421;
8
9 $ENV{PATH} = "/bin:/usr/bin:/sbin:/usr/sbin";
10
11 $outfile = '/moira/dcm/confluence.out';
12 umask 022;
13
14 use DBI;
15
16 $dbh = DBI->connect("dbi:Oracle:moira", "moira", "moira")
17   || exit $MR_DBMS_ERR;
18
19 open(OUT, ">$outfile");
20
21 $sth = $dbh->prepare("SELECT l.name, l.gid FROM list l " .
22                      "WHERE l.active = 1 AND l.grouplist = 1 ORDER by l.name")
23     || exit $MR_DBMS_ERR;
24
25 $sth->execute;
26     
27 while (($name, $gid) = $sth->fetchrow_array) {
28     $sth2 = $dbh->prepare("SELECT UNIQUE i.member_type, i.member_id " .
29                           "FROM imembers i, list l " .
30                           "WHERE l.name = " . $dbh->quote($name) .
31                           "AND i.list_id = l.list_id " .
32                           "AND (i.member_type = 'USER' " .
33                           "OR i.member_type = 'STRING')") || 
34                           exit $MR_DBMS_ERR;
35     $sth2->execute;
36     
37     $row = "$name:$gid:";
38     $row =~ s/\0//g;
39     print OUT $row;
40     $maybecomma = "";
41     
42     while (($type, $id) = $sth2->fetchrow_array) {
43         if ($type eq "USER") {
44             ($member) = $dbh->selectrow_array("SELECT login FROM users " .
45                                               "WHERE users_id = " . 
46                                               $dbh->quote($id)) ||
47                                               exit $MR_DBMS_ERR;
48             $member = $member . "\@mit.edu";
49         }
50         elsif ($type eq "STRING") {
51             ($member) = $dbh->selectrow_array("SELECT string " .
52                                               "FROM strings " .
53                                               "WHERE string_id = " .
54                                               $dbh->quote($id)) ||
55                                               exit $MR_DBMS_ERR;
56         }
57         $row = "$maybecomma$member";
58         $row =~ s/\0//g;
59         print OUT $row;
60         $maybecomma = ",";
61     }
62     
63     $row = "\n";
64     $row =~ s/\0//g;
65     print OUT $row;
66 }
67
68 close(OUT);
69 $dbh->disconnect;
70
71 exit 0;
This page took 0.031267 seconds and 3 git commands to generate.