diff options
| author | Ivan Kohler <ivan@freeside.biz> | 2013-02-11 13:19:00 -0800 |
|---|---|---|
| committer | Ivan Kohler <ivan@freeside.biz> | 2013-02-11 13:19:00 -0800 |
| commit | b2bc0890549ea23dfb1673191e4bc7e14d8d7740 (patch) | |
| tree | 14e0122c4632486fa16651e4952b4f4c68818a79 | |
| parent | 1951a5f6de2a3a5b6964c0016455dc438cd1b53c (diff) | |
fix RADIUS open sessions report (modern mysql & Pg?), RT#14218
| -rw-r--r-- | FS/FS/part_export/sqlradius.pm | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/FS/FS/part_export/sqlradius.pm b/FS/FS/part_export/sqlradius.pm index 979d4fb74..61f73f165 100644 --- a/FS/FS/part_export/sqlradius.pm +++ b/FS/FS/part_export/sqlradius.pm @@ -726,17 +726,21 @@ sub usage_sessions { push @where, " CalledStationID LIKE 'sip:$prefix\%'"; } - if ( $start ) { - push @where, "$str2time AcctStopTime ) >= ?"; - push @param, $start; - } - if ( $end ) { - push @where, "$str2time AcctStopTime ) <= ?"; - push @param, $end; - } if ( $opt->{open_sessions} ) { push @where, 'AcctStopTime IS NULL'; + } else { + + if ( $start ) { + push @where, "$str2time AcctStopTime ) >= ?"; + push @param, $start; + } + if ( $end ) { + push @where, "$str2time AcctStopTime ) <= ?"; + push @param, $end; + } + } + if ( $opt->{starttime_start} ) { push @where, "$str2time AcctStartTime ) >= ?"; push @param, $opt->{starttime_start}; @@ -755,10 +759,14 @@ sub usage_sessions { my $orderby = 'ORDER BY AcctStartTime DESC'; $orderby = '' if $summarize; - my $sth = $dbh->prepare('SELECT '. join(', ', @fields). - " FROM radacct $where $groupby $orderby - ") or die $dbh->errstr; - $sth->execute(@param) or die $sth->errstr; + my $sql = 'SELECT '. join(', ', @fields). + " FROM radacct $where $groupby $orderby"; + if ( $DEBUG ) { + warn $sql; + warn join(',', @param); + } + my $sth = $dbh->prepare($sql) or die $dbh->errstr; + $sth->execute(@param) or die $sth->errstr; [ map { { %$_ } } @{ $sth->fetchall_arrayref({}) } ]; |
