+# drb - I've (probably temporarily) split this out from do_edit, so it's
+# reported by Mp::P::Trace
+sub _do_update_or_create
+{
+ my ($self, $r, $obj, $required_cols) = @_;
+
+ my $fatal;
+ my $creating = 0;
+ my $h = CGI::Untaint->new( %{$r->params} );
+
+ # update or create
+ if ($obj)
+ {
+ # We have something to edit
+ eval { $obj->update_from_cgi( $h => {required => $required_cols} ) };
+ $fatal = $@;
+ }
+ else
+ {
+ eval {
+ $obj = $self->create_from_cgi( $h => {required => $required_cols} )
+ };
+
+ if ($fatal = $@)
+ {
+ warn "$fatal" if $r->debug;
+ }
+ $creating++;
+ }
+
+ return $obj, $fatal, $creating;
+}
+