| 155 | | $obj->set_values(\%column_data); |
| | 157 | require MT::Meta; |
| | 158 | my @metacolumns = MT::Meta->metadata_by_class( ref($obj) ); |
| | 159 | my %metacolumns = map { $_->{name} => $_->{type} } @metacolumns; |
| | 160 | $self->{metacolumns}{ref($obj)} = \%metacolumns; |
| | 161 | my %realcolumn_data = map { $_ => $column_data{$_} } |
| | 162 | grep { !exists($metacolumns{$_}) } |
| | 163 | keys %column_data; |
| | 164 | $obj->set_values(\%realcolumn_data); |
| | 165 | foreach my $metacol ( keys %metacolumns ) { |
| | 166 | next if ( 'vclob' eq $metacolumns{$metacol} ) |
| | 167 | || ( 'vblob' eq $metacolumns{$metacol} ); |
| | 168 | $obj->$metacol( $column_data{$metacol} ); |
| | 169 | } |
| 204 | | if ('blob' eq $defs->{$column_name}->{type}) { |
| 205 | | require MIME::Base64; |
| 206 | | $obj->column($column_name, MIME::Base64::decode_base64($text)); |
| 207 | | } else { |
| 208 | | $text = MT::I18N::encode_text($text, 'utf-8'); |
| 209 | | $obj->column($column_name, $text); |
| | 218 | if ( exists( $defs->{$column_name} ) ) { |
| | 219 | if ('blob' eq $defs->{$column_name}->{type}) { |
| | 220 | $obj->column($column_name, MIME::Base64::decode_base64($text)); |
| | 221 | } else { |
| | 222 | $text = MT::I18N::encode_text($text, 'utf-8'); |
| | 223 | $obj->column($column_name, $text); |
| | 224 | } |
| | 225 | } |
| | 226 | elsif ( my $metacolumns = $self->{metacolumns}{ref($obj)} ) { |
| | 227 | if ( my $type = $metacolumns->{$column_name} ) { |
| | 228 | if ( 'vblob' eq $type ) { |
| | 229 | $self->{callback}->($text); |
| | 230 | $text = MIME::Base64::decode_base64($text); |
| | 231 | $self->{callback}->($text); |
| | 232 | $obj->$column_name( $text ); |
| | 233 | } |
| | 234 | else { |
| | 235 | $text = MT::I18N::encode_text($text, 'utf-8'); |
| | 236 | $obj->$column_name( $text ); |
| | 237 | } |
| | 238 | } |