diff options
Diffstat (limited to 'FS')
| -rw-r--r-- | FS/FS/Record.pm | 2 | ||||
| -rw-r--r-- | FS/FS/part_export.pm | 43 | ||||
| -rw-r--r-- | FS/MANIFEST | 2 | ||||
| -rw-r--r-- | FS/t/part_export.t | 5 | ||||
| -rw-r--r-- | FS/t/part_export_option.t | 5 | 
5 files changed, 43 insertions, 14 deletions
| diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index 0bd7aeda4..ff967817a 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -947,7 +947,7 @@ Check/untaint host and domain names.  sub ut_domain {    my( $self, $field ) = @_;    #$self->getfield($field) =~/^(\w+\.)*\w+$/ -  $self->getfield($field) =~/^(\w+\.)*\w+$/ +  $self->getfield($field) =~/^([\w\-]+\.)*\w+$/      or return "Illegal (domain) $field: ". $self->getfield($field);    $self->setfield($field,$1);    ''; diff --git a/FS/FS/part_export.pm b/FS/FS/part_export.pm index 59024f651..3f184be07 100644 --- a/FS/FS/part_export.pm +++ b/FS/FS/part_export.pm @@ -102,6 +102,7 @@ created (see L<FS::part_export_option>).  #false laziness w/queue.pm  sub insert {    my $self = shift; +  my $options = shift;    local $SIG{HUP} = 'IGNORE';    local $SIG{INT} = 'IGNORE';    local $SIG{QUIT} = 'IGNORE'; @@ -119,7 +120,6 @@ sub insert {      return $error;    } -  my $options = shift;    foreach my $optionname ( keys %{$options} ) {      my $part_export_option = new FS::part_export_option ( {        'exportnum'   => $self->exportnum, @@ -191,6 +191,8 @@ created or modified (see L<FS::part_export_option>).  sub replace {    my $self = shift; +  my $old = shift; +  my $options = shift;    local $SIG{HUP} = 'IGNORE';    local $SIG{INT} = 'IGNORE';    local $SIG{QUIT} = 'IGNORE'; @@ -202,13 +204,12 @@ sub replace {    local $FS::UID::AutoCommit = 0;    my $dbh = dbh; -  my $error = $self->SUPER::replace; +  my $error = $self->SUPER::replace($old);    if ( $error ) {      $dbh->rollback if $oldAutoCommit;      return $error;    } -  my $options = shift;    foreach my $optionname ( keys %{$options} ) {      my $old = qsearchs( 'part_export_option', {          'exportnum'   => $self->exportnum, @@ -219,6 +220,7 @@ sub replace {          'optionname'  => $optionname,          'optionvalue' => $options->{$optionname},      } ); +    $new->optionnum($old->optionnum) if $old;      my $error = $old ? $new->replace($old) : $new->insert;      if ( $error ) {        $dbh->rollback if $oldAutoCommit; @@ -226,14 +228,16 @@ 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; -  #  } -  #} +  #remove extraneous old options +  foreach my $opt ( +    grep { !exists $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; @@ -253,6 +257,7 @@ sub check {    my $self = shift;    my $error =       $self->ut_numbern('exportnum') +    || $self->ut_domain('machine')      || $self->ut_number('svcpart')      || $self->ut_alpha('exporttype')    ; @@ -286,6 +291,9 @@ sub part_svc {  =item part_export_option +Returns all options as FS::part_export_option objects (see +L<FS::part_export_option>). +  =cut  sub part_export_option { @@ -295,6 +303,8 @@ sub part_export_option {  =item options  +Returns a list of option names and values suitable for assigning to a hash. +  =cut  sub options { @@ -302,7 +312,9 @@ sub options {    map { $_->optionname => $_->optionvalue } $self->part_export_option;  } -=item option +=item option OPTIONNAME + +Returns the option value for the given name, or the empty string.  =cut @@ -318,6 +330,11 @@ sub option {  =item rebless +Reblesses the object into the FS::part_export::EXPORTTYPE class, where +EXPORTTYPE is the object's I<exporttype> field.  There should be better docs +on how to create new exports (and they should live in their own files and be +autoloaded-on-demand), but until then, see L</NEW EXPORT CLASSES>. +  =cut  sub rebless { @@ -346,7 +363,7 @@ sub export_insert {  #  $self->$method(@_);  #} -=item export_replace +=item export_replace NEW OLD  =cut diff --git a/FS/MANIFEST b/FS/MANIFEST index c1aa5ef1a..19915cdc9 100644 --- a/FS/MANIFEST +++ b/FS/MANIFEST @@ -90,6 +90,8 @@ t/cust_svc.t  t/domain_record.t  t/nas.t  t/part_bill_event.t +t/part_export.t +t/part_export_option.t  t/part_pkg.t  t/part_pop_local.t  t/part_referral.t diff --git a/FS/t/part_export.t b/FS/t/part_export.t new file mode 100644 index 000000000..26b398791 --- /dev/null +++ b/FS/t/part_export.t @@ -0,0 +1,5 @@ +BEGIN { $| = 1; print "1..1\n" } +END {print "not ok 1\n" unless $loaded;} +use FS::part_export; +$loaded=1; +print "ok 1\n"; diff --git a/FS/t/part_export_option.t b/FS/t/part_export_option.t new file mode 100644 index 000000000..13200c213 --- /dev/null +++ b/FS/t/part_export_option.t @@ -0,0 +1,5 @@ +BEGIN { $| = 1; print "1..1\n" } +END {print "not ok 1\n" unless $loaded;} +use FS::part_export_option; +$loaded=1; +print "ok 1\n"; | 
