X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=inline;f=lib%2FMaypole%2FModel%2FCDBI.pm;h=bd9646f5ee99105dd5eb5c12aa7274baf4d34c61;hb=6fb98ace4f824a32e25cbd161743814892d11408;hp=933fc55bade156175d88dd798d829f3a9e62fc2e;hpb=7183dcbd66ab520dbb3aeec56628187ff2070ea3;p=maypole.git diff --git a/lib/Maypole/Model/CDBI.pm b/lib/Maypole/Model/CDBI.pm index 933fc55..bd9646f 100644 --- a/lib/Maypole/Model/CDBI.pm +++ b/lib/Maypole/Model/CDBI.pm @@ -80,8 +80,8 @@ sub do_edit : Exported { return; } - my $required_cols = $config->{$table}->{required_cols} || []; - my $ignored_cols = $r->{config}{ $r->{table} }{ignore_cols} || []; + my $required_cols = $config->{$table}{required_cols} || []; + my $ignored_cols = $config->{$table}{ignore_cols} || []; ($obj, my $fatal, my $creating) = $self->_do_update_or_create($r, $obj, $required_cols, $ignored_cols); @@ -135,16 +135,16 @@ sub _do_update_or_create { # update or create if ($obj) { # We have something to edit - eval { $obj->update_from_cgi( $h => { + eval { $obj->update_from_cgi( $r => { required => $required_cols, ignore => $ignored_cols, - } ); + }); $obj->update(); # pos fix for bug 17132 'autoupdate required by do_edit' }; $fatal = $@; } else { eval { - $obj = $self->create_from_cgi( $h => { + $obj = $self->create_from_cgi( $r => { required => $required_cols, ignore => $ignored_cols, } ); @@ -152,11 +152,43 @@ sub _do_update_or_create { $fatal = $@; $creating++; } - return $obj, $fatal, $creating; } +# split out from do_edit to be reported by Mp::P::Trace +#sub _do_update_or_create { +# my ($self, $r, $obj, $required_cols, $ignored_cols) = @_; +# +# my $fatal; +# my $creating = 0; +# +# my $h = $self->Untainter->new( %{$r->params} ); +# +# # update or create +# if ($obj) { +# # We have something to edit +# eval { $obj->update_from_cgi( $h => { +# required => $required_cols, +# ignore => $ignored_cols, +# } ); +# $obj->update(); # pos fix for bug 17132 'autoupdate required by do_edit' +# }; +# $fatal = $@; +# } else { +# eval { +# $obj = $self->create_from_cgi( $h => { +# required => $required_cols, +# ignore => $ignored_cols, +# } ); +# }; +# $fatal = $@; +# $creating++; +# } +# +# return $obj, $fatal, $creating; +#} + =head2 delete Deprecated method that calls do_delete or a given classes delete method, please @@ -207,10 +239,13 @@ the, now deprecated, search method previously provided. sub search : Exported { my $self = shift; my ($sub) = (caller(1))[3]; - $sub =~ /^(.+)::([^:]+)$/; # So subclasses can still send search down ... - return ($1 ne "Maypole::Model::Base" && $2 ne "search") ? - $self->SUPER::search(@_) : $self->do_search(@_); + if ($sub =~ /^(.+)::([^:]+)$/) { + return ($1 ne "Maypole::Model::Base" && $2 ne "search") ? + $self->SUPER::search(@_) : $self->do_search(@_); + } else { + $self->SUPER::search(@_); + } } sub do_search : Exported { @@ -320,8 +355,7 @@ sub related_class { $class->related_meta($col); -Given a column associated with a relationship it will return the relatation -ship type and the meta info for the relationship on the column. +Returns the hash ref of relationship meta info for a given column. =cut @@ -331,7 +365,7 @@ sub related_meta { my $class_meta = $self->meta_info; if (my ($rel_type) = grep { defined $class_meta->{$_}->{$accssr} } keys %$class_meta) - { return $rel_type, $class_meta->{$rel_type}->{$accssr} }; + { return $class_meta->{$rel_type}->{$accssr} }; } @@ -654,23 +688,16 @@ sub column_default { my $info = $class->_column_info->{$col} || eval { $class->_isa_class($col)->_column_info($col) } || return ''; - + my $def = $info->{COLUMN_DEF}; - $def = '' unless defined $def; - - # exclude defaults we don't want to display-- may need some additions here - if ( $class->column_type($col) =~ /^BOOL/i ) { - $def = $def ? 1 : 0; # allow 0 or 1 for bool cols - } - else { - $def = $def =~ /(^0000-00-00.*$|^0[0]*$|^0\.00$|CURRENT_TIMESTAMP|NULL)/i ? '' : $def ; - - } - return $def; + $def = '' unless defined $def; # is this good? + return $def; } + + =head2 get_classmetadata Gets class meta data *excluding cgi input* for the passed in class or the