#!/usr/bin/perl -w # -*- perl -*- use P4CGI ; use strict ; # ################################################################# # CONFIGURATION INFORMATION # All config info should be in P4CGI.pm # ################################################################# # # P4 list all users # List p4 users # ################################################################# my $GROUPSONLY = P4CGI::cgi()->param("GROUPSONLY") ; sub weeksago($$$ ) { my ($y,$m,$d) = @_ ; $y -= 1900 ; $m-- ; my $_now = time() ; my $_then = $_now ; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($_then); if(($y > $year) or (($y == $year) and ($m > $mon)) or (($y == $year) and ($m == $mon) and ($d > $mday))) { return 0 ; } while(1) { ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($_then); if(($y == $year) and ($m == $mon) and ($d == $mday)) { return int(( $_now - $_then)/(3600*24*7)) ; } $_then -= 3600*24 ; } ; } &P4CGI::SET_HELP_TARGET("userList") ; # Get users my @users ; &P4CGI::p4call(\@users, "users" ); # Get groups my @groups ; &P4CGI::p4call(\@groups, "groups" ); my $emailall ; my $usertable = "" ; unless(defined $GROUPSONLY) { $usertable .= join("\n",("<B>",scalar(@users)," users:<br></B>", &P4CGI::start_table("cellpadding=1"), &P4CGI::table_header("User/view user", "Name", "e-mail address/send email", "Last access"))) ; my $userinfo ; foreach $userinfo (sort { uc($a) cmp uc($b) } @users) { $userinfo =~ /(\w+)\s+\<(.*)\>\s+\((.*)\) accessed (\S+)/ and do { my ($user,$email,$name,$lastaccess) = ($1,$2,$3,$4) ; $user = &P4CGI::ahref(-url => "userView.cgi", "USER=$user", $user) ; $email =~ /\w+\@\w+/ and do { if(defined $emailall) { $emailall .= ",$email" ; } else { $emailall = "mailto:$email" ; } ; $email = &P4CGI::ahref(-url => "mailto:$email", $email) ; } ; my $weeksOld = "" ; if($lastaccess =~ /(\d\d\d\d)\/(\d\d)\/(\d\d)/) { $weeksOld = weeksago($1,$2,$3) ; if($weeksOld > 10) { $weeksOld = "<b>Not used for $weeksOld weeks!</b>" ; } else { $weeksOld = "" ; } } $usertable .= &P4CGI::table_row($user, $name, $email, $lastaccess, $weeksOld) ; } } $usertable .= &P4CGI::end_table() ; } ; if(@groups > 0) { my $g = @groups == 1?"group":"groups" ; my $n = @groups ; $usertable .= "<B>$n $g</B><br>" ; $usertable .= &P4CGI::start_table("cellpadding=1") ; $usertable .= &P4CGI::table_header("Group/view group"); foreach (@groups) { $usertable .= &P4CGI::table_row(&P4CGI::ahref(-url => "groupView.cgi", "GROUP=$_", $_)) ; } $usertable .= &P4CGI::end_table() ; } my @legend ; unless(defined $GROUPSONLY) { push @legend ,("<b>user</b> -- see more info", "<b>e-mail address</b> -- e-mail user", &P4CGI::ahref(-url => $emailall, "<b>Email all users</b>")) ; } ; push @legend,"<b>group</b> -- details about group" if @groups > 0 ; unless(defined $GROUPSONLY) { push @legend, &P4CGI::ahref("GROUPSONLY=Y", "<b>Groups only</b>") ; } print "", &P4CGI::start_page(defined $GROUPSONLY ? "P4 Groups":@groups > 0?"P4 Users and Groups":"P4 Users", &P4CGI::ul_list(@legend)), $usertable, &P4CGI::end_page() ; # # That's all folks #