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;
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] );
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,
};
$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;