Merge branch 'patch-19' of https://github.com/gjones2/Freeside
[freeside.git] / httemplate / search / sqlradius.cgi
index cca1211..2298473 100644 (file)
 %       @{ $part_export->usage_sessions( {
 %            'stoptime_start'  => $beginning,
 %            'stoptime_end'    => $ending,
-%            'open_sessions'   => $open_sessions,
+%            'session_status'  => $status,
 %            'starttime_start' => $starttime_beginning,
 %            'starttime_end'   => $starttime_ending,
 %            'svc_acct'        => $cgi_svc_acct,
 %            'ip'              => $ip,
 %            'prefix'          => $prefix, 
+%            'summarize'       => $summarize,
 %          } )
 %       }
 %   ) {
@@ -96,6 +97,9 @@ die "access denied"
 # parse cgi params
 ###
 
+my $summarize = 0;
+$summarize = 1 if $cgi->param('summarize') eq 'Y';
+
 #sort of false laziness w/cust_pay.cgi
 my( $beginning, $ending ) = ( '', '' );
 if ( $cgi->param('stoptime_beginning')
@@ -113,9 +117,9 @@ if ( $cgi->param('end') && $cgi->param('end') =~ /^(\d+)$/ ) {
   $ending = $1;
 }
 
-my $open_sessions = '';
-if ( $cgi->param('open_sessions') =~ /^(\d*)$/ ) {
-  $open_sessions = $1;
+my $status = '';
+if ( $cgi->param('session_status') =~ /^(closed|open)$/ ) {
+  $status = $1;
 }
 
 my( $starttime_beginning, $starttime_ending ) = ( '', '' );
@@ -238,8 +242,15 @@ my $time_format = sub {
   $pretty;
 };
 
+my $time_format_or_open = sub {
+  my $time = shift;
+  return '<CENTER>OPEN</CENTER>' if $time == 0;
+  &{$time_format}($time);
+};
+
 my $duration_format = sub {
   my $seconds = shift;
+  return '' if $seconds eq ''; # open session
   my $hour = int($seconds/3600);
   my $min = int( ($seconds%3600) / 60 );
   my $sec = $seconds%60;
@@ -265,7 +276,42 @@ my $octets_format = sub {
 # the fields
 ###
 
-tie my %fields, 'Tie::IxHash', 
+my %fields;
+if ( $summarize ) {
+tie %fields, 'Tie::IxHash', 
+  'username'          => {
+                           name    => 'User',
+                           attrib  => 'UserName',
+                           fmt     => $user_format,
+                           align   => 'left',
+                         },
+  'dummy'             => {
+                           name    => 'Customer',
+                           attrib  => '',
+                           fmt     => $customer_format,
+                           align   => 'left',
+                         },
+  'acctsessiontime'   => {
+                           name    => 'Duration',
+                           attrib  => 'Acct-Session-Time',
+                           fmt     => $duration_format,
+                           align   => 'right',
+                         },
+  'acctinputoctets'   => {
+                           name    => 'Upload', # (from user)',
+                           attrib  => 'Acct-Input-Octets',
+                           fmt     => $octets_format,
+                           align   => 'right',
+                         },
+  'acctoutputoctets'  => {
+                           name    => 'Download', # (to user)',
+                           attrib  => 'Acct-Output-Octets',
+                           fmt     => $octets_format,
+                           align   => 'right',
+                         },
+;
+} else {
+tie %fields, 'Tie::IxHash',
   'username'          => {
                            name    => 'User',
                            attrib  => 'UserName',
@@ -300,7 +346,7 @@ tie my %fields, 'Tie::IxHash',
   'acctstoptime'      => {
                            name    => 'End&nbsp;time',
                            attrib  => 'Acct-Stop-Time',
-                           fmt     => $time_format,
+                           fmt     => $time_format_or_open,
                            align   => 'left',
                          },
   'acctsessiontime'   => {
@@ -322,6 +368,7 @@ tie my %fields, 'Tie::IxHash',
                            align   => 'right',
                          },
 ;
+}
 $fields{$_}->{fmt} ||= sub { length($_[0]) ? shift : '&nbsp'; }
   foreach keys %fields;