X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_event_option.pm;h=6c34c68780406a62c01ba453f3f46470cf015579;hp=09b7756099da1745527bfd681beea4f2866711d5;hb=f38153f6d439071fa467af22c3c727906d49d497;hpb=477015901c379f8cd6ba46cfaa4a9ae284ae582d diff --git a/FS/FS/part_event_option.pm b/FS/FS/part_event_option.pm index 09b775609..6c34c6878 100644 --- a/FS/FS/part_event_option.pm +++ b/FS/FS/part_event_option.pm @@ -183,10 +183,20 @@ sub check { $self->ut_numbern('optionnum') || $self->ut_foreign_key('eventpart', 'part_event', 'eventpart' ) || $self->ut_text('optionname') - || $self->ut_textn('optionvalue') + || $self->ut_anything('optionvalue') #http.pm content has \n ; return $error if $error; + if ( my %option_fields = $self->option_fields ) { + if ( my $option_field = $option_fields{ $self->optionname } ) { + if ( ref $option_field && $option_field->{validation} ) { + my $validation_method = $option_field->{validation}; + $error = $self->$validation_method('optionvalue'); + } + } + } + return $error if $error; + $self->SUPER::check; } @@ -202,6 +212,34 @@ sub insert_reason { } +=item part_event + +Return the associated part_event row + +=cut + +sub part_event { + qsearchs( part_event => { eventpart => shift->eventpart }) +} + +=item option_fields + +Return the option_fields from the associated part_event::action::$action + +=cut + +sub option_fields { + my $part_event = shift->part_event + or return; + my $action = $part_event->action + or return; + + # For utility scripts, doesn't seem to be necessary + # eval "require FS::part_event::Action::$action;"; + + return "FS::part_event::Action::$action"->option_fields; +} + =back =head1 SEE ALSO