[freeside-commits] freeside/FS/FS Record.pm, 1.135.2.3, 1.135.2.4 cust_svc.pm, 1.66.2.2, 1.66.2.3

Ivan,,, ivan at wavetail.420.am
Sat Oct 27 20:55:30 PDT 2007


Update of /home/cvs/cvsroot/freeside/FS/FS
In directory wavetail:/tmp/cvs-serv6525/FS/FS

Modified Files:
      Tag: FREESIDE_1_7_BRANCH
	Record.pm cust_svc.pm 
Log Message:
mysql me harder

Index: cust_svc.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/cust_svc.pm,v
retrieving revision 1.66.2.2
retrieving revision 1.66.2.3
diff -u -d -r1.66.2.2 -r1.66.2.3
--- cust_svc.pm	21 Apr 2007 04:44:58 -0000	1.66.2.2
+++ cust_svc.pm	28 Oct 2007 03:55:28 -0000	1.66.2.3
@@ -4,7 +4,7 @@
 use vars qw( @ISA $DEBUG $me $ignore_quantity );
 use Carp;
 use FS::Conf;
-use FS::Record qw( qsearch qsearchs dbh );
+use FS::Record qw( qsearch qsearchs dbh str2time_sql );
 use FS::cust_pkg;
 use FS::part_pkg;
 use FS::part_svc;
@@ -428,17 +428,8 @@
       or die "can't connect to sqlradius database: ". $DBI::errstr;
 
     #select a unix time conversion function based on database type
-    my $str2time;
-    if ( $dbh->{Driver}->{Name} =~ /^mysql(PP)?$/ ) {
-      $str2time = 'UNIX_TIMESTAMP(';
-    } elsif ( $dbh->{Driver}->{Name} eq 'Pg' ) {
-      $str2time = 'EXTRACT( EPOCH FROM ';
-    } else {
-      warn "warning: unknown database type ". $dbh->{Driver}->{Name}.
-           "; guessing how to convert to UNIX timestamps";
-      $str2time = 'extract(epoch from ';
-    }
-
+    my $str2time = str2time_sql( $dbh->{Driver}->{Name} );
+    
     my $username = $part_export->export_username($svc_x);
 
     my $query;
@@ -538,16 +529,7 @@
       or die "can't connect to sqlradius database: ". $DBI::errstr;
 
     #select a unix time conversion function based on database type
-    my $str2time;
-    if ( $dbh->{Driver}->{Name} =~ /^mysql(PP)?$/ ) {
-      $str2time = 'UNIX_TIMESTAMP(';
-    } elsif ( $dbh->{Driver}->{Name} eq 'Pg' ) {
-      $str2time = 'EXTRACT( EPOCH FROM ';
-    } else {
-      warn "warning: unknown database type ". $dbh->{Driver}->{Name}.
-           "; guessing how to convert to UNIX timestamps";
-      $str2time = 'extract(epoch from ';
-    }
+    my $str2time = str2time_sql( $dbh->{Driver}->{Name} );
 
     my $username = $part_export->export_username($svc_x);
 
@@ -637,6 +619,27 @@
       } );
   }
 
+  #astricon hack?  config option?
+  push @cdrs,
+    qsearch( {
+      'table'        => 'cdr',
+      'hashref'      => { 'freesidestatus' => '',
+                          'src'            => $number,
+			},
+      'extra_sql'    => 'FOR UPDATE',
+     } );
+
+  if ( length($default_prefix) ) {
+    push @cdrs,
+      qsearch( {
+        'table'        => 'cdr',
+        'hashref'      => { 'freesidestatus' => '',
+                            'src'            => "$default_prefix$number",
+  			},
+        'extra_sql'    => 'FOR UPDATE',
+       } );
+  }
+
   @cdrs;
 }
 

Index: Record.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/Record.pm,v
retrieving revision 1.135.2.3
retrieving revision 1.135.2.4
diff -u -d -r1.135.2.3 -r1.135.2.4
--- Record.pm	5 Jul 2007 22:05:38 -0000	1.135.2.3
+++ Record.pm	28 Oct 2007 03:55:28 -0000	1.135.2.4
@@ -26,7 +26,7 @@
 @ISA = qw(Exporter);
 
 #export dbdef for now... everything else expects to find it here
- at EXPORT_OK = qw(dbh fields hfields qsearch qsearchs dbdef jsearch);
+ at EXPORT_OK = qw(dbh fields hfields qsearch qsearchs dbdef jsearch str2time_sql);
 
 $DEBUG = 0;
 $me = '[FS::Record]';
@@ -2142,6 +2142,37 @@
 
 =back
 
+=head1 SUBROUTINES
+
+=over 4
+
+=item str2time_sql [ DRIVER_NAME ]
+
+Returns a function to convert to unix time based on database type, such as
+"EXTRACT( EPOCH FROM" for Pg or "UNIX_TIMESTAMP(" for mysql.  You are
+responsible for the closing parenthesis yourself.  Don't let it down.  It's a
+sensitive parenthesis.
+
+You can pass an optional driver name such as "Pg", "mysql" or
+$dbh->{Driver}->{Name} to return a function for that database instead of
+the current database.
+
+=cut
+
+sub str2time_sql { 
+  my $driver = shift || driver_name;
+
+  return 'UNIX_TIMESTAMP('      if $driver =~ /^mysql/i;
+  return 'EXTRACT( EPOCH FROM ' if $driver =~ /^Pg/i;
+
+  warn "warning: unknown database type $driver; guessing how to convert ".
+       "dates to UNIX timestamps";
+  return 'EXTRACT(EPOCH FROM ';
+
+}
+
+=back
+
 =head1 BUGS
 
 This module should probably be renamed, since much of the functionality is



More information about the freeside-commits mailing list