]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole/Model/CDBI.pm
CRUD tests, FromCGI that works, test to prove it ;)
[maypole.git] / lib / Maypole / Model / CDBI.pm
index ae11c4dc1fc50d2d498d5515c93e9a16e262cccd..d8d5ace5ea3d18f76e6be064701b421597256593 100644 (file)
@@ -25,9 +25,18 @@ will instead use Class::DBI classes provided.
 
 use base qw(Maypole::Model::Base Class::DBI);
 use Maypole::Model::CDBI::AsForm;
-use CGI::Untaint;
+
+use Maypole::Model::CDBI::FromCGI; 
+use CGI::Untaint::Maypole;
+our $Untainter = 'CGI::Untaint::Maypole';
+
+# or if you like bugs 
+
+#use Class::DBI::FromCGI;
+#use CGI::Untaint;
+#our $Untainter = 'CGI::Untaint';
+
 use Class::DBI::Plugin::Type;
-use Class::DBI::FromCGI;
 use Class::DBI::Loader;
 use Class::DBI::AbstractSearch;
 use Class::DBI::Plugin::RetrieveAll;
@@ -61,7 +70,7 @@ sub do_edit : Exported {
   my $config   = $r->config;
   my $table    = $r->table;
 
-  # handle cancel button hits
+  # handle cancel button hit
   if ( $r->{params}->{cancel} ) {
     $r->template("list");
     $r->objects( [$self->retrieve_all] );
@@ -119,10 +128,19 @@ sub _do_update_or_create {
   my $fatal;
   my $creating = 0;
 
-  my $h = CGI::Untaint->new( %{$r->params} );
+  my $h = $Untainter->new( %{$r->params} );
 
   # update or create
   if ($obj) {
+               # 1: Required fields for update are different than create. Its only required
+         #              if it is in the parameters
+
+#              my @real_required = ();
+#              my %required = map { $_ => 1 } @$required_cols;
+#    foreach (keys %{$r->params}) {
+#                      push @real_required, $_ if $required{$_};
+#        }
+                       
     # We have something to edit
     eval { $obj->update_from_cgi( $h => {
                                         required => $required_cols,
@@ -132,20 +150,14 @@ sub _do_update_or_create {
         };
     $fatal = $@;
   } else {
-    eval {
-      $obj = $self->create_from_cgi( $h => {
+       eval {
+       $obj = $self->create_from_cgi( $h => {
                                            required => $required_cols,
                                            ignore => $ignored_cols,
-                                          } )
-    };
-
-    if ($fatal = $@) {
-      warn "FATAL ERROR: $fatal" if $r->debug;
-#      $self->dbi_rollback;
-    } else {
-#      $self->dbi_commit;
-    }
-    $creating++;
+                                          } );
+       };
+       $fatal = $@;
+       $creating++;
   }
 
   return $obj, $fatal, $creating;