Show
Ignore:
Timestamp:
04/17/08 12:38:52 (20 months ago)
Author:
fumiakiy
Message:

New metadata structure is now backup- and restore-able. BugId:79317

Files:
1 modified

Legend:

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

    r1902 r1948  
    178178            $progress->("$err\n", 'Error'); 
    179179            next; 
     180        } 
     181        my @metacolumns; 
     182        if ( exists( $class->properties->{meta} ) 
     183          && $class->properties->{meta} ) { 
     184            require MT::Meta; 
     185            @metacolumns = MT::Meta->metadata_by_class( $class ); 
    180186        } 
    181187        my $records = 0; 
     
    215221                    next; 
    216222                } 
    217                 $bytes += $printer->($object->to_xml(undef, $args) . "\n"); 
     223                $bytes += $printer->($object->to_xml(undef, \@metacolumns) . "\n"); 
    218224                $records++; 
    219225                if ($size && ($bytes >= $size)) { 
     
    669675sub to_xml { 
    670676    my $obj = shift; 
    671     my ($namespace, $args) = @_; 
     677    my ($namespace, $metacolumns) = @_; 
    672678 
    673679    my $coldefs = $obj->column_defs; 
     
    696702        } 
    697703    } 
     704    my ( @meta_elements, @meta_blobs ); 
     705    if ( defined( $metacolumns ) && @$metacolumns ) { 
     706        foreach my $metacolumn ( @$metacolumns ) { 
     707            my $name = $metacolumn->{name}; 
     708            if ($obj->$name || (defined($obj->$name) && ('0' eq $obj->$name))) { 
     709                if ( 'vclob' eq $metacolumn->{type} ) { 
     710                    push @meta_elements, $name; 
     711                } 
     712                elsif ( 'vblob' eq $metacolumn->{type} ) { 
     713                    push @meta_blobs, $name; 
     714                } 
     715                else { 
     716                    $xml .= " $name='" . MT::Util::encode_xml($obj->$name, 1) . "'"; 
     717                } 
     718            } 
     719        } 
     720    } 
    698721    $xml .= '>'; 
    699722    $xml .= "<$_>" . MT::Util::encode_xml($obj->column($_), 1) . "</$_>" foreach @elements; 
     
    706729                "</$meta_col>"; 
    707730    } 
     731    $xml .= "<$_>" . MT::Util::encode_xml($obj->$_, 1) . "</$_>" foreach @meta_elements; 
     732    $xml .= "<$_>" . MIME::Base64::encode_base64($obj->$_, '') . "</$_>" foreach @meta_blobs; 
    708733    $xml .= '</' . $elem . '>'; 
    709734    $xml;