#!/usr/local/bin/perl5 # -*- perl -*- use P4CGI ; use strict ; # ##################################################################### ## ## CONFIGURATION INFORMATION ## All config info should be in $configFile (see init() in P4CGI.pm) ## ##################################################################### ## ## List User ## ##################################################################### # Set back references my $homepage="index.cgi"; my $backtohome="Back to Home" ; # Get user name my $user = P4CGI::cgi()->param("USER") ; unless(defined $user) { &P4CGI::bail("No user specified.") ; } # See if they want to see their clients my $showclients = P4CGI::cgi()->param("CLIENTS") ; # Get user info local *P4 ; &P4CGI::p4call(*P4, "user -o $user" ); my $email ; my $update ; my $access ; my $fullname ; my $jobview ; my $reviews ; while(<P4>) { chomp ; next if /^#/ ; next if /^\s*$/ ; /^Email:\s(\S+)/ and do { $email=&P4CGI::ahref(-url => "mailto:$1",$1) ; } ; /^Update:\s(.*)$/ and do { $update=$1 ; } ; /^Access:\s(.*)$/ and do { $access=$1 ; } ; /^FullName:\s(.*)$/ and do { $fullname=$1 ; } ; /^JobView:\s(.*)$/ and do { $jobview=$1 ; } ; last if /^Reviews:/ ; } while(<P4>) { chomp ; s/^\t// ; if( defined $reviews ) { $reviews .= "\n$_" ; } else { $reviews = "$_" ; } } close P4 ; $reviews = "" unless defined $reviews ; # Print title and legend if( defined $showclients ) { print "", &P4CGI::start_page("P4 User Information", &P4CGI::ul_list("<b>Email:</b> to send mail to user", "<b>Client:</b> to see P4 client info", "<b>Filename:</b> to see complete file history"), $homepage,$backtohome) ; } else { print "", &P4CGI::start_page("P4 User Information", &P4CGI::ul_list("<b>Email:</b> to send mail to user", "<b>Filename:</b> to see complete file history", "<hr>", &P4CGI::ahref(-url => "lu.cgi", "USER=$user", "CLIENTS=yes", "<b>Display user's clients</b>")), $homepage,$backtohome) ; } # Print user print "", "<b>User:</b><font color=green> $user ($fullname)</font>" ; # Print user info print &P4CGI::start_table(""), &P4CGI::table_row({-align => "right", -type => "th", -text => "Email:"}, $email), &P4CGI::table_row({-align => "right", -type => "th", -text => "Update:"}, $update), &P4CGI::table_row({-align => "right", -type => "th", -text => "Access:"}, $access), &P4CGI::table_row({-align => "right", -type => "th", -text => "FullName:"}, $fullname), &P4CGI::table_row({-align => "right", -type => "th", -text => "JobView:"}, $jobview) ; if(defined $reviews) { print &P4CGI::table_row({-align => "right", -valign => "top", -type => "th", -text => "Reviews:"}, "<pre>$reviews</pre>") ; } # Get user's clients my @clients ; my $listclient ; my $listclients ; if( defined $showclients ) { &P4CGI::p4call(*P4, "clients" ); while( <P4> ) { my $client ; chomp ; /^Client (\S+) / and do { my $client = $1 ; push( @clients, $client ) ; } ; } foreach $listclient (@clients) { my ( $owner, $lclient ) ; local *P4 ; &P4CGI::p4call(*P4, "client -o $listclient" ); while(<P4>) { chomp ; next unless /^Owner:/ ; /^Owner:\s+(\S+)/ ; $owner = $1 ; if( $owner eq $user ) { $lclient = &P4CGI::ahref( -url => &P4CGI::CLV_URL(), "CLIENT=$listclient", $listclient ) ; if(defined $listclients) { $listclients .= "\n$lclient" ; } else { $listclients = "$lclient" ; } } } } if( defined $listclients ) { print &P4CGI::table_row({-align => "right", -type => "th", -valign => "top", -text => "Clients:"}, "<pre>$listclients</pre>") ; } } # Get opened files for user my $openfiles ; &P4CGI::p4call(*P4, "opened -a" ) ; while(<P4>) { chomp ; / by $user\@/ and do { /^(.*) -.* by \w+\@(\S+)/ ; my $file = $1 ; my $client = &P4CGI::ahref(-url=>&P4CGI::CLV_URL(),"CLIENT=$2",$2); $file =~ /(.*)\#(\d+)/ ; my $file = &P4CGI::ahref(-url => &P4CGI::FLV_URL(), &P4CGI::fixspaces("FSPC=$1"), $file) ; if(defined $openfiles) { $openfiles .= "\n$file (On client: $client)" ; } else { $openfiles = "$file (On client: $client)" ; } } } if(defined $openfiles) { print &P4CGI::table_row({-align => "right", -type => "th", -valign => "top", -text => "Open files:"}, "<pre>$openfiles</pre>") ; } # End the table, end the page print &P4CGI::end_table(), &P4CGI::end_page() ;
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 271 | Diane Holt |
The Perl files for P4DB. These (almost) match the files in rev 1 of the p4db.tar file -- a few files have some minor cosmetic changes in the code, and chv.cgi has a Legend item added that was missing in the one in the tar-file. These files, at rev 1 (and the files in p4db.tar at rev 1), are suitable for for running the app with release 98.2 of P4. |