X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FModel%2FCDBI%2FDFV.pm;h=61ab5a62a3f8c09f9c5e021b4752e970b011082f;hb=9359c5412f34be76c0672fe320729d60f96a2c3e;hp=fcf80fbf96eadd1577c59f1472a07645bf939250;hpb=dcc33148f1b562834e16f658e34270f3f581833c;p=maypole.git diff --git a/lib/Maypole/Model/CDBI/DFV.pm b/lib/Maypole/Model/CDBI/DFV.pm index fcf80fb..61ab5a6 100644 --- a/lib/Maypole/Model/CDBI/DFV.pm +++ b/lib/Maypole/Model/CDBI/DFV.pm @@ -36,11 +36,13 @@ of CGI::Untaint. For teh win!! =cut use Class::C3; -use Maypole::Config; use Data::FormValidator; +use Data::Dumper; + +use Maypole::Config; use Maypole::Model::CDBI::AsForm; -use base qw(Maypole::Model::Base); +use base qw(Maypole::Model::CDBI::Base); Maypole::Config->mk_accessors(qw(table_to_class _COLUMN_INFO)); @@ -61,7 +63,9 @@ Maypole::Config->mk_accessors(qw(table_to_class _COLUMN_INFO)); sub setup_database { my ( $self, $config, $namespace, $classes ) = @_; $config->{classes} = $classes; - foreach my $class (@$classes) { $namespace->load_model_subclass($class); } + foreach my $class (@$classes) { + $namespace->load_model_subclass($class); + } $namespace->model_classes_loaded(1); $config->{table_to_class} = { map { $_->table => $_ } @$classes }; $config->{tables} = [ keys %{ $config->{table_to_class} } ]; @@ -191,7 +195,7 @@ sub _do_update { $obj->set( %$this_class_params ); $obj->update; } - + return ($obj,$errors); } @@ -200,9 +204,18 @@ sub _do_create { my ($class,$r) = @_; my $errors; my $this_class_params = { map { $_ => $r->{params}{$_} } $class->columns }; - my $obj = eval { My::DBI->create( $this_class_params ) }; + my $dfv_results; + my $obj; - my $dfv_results = ($obj) ? undef : $class->dfv_results->msgs ; + if ($class->isa('Class::DBI::DFV')) { + $obj = eval { My::DBI->create( $this_class_params ) }; + $dfv_results = ($obj) ? undef : $class->dfv_results ; + } else { + $dfv_results = Data::FormValidator->check($r->{params}, $class->dfv_profile); + if ($dfv_results->success) { + $obj = $class->create($this_class_params); + } + } # handle dfv errors if ( $dfv_results->has_missing ) { # missing fields