summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/Record.pm2
-rw-r--r--FS/FS/part_export.pm43
-rw-r--r--FS/MANIFEST2
-rw-r--r--FS/t/part_export.t5
-rw-r--r--FS/t/part_export_option.t5
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";