Changeset 1928

Show
Ignore:
Timestamp:
04/16/08 16:25:23 (15 months ago)
Author:
mpaschal
Message:

Deflate and inflate mindfully of metadata
Don't cache metadata objects in and of themselves
BugzID: 79355

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/release-35/lib/MT/Object.pm

    r1927 r1928  
    10131013} 
    10141014 
    1015 # This method is overridden since D::OD uses column_values to retrieve 
    1016 # the content to cache if caching is enabled. Thus, we must ensure any 
    1017 # metadata is serialized prior to caching. 
    1018 sub column_values { 
    1019     my $props = $_[0]->properties; 
    1020     if ($props->{meta_column} 
    1021         && $_[0]->{changed_cols}{$props->{meta_column}}) { 
    1022         $_[0]->pre_save_serialize_metadata; 
    1023     } 
    1024     return $_[0]->SUPER::column_values(@_); 
     1015sub deflate { 
     1016    my $obj = shift; 
     1017    my $data = $obj->SUPER::deflate(); 
     1018    if ($obj->has_meta()) { 
     1019        $data->{meta} = $obj->{__meta}->deflate_meta(); 
     1020    } 
     1021    return $data; 
     1022} 
     1023 
     1024sub inflate { 
     1025    my $class = shift; 
     1026    my ($data) = @_; 
     1027    my $obj = $class->SUPER::inflate(@_); 
     1028    if ($class->has_meta()) { 
     1029        $obj->{__meta}->inflate_meta($data->{meta}); 
     1030    } 
     1031    return $obj; 
    10251032} 
    10261033 
     
    11641171 
    11651172use base qw( Data::ObjectDriver::BaseObject ); 
    1166  
    1167 sub driver { $MT::Object::DRIVER ||= MT::ObjectDriverFactory->new } 
    11681173 
    11691174sub install_properties { 
     
    11851190*count = \&MT::Object::count; 
    11861191*columns_of_type = \&MT::Object::columns_of_type; 
     1192 
     1193*driver = \&MT::Object::dbi_driver; 
    11871194 
    11881195# TODO: copy this too