From 415150fe1997eb2688dfd492710f644574e29daf Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 21 Mar 2002 06:57:20 +0000 Subject: [PATCH] more for the new world of export... --- FS/FS/part_export.pm | 119 +++++++++++++++++--------------- httemplate/edit/part_export.cgi | 2 +- httemplate/edit/process/part_export.cgi | 18 ++--- 3 files changed, 70 insertions(+), 69 deletions(-) diff --git a/FS/FS/part_export.pm b/FS/FS/part_export.pm index 444e86aa0..59024f651 100644 --- a/FS/FS/part_export.pm +++ b/FS/FS/part_export.pm @@ -22,7 +22,7 @@ FS::part_export - Object methods for part_export records ($new_record, $options) = $template_recored->clone( $svcpart ); $error = $record->insert( { 'option' => 'value' } ); - $error = $record->insert( \$options ); + $error = $record->insert( \%options ); $error = $new_record->replace($old_record); @@ -226,6 +226,15 @@ sub replace { } } + #remove extraneous old options? not necessary now, but... + #foreach my $opt ( grep { !exist $options->{$_->optionname} } $old->part_export_option ) { + # my $error = $opt->delete; + # if ( $error ) { + # $dbh->rollback if $oldAutoCommit; + # return $error; + # } + #} + $dbh->commit or die $dbh->errstr if $oldAutoCommit; ''; @@ -320,8 +329,6 @@ sub rebless { =item export_insert SVC_OBJECT -Calls the appropriate export_I for this object's exporttype. - =cut sub export_insert { @@ -361,6 +368,8 @@ sub export_delete { =back +=cut + #infostreet package FS::part_export::infostreet; @@ -423,7 +432,7 @@ sub infostreet_command { #subroutine, not method die $key_result{error} unless $key_result{success}; my $key = $key_result{data}; - my $result = $conn->call($opt{method}, $key, @{$opt{args}}); + my $result = $conn->call($method, $key, @args); my %result = _infostreet_parse($result); die $result{error} unless $result{success}; @@ -470,10 +479,10 @@ sub _export_replace { my %new = $new->$method; my %old = $old->$method; if ( grep { !exists $old{$_} #new attributes - || $new{$n} ne $old{$n} #changed + || $new{$_} ne $old{$_} #changed } keys %new ) { - my $error = $self->sqlradius_queue( $new->svcnum, 'insert' + my $error = $self->sqlradius_queue( $new->svcnum, 'insert', $table, $new->username, %new ); return $error if $error; } @@ -488,9 +497,9 @@ sub _export_replace { } sub _export_delete { - my( $self, $svc_something ) = (shift, shift); + my( $self, $svc_acct ) = (shift, shift); $self->sqlradius_queue( $svc_acct->svcnum, 'delete', - $svc_something->username ); + $svc_acct->username ); } sub sqlradius_queue { @@ -543,10 +552,10 @@ sub sqlradius_attrib_delete { #subroutine, not method foreach my $attribute ( @attrib ) { my $sth = $dbh->prepare( - "DELETE FROM $table WHERE UserName = ? AND Attribute = ?" ) + "DELETE FROM rad$replycheck WHERE UserName = ? AND Attribute = ?" ) or die $dbh->errstr; $sth->execute($username,$attribute) - or die "can't delete from $table table: ". $sth->errstr; + or die "can't delete from rad$replycheck table: ". $sth->errstr; } $dbh->disconnect; } @@ -569,53 +578,51 @@ sub sqlradius_connect { DBI->connect(@_) or die $DBI::errstr; } -=head1 NOTES - -Writing a new export class: - -#myexport - -package FS::part_export::myexport; -use vars qw(@ISA); -@ISA = qw(FS::part_export); - -sub _export_insert { - my($self, $svc_something) = (shift, shift); - $self->myexport_queue( $svc_acct->svcnum, 'insert', - $svc_something->username, $svc_something->password ); -} - -sub _export_replace { - my( $self, $new, $old ) = (shift, shift, shift); - #return "can't change username with myexport" - # if $old->username ne $new->username; - #return '' unless $old->_password ne $new->_password; - $self->myexport_queue( $new->svcnum, - 'replace', $new->username, $new->password ); -} - -sub _export_delete { - my( $self, $svc_something ) = (shift, shift); - $self->myexport_queue( $svc_acct->svcnum, - 'delete', $svc_something->username ); -} - -#a good idea to queue anything that could fail or take any time -sub myexport_queue { - my( $self, $svcnum, $method ) = (shift, shift, shift); - my $queue = new FS::queue { - 'svcnum' => $svcnum, - 'job' => "FS::part_export::myexport::myexport_$method", - }; - $queue->insert( @_ ); -} +=head1 NEW EXPORT CLASSES -sub myexport_insert { #subroutine, not method -} -sub myexport_replace { #subroutine, not method -} -sub myexport_delete { #subroutine, not method -} + #myexport + + package FS::part_export::myexport; + use vars qw(@ISA); + @ISA = qw(FS::part_export); + + sub _export_insert { + my($self, $svc_something) = (shift, shift); + $self->myexport_queue( $svc_acct->svcnum, 'insert', + $svc_something->username, $svc_something->password ); + } + + sub _export_replace { + my( $self, $new, $old ) = (shift, shift, shift); + #return "can't change username with myexport" + # if $old->username ne $new->username; + #return '' unless $old->_password ne $new->_password; + $self->myexport_queue( $new->svcnum, + 'replace', $new->username, $new->password ); + } + + sub _export_delete { + my( $self, $svc_something ) = (shift, shift); + $self->myexport_queue( $svc_acct->svcnum, + 'delete', $svc_something->username ); + } + + #a good idea to queue anything that could fail or take any time + sub myexport_queue { + my( $self, $svcnum, $method ) = (shift, shift, shift); + my $queue = new FS::queue { + 'svcnum' => $svcnum, + 'job' => "FS::part_export::myexport::myexport_$method", + }; + $queue->insert( @_ ); + } + + sub myexport_insert { #subroutine, not method + } + sub myexport_replace { #subroutine, not method + } + sub myexport_delete { #subroutine, not method + } =head1 BUGS diff --git a/httemplate/edit/part_export.cgi b/httemplate/edit/part_export.cgi index a44bd39d5..7ba6fa12b 100644 --- a/httemplate/edit/part_export.cgi +++ b/httemplate/edit/part_export.cgi @@ -70,7 +70,7 @@ my %exports = ( 'password' => { label=>'Database password' }, }, 'nodomain' => 'Y', - 'notes' => 'Not specifying datasrc will export to the freeside database? (no... notes on MySQL replication, etc., from Conf.pm && export.html etc.', + 'notes' => 'Not specifying datasrc will export to the freeside database? (no... notes on MySQL replication, DBI::Proxy, etc., from Conf.pm && export.html etc.', }, 'cyrus' => { 'desc' => 'Real-time export to Cyrus IMAP server', diff --git a/httemplate/edit/process/part_export.cgi b/httemplate/edit/process/part_export.cgi index 8160527f6..b4ce0b352 100644 --- a/httemplate/edit/process/part_export.cgi +++ b/httemplate/edit/process/part_export.cgi @@ -1,7 +1,5 @@ <% -my $dbh = dbh; - my $exportnum = $cgi->param('exportnum'); my $old = qsearchs('part_export', { 'exportnum'=>$exportnum } ) if $exportnum; @@ -26,21 +24,17 @@ local $FS::UID::AutoCommit = 0; my $error; if ( $exportnum ) { - $error = $new->replace($old); + $error = $new->replace($old,\%options); } else { - $error = $new->insert; - $exportnum = $new->exportnum; + $error = $new->insert,\%options); +# $exportnum = $new->exportnum; } + if ( $error ) { - $dbh->rollback; $cgi->param('error', $error ); print $cgi->redirect(popurl(2). "part_export.cgi?". $cgi->query_string ); - myexit(); +} else { + print $cgi->redirect(popurl(3). "browse/part_svc.cgi"); } -#options - -$dbh->commit or die $dbh->errstr; -print $cgi->redirect(popurl(3). "browse/part_svc.cgi"); - %> -- 2.11.0